库操作
CREATE database 库名; **
SHOW databases; **
SELECT databse(); **
USE 库名; **
DROP 库名; **
表操作
DDL
CREATE table 表名(
字段名 字段类型(部分类型指定大小) comment “备注”,
字段名 字段类型(部分类型指定大小) comment “备注”,
字段名 字段类型(部分类型指定大小) comment “备注”
); /创建表
SHOW create table 表名; /显示创建表时的SQL语句
DESC 表名; /显示表的结构
SHOW talbes; /显示当前使用的库中所有表
ALTER table 表名 ADD 字段名 类型 comment “备注”;
/在表中添加的该字段
ALTER table 表名 MODIFY 字段名 类型 comment “备注”;
/修改表的该字段的字段类型
ALTER table 表名 CHANGE 旧字段名 新字段名 类型 comment “备注”;
/修改表的该字段的字段类型
ALTER table 表名 RENAME TO 新表名; /修改表名
DROP table 表名; /删除表
DML
INSERT INTO 表名(字段1,字段3...) VALUES(值1,值3...); 在表中添加记录
UPDATE 表名 SET 字段1=值1,字段2=值2 WHERE 条件;
/更新表的数据,不加where表示更新整个表
DELETE FROM 表名 WHERE 条件; /删除表的数据,不加where表示更新整个表
DQL
/基本查询
/查询多个字段
SELECT * FROM 表名;
SELECT 字段1,字段2... FROM 表名;
/设置别名
SELECT 字段1[AS 别名1],字段2[AS 别名2]... FROM 表名;
as可以省略 SELECT id '用户id' FROM user; 显示时id字段名将变为用户id
/去除重复记录
SELECT DISTINCT 字段1,字段2... FROM 表名;
/条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表;
/条件符号
> >= < <= = <>或!= BETWEEN..AND.. IN(...) LIKE
IS NULL AND && OR或|| NOT或!
SELECT name FROM user WHERE age BETWEEN 18 AND 20;
SELECT name FROM user WHERE age<=18;
SELECT id FROM user WHERE id IN(0,5,9);
/聚合函数————————将一列数据作为一个整体,进行纵向计算
SELECT 聚合函数(字段列表) FROM 表名;
count计数 max min avg sum
聚合函数不对null计算
SELECT count(id) FROM user;
SELECT avg(age) FROM user;
/分组查询
SELECT 字段列表 FROM 表名 [WHERE 条件列表 分组前过滤条件] GROUP BY 分组字段名 [having 分组后过滤条件];
where不能对聚合函数过滤,having可以。
/根据性别分组,统计男女用户数量
SELECT gender,count(*) FROM user GROUP BY gender;
/查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于3的工作地址
SELECT workadress,count(*) FROM emp WHERE age<45 GROUP BY workadress having count(*)>3;
SELECT workadress,count(*) adress_count FROM emp WHERE age<45 GROUP BY workadress having adress_count>3;
执行顺序:where>聚合函数>having
分组之后,查询字段一般为聚合函数和分组字段,查询其他字段毫无意义。