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;