宗小宗-PHP程序猿

欢迎各位朋友前来,如果我的文章中有不对的地方,还望指正;如需转载,请注明原处

MySQL命令大全

CREATE DATABASE 数据库名;创建数据库

SHOW DATABASES;查看所有数据库

DROP DATABASE 数据库名;删除数据库

SHOW ENGINES;查看MySQL支持的数据库引擎

SHOW VARIABLES;查看所有配置

SHOW VRRIABLES LIKE '%xxx%';模糊匹配查询配置

SHOW VARIABLES LIKE 'storage_engine';查询默认存储引擎

SHOW TABLE STATUS LIKE '表名或者视图名';查看表或者视图的数据信息,包括存储引擎,总数据量,大小,时间等。。。

SET GLOBAL|SESSION 配置名=配置值;修改配置

LOCK TABLES `表名` WRITE;锁表

UNLOCK TABLES;解除锁表

CREATE TABLE 表名(属性名 属性类型 [完整性约束条件].....);创建表

DROP TABLE IF EXISTS `settlement`;
CREATE TABLE `settlement`(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`uid` INT UNSIGNED DEFAULT 0 COMMENT '用户ID',
`sid` INT UNSIGNED NOT NULL UNIQUE COMMENT 'XXX',
`status` ENUM('0','1') DEFAULT '0' COMMENT '状态',
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`,`uid`),
CONSTRAINT `f_ck` FOREIGN KEY (`uid`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE )
DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;


PRIMARY KEY(属性名1,属性名2,......,属性名N)   多字段主键

CONSTRAINT 外键名 FOREIGN KEY (外键字段,...) REFERENCES 父表名 (父表字段)【 ON DELETE CASCADE ON UPDATE CASCADE】 建立外键

NOT NULL 非空约束

UNIQUE 唯一约束

AUTO_INCREMENT 自动增加属性,一个表中只能一个字段使用AUTO_INCREMENT,默认从1开始

DESC 表名;查看表的定义

SHOW CREATE TABLE 表名;查看表的详解结构,即SQL语句结构

ALTER TABLE 旧表名 RENAME 新表名;修改表名称

ALTER TABLE 表名 MODIFY 属性名 数据类型;修改字段的数据属性

ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;修改字段名,如果不想改变数据类型,请填写之前一样的,不能不写哦

ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST|AFTER 属性名2];增加字段 注意:FIRST指第一个字段,不要当成了BEFORE[虽然没有]

ALTER TABLE 表名 DROP 属性名;删除字段

ALTER TABLE 表名 MODIFY 属性名1 数据类型 FIRST|AFTER 属性名2;修改字段的排列位置

ALTER TABLE 表名 ENGINE=存储引擎名;更改表的存储引擎

ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;删除表的外键约束

DROP  TABLE 表名;删除没有被关联的普通表,如果要删除被外键关联的表,请先删除子表中的外键约束,这样可以保证子表的数据不会丢失


 

查询例句

SELECT name,age,sex FROM user;
SELECT * FROM user;
SELECT * FROM user WHERE id=1001;
SELECT * FROM user WHERE id NOT IN (1,2,3);
SELECT * FROM user WHERE age NOT BETWEEN 20 AND 25;
SELECT * FROM user WHERE name NOT LIKE "%zong_huai%";
SELECT * FROM user WHERE name IS NULL;
SELECT * FROM user WHERE name IS NOUT NULL;
SELECT * FROM user WHERE id>10 OR age<20 AND name IS NOT NULL;
SELECT DISTINCT age FROM user;
SELECT * FROM user ORDER BY age DESC,name ASC;
SELECT sex,GROUP_CONCAT(name)FROM user GROUP BY sex;
SELECT sex,COUNT(sex) FROM user GROUP BY sex;
SELECT sex,COUNT(sex) FROM user GROUP BY sex HAVING COUNT(sex)>3;
SELECT sex,COUNT(sex) FROM user GROUP BY sex WITH ROLLUP;
SELECT * FROM user GROUP BY sex,name;
SELECT * FROM user LIMIT 2;
SELECT * FROM user LIMIT 12,2;
SELECT COUNT(*) FROM user;
SELECT id,SUM(score) FROM grade WHERE id=1001;
SELECT AVG(age) FROM user;
SELECT MAX(age) FROM user;
SELECT MIN(age) FROM user;

内连接只取符合条件的记录,不匹配的将过滤掉,这一点是和左连接是有区别的,特别注意
SELECT id,name,sex.sname FROM index1,sex WHERE index1.sex = sex.sid
左连接查询可以查询出表1的所有数据,表2只能查询出匹配的数据,如果表1的数据在表2中没有匹配的字段将显示为空
SELECT * FROM index1 LEFT  JOIN sex ON index1.sex=sex.sid;
右连接查询可以查询出表2的所有数据,表1只能查询出匹配的数据,如果表2的数据在表1中没有匹配的字段将显示为空
SELECT * FROM index1 right JOIN sex ON index1.sex=sex.sid;

SELECT * FROM user WHERE id IN (SELECT id FROM grade);
SELECT * FROM user WHERE id>(SELECT uid FROM grade WHERE age=20 LIMIT 1);

SELECT name AS nm,age AS ag FROM user u WHERE u.id=1; 表别名和字段别名
SELECT * FROM user WHERE name REGEXP '^a[0-9]*[a-Z]'; 正则匹配查询

 

插入数据

INSERT INTO user (name,age)VALUES('zongshuai',24),('lihua',25);

INSERT INTO user (name,age) SELECT name,age FROM user2;

更新数据

UPDATE user SET name='zongshuai',age=24 WHERE id=8;

删除数据

DELETE FROM user WHERE id=2;

 

posted @ 2016-07-16 14:46  宗小宗  阅读(253)  评论(0编辑  收藏  举报