DQL(数据查询)
-
基础查询
不推荐 select * from 表名; -- 查询所有列的所有数据,列名的列表可以使用*代替,但是以后在公司是不让使用的 为了语法规范 建议一个个写
推荐
select 列名1,列名2,... from stu;
select id,name,age,sex,address,math,english,hire_date from stu;
在查询的表中可以发现 有重复的地址信息 那么我们可以用关键字去去除重复的信息
distinct关键字
在查询的表中 有些英文单词可能不认识 为了更好的展示,我们可以给列起一个别名 让别人更易于阅读
as也可以去掉直接跟上别名但是要与列名之间有一个空格
条件查询(where)
1,查询年龄大于20岁的学员信息
2,查询年龄大于等于20岁的学员信息
3,查询年龄大于等于20岁,并且年龄不小于等于30岁的学员信息
第二种方法
4,查询入学目期在1998-09-01 1999-08-01之间的学员信息
5,查询年龄等于18岁的学员信息
6,查询年龄不等于18岁的学员信息
第二种方法
8.查询英语成绩为null的学员信息 注意null值的比较不能使用= !=需要使用is或者is not比较
9.查询英语成绩不为null的学员信息
模糊查询
-
1,_:代表单个任意字符
-
2,%:代表任意个数字符
1,查询姓马的学员信息
2,查询第二个字是'花'的学员信息
3,查询名字中包含'德'的学员信息
分组查询(group by)
-- 分组查询-------------------- /*
SELECT字段列表FROM表名[WHERE分组前条件限定] GROUP BY分组字段名[HAVING分组后条件过滤..;
*/ select * from stu ; -- 1.查询男同学和女同学各自的数学平均分
select sex, avg(math) from stu group by sex; -- 注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义 -- 2.查询男同学和女同学各自的数学平均分,以及各自人数
select sex, avg(math),count() from stu group by sex; -- 3.查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组
select sex, avg(math),count() from stu where math>70 group by sex; -- 4,查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2
select sex, avg(math) from stu WHERE math > 70 group by sex having count(*)>2;
排序查询(order by)
-
排序方式: /* ASC 升序排列 (默认) DESC: 降序排列 */ -- 1,查询学生信息,按照年龄升序排列
select * from stu order by age asc; -- 默认
-- 2,查询学生信息,按照数学成绩降序排列
select * from stu order by math desc;
-- 3,查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列
select * from stu order by math desc ,english asc;
聚合函数
/聚合函数--------------------- -- count:统计数量 -- 取值: -- 1,主键 -- 2, -- max:求最大值 -- min:求最小值 -- sum:求和 -- avg:求平均值 */ -- 1,统计班级一共有多少个学生
select count(id) from stu; -- count 统计不能为null
select count(english) from stu;-- null列没有被统计
select count(*) from stu; -- 号将会自动计算最快的一列 来进行统计 -- 2,查询数学成绩的最高分
select max(math) from stu; -- 3,查询数学成绩的最低分
select min(math) from stu; -- 4,查询数学成绩的总分
select sum(math) from stu; -- 5,查询数学成绩的平均分
select avg(math) from stu; -- 6,查询英语成绩的最低分
select min(english) from stu; /*特点 所有聚合函数都不对null值进行运算 */
分页查询(limit)
-- 分页查询:--------------------- /* SELECT字段列表 FROM表名LIMIT―起始索引,查询条目 起始索引:从0开始 */ select * from stu ; -- 1.从0开始查询,查询3条数据
select * from stu limit 0,3; -- 2.每页显示3条数据,查询第1页数据--
select * from stu limit 0,3; -- 3.每页显示3条数据,查询第2页数据
select * from stu limit 3,3; -- 4.每页显示3条数据,查询第3页数据
select * from stu limit 6,3;
-- 起始索引= (当前页码-1)*(每页显示的条数)
DQL小结