DQL:查询表中的记录
1.*语法:
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
2.基础查询
1.多个字段的查询
select 字段名1,字段名2... from 表名;
*注意:
*如果查询所有字段,则可以使用*来替代字段列表。
2.去除重复:
distinct
3.计算列
*一般可以使用四则运算计算一些列值。(一般只会进行数值型的计算)
*ifnull(表达式1,表达式2) :null参与的运算,计算结果都为null
*表达式1:哪个字段需要判断是否为null
*表达式2:如果该字段为null后的替换值
4.起别名:
as:as也可以省略
3.条件查询:
1.where子句后跟条件
2.运算符
*>、<、<=、>=、=、<>
*BETWEEN...AND
*IN(集合)
*LIKE:模糊查询
*占位符:
* _:单个任意字符
* %:多个任意字符
*IS NULL
*and 或 &&
*or 或 ||
*not 或 !
SELECT * FROM student WHERE age > 20;
SELECT * FROM student WHERE age >= 20;
SELECT * FROM student WHERE age =20;
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;
SELECT * FROM student WHERE age >=20 && age <=30;
SELECT * FROM student WHERE age >=20 AND age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
SELECT * FROM student WHERE age=22 OR age=20 OR age=25;
SELECT * FROM student WHERE age IN(22,18,55);
SELECT * FROM student WHERE english IS NOT NULL;
SELECT * FROM student WHERE NAME LIKE '马%';
SELECT * FROM student WHERE NAME LIKE "_化%";
SELECT * FROM student WHERE NAME LIKE "___";
SELECT * FROM student WHERE NAME LIKE "%景%"
4.排序查询
*语法:order by 子句
*order by 排序字段1 排序方式1,排序字段2 排序方式2...
*排序方式:
*ASC:升序,默认的
*DESC:降序
*注意:
*如果又多个排序条件,则当前边的条件值一样时,才会判断第二条件
5.聚合函数:将一列数据作为一个整体,进行纵向的计算
1.count:计算个数
*一般选择非空的列:主键
*count(*)
例:SELECT COUNT(NAME) FROM student;
2.max:计算最大值
例:SELECT MAX(math) FROM student;
3.min:计算最小值
例:SELECT MIN(math) FROM student;
4.sum:计算和
例:SELECT SUM(english) FROM student;
5.avg:计算平均值
例:SELECT AVG(math) FROM student;
*注意:聚合函数的计算,排除null值。
解决方案:
*选择不包含非空的列进行计算
*IFNULL函数
6.分组查询:
*语法:group by 分组字段
*注意:
1.分组之后查询的字段:分组字段、聚合函数
2.where和having的区别?
*where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
*where后不可以跟聚合函数,having可以进行聚合函数的判断
例:
按照性别分组,分别查询男、女同学的平均分
SELECT sex,AVG(math) FROM student GROUP BY sex;
按照性别分组,分别查询男、女同学的平均分,人数
SELECT sex,AVG(math),COUNT(id) FROM student GROUP BY sex;
按照性别分组,分别查询男、女同学的平均分,人数 要求:分数不低于70分的人,不参与分组。
SELECT sex,AVG(math),COUNT(id) FROM student WHERE math>70 GROUP BY sex;
按照性别分组,分别查询男、女同学的平均分,人数 要求:分数不低于70分的人,不参与分组,分组之后,人数大于2人。
SELECT sex,AVG(math),COUNT(id) FROM student WHERE math>70 GROUP BY sex HAVING COUNT(id)>2;
7.分页查询:
*语法:limit 开始的索引,每页查询的条数
*公式:开始的索引 = (当前的页码 -1) * 每页显示的条数
每页显示3条记录
SELECT * FROM student LIMIT 0,3; 第一页
SELECT * FROM student LIMIT 3,3; 第二页
SELECT * FROM student LIMIT 6,3; 第三页
*limint分页操作式一个MySQL的“方言”。