DQL数据查询语言
查询所有列数据
- 写出所有列名
SELECT 字段名1,字段名2,... FROM 表名;
- 使用*表示所有列
SELECT * FROM 表名;
查询指定列数据
SELECT 字段名1,字段名2 FROM 表名;
别名查询
查询时给列,表指定别名: AS 关键字
SELECT 字段名1 AS 别名 FROM 表名 AS 别名;
AS 可省略
查询结果去重
SELECT DISTINCT 字段名 FROM 表名;
SELECT 字段名 FROM 表名 WHERE 条件;
比较运算符:
>
大于
<
小于
<=
小于等于
>=
大于等于
=
等于
<>
、!=
不等于
逻辑运算符:
and(&&)
多个条件同时满足 一假即假
or(||)
多个条件其中一个满足 一真即真
not(!)
不满足 取反
IN关键字
SELECT * FROM 表名 WHERE id IN (2,4,6);
id等于2,4,6的记录都会显示
BETWEEN关键字
BETWEEN 值1 AND 值2
范围在–>[值1,值2],包头又包尾
SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';
满足通配符字符串的数据就会显示
mysql通配符:
% : 零到多个任意字符
_ : 一个字符
SELECT 字段 FROM 表名 ORDER BY 排序的字段 ASC/DESC;
ASC: 升序排序
DESC: 降序排序
不写默认是升序排序
组合排序
先按第一个字段排序,如果第一个字段相同再按第二字段排序
SELECT 字段名 FROM 表名 WHERE 条件 ORDER BY 字段名1 ASC,字段名2 DESC;
SELECT 聚合函数(字段) FROM 表名;
常用聚合函数:
count: 根据指定列,统计有多少行数据,如果列中有为null,的行,该行不会被统计
sum: 计算指定列的数值和,如果不是数值类型,计算结果为0
max: 计算指定列的最大值
min: 计算指定列的最小值
avg: 计算指定列的平均值
SELECT * FROM 表名 GROUP BY 字段名
注意:
一旦使用了分组函数,那么最终在显示的时候,只能显示被分组的列或者聚合函数。
在sql语句中的where 后面不允许添加聚合函数,可以使用having条件,表示分组之后的条件,在having后面可以书写聚合函数。
having必须和group by 一起使用,having和where的用法一模一样。
where和having的区别?
- having是在分组后对数据进行过滤,where是在分组前对数据进行过滤
- having后面可以使用聚合函数,where后面不可以使用聚合函数