一:DQL执行语句
通过查询语句查询出来的数据以表的形式展示给我们,我们称这个表为虚拟结果集。存放在内存中 。查询返回的结果是一张虚拟表。
1.查询指定的列:
SELECT 列名1,列名2…FROM 表名;
2.模糊查询:
_:任意一个字母(通配符)
%:任意0~n个字母(通配符)
练习:
-- 查询姓名由5个字母构成的学生记录,
select * from students where name like '_____';
-- 查询姓名以‘m’开头的学生记录
select * from students where name like m%;
--查询姓名中第二个字母为‘u’的学生记录
select * from students where name like '_u%';
-- 查询姓名中包含‘s’字母的学生记录
select * from students where name like '%s%';
3.字段控制查询:
①去除重复记录:
SELECT DISTINCT name FROM students;
②把查询字段的结果进行运算,必须都要是数据型:
SELECT * ,字段1+字段2 FROM 表名;
SELECT *,age+IFNULL(score,0) FROM students;
例如:
③对查询结果起别名:
在上面查询中出现列名为sx+IFFULL(yw,0),这很不美观,现在我们给这一列给出一个别名,为total。
SELECT *,yw+IFNULL(score,0) AS totalFROM students;
4.其它语句介绍:
排序关键字ORDER BY:SELECT * FROM 表名 ORDER BY 列名 ASC/DESC;
二:分组查询
什么是分组查询?
将查询结果按照1个或者多个字段进行分组,字段值相同的为一组。简单来说就是有10个人,男的分一组,女的分一组。将他们归类。
1.GROUP BY和GROUP_CONCAT:
分组关键字:GROUP BY
分组注意事项:在使用分组时,select后面直接跟的字段一般都出现在 GROUP BY 后。
现在我们要对所有的部门进行分组,假如有一张表如下:
操作语句和运行结果如下:
现在我们要将每个部门的人名显示出来,操作语句和运行结果如下(FROUP_CONCAT作为分组的依据):
上面通过GROUP_CONCAT()的启发,我们既然可以统计出每个分组的某个字段的值的集合,那么我们也可以通过集合函数来对这个“值的集合”做一些操作。
练习1:查询每个部门的部门名称和每个部门的工资和
练习2:查询每个部门的部门名称和每个部门的人数
练习3:查询每个部门的部门名称以及每个部门工资大于1500的人数
2.GROUP BY+HAVING:用来分组查询后指定一些条件来输出查询结果(二级筛选)
having作用和where一样,但having只能用于group by
having和where的区别:
①having是在分组后对数据进行过滤
②where是在分组前对数据进行过滤
③having后面可以使用分组函数(统计函数)
④where后面不可以使用分组函数
⑤where是对分组前记录的条件,如果某行记录没有满足where字句的条件,那么这行记录不会参加分组;而having是对分组后数据的约束。
练习1:查询工资总和大于9000的部门名称
练习2:查询工资大于2000的,工资总和大于9000的部门名称以及工资和
三:查询语句书写顺序
四:SQL分页查询思路LIMIT使用
分页思路: