内容正文:
河北省(计算机类)对口招生
《数据库原理与应用技术-MySQL》复习讲义
模块3 MySQL数据库管理
考点 9 单表查询
【考纲要求】
1.掌握基本查询语句 SELECT 的使用;
2.掌握单表查询的相关操作:
3.掌握分组聚合查询:SELECT <字段名1>[,字段名2,…] FROM <表名>GROUP BY<字 段名1>[,<字段名2>...]ORDER BY<字段名1>[,<字段名2>...];
【知识网络】
【知识和技能要点】
一、SELECT 基本查询
SELECT 语句用于从数据表中检索、提取数据,不会修改原始表数据,是数据查询的核心语句。
1. 语法格式
SELECT 字段列表 FROM 表名
[WHERE 条件]
[GROUP BY 分组字段]
[HAVING 分组后条件]
[ORDER BY 排序字段]
[LIMIT 限制行数];
2. 执行顺序
FROM → WHERE → GROUP BY → 聚合计算 → HAVING → SELECT → ORDER BY → LIMIT
二、单表查询操作(只操作一张数据表)
1.查询所有字段
语法格式:SELECT * FROM 表名;
其中,* 代表通配符,表示表中全部字段。
2.查询部分字段(指定字段查询)
语法格式:SELECT 字段名1,字段名2,字段名3 FROM 表名;
①只查询需要的若干字段,字段之间用英文逗号分隔。
②查询结果中,列的顺序由 SELECT 后书写的字段顺序决定,和原始表字段顺序可以不一致。
3.按条件查询 WHERE 子句
(1)语法格式:SELECT 字段列表 FROM 表名 WHERE 条件表达式;
(2)WHERE 作用:对原始表的数据行进行筛选,只取出满足条件的记录。
(3)WHERE 常用运算符
①比较运算符:> < >= <= = !=
②逻辑运算符:AND(并且)、OR(或者)、NOT(取反)
③范围:BETWEEN … AND … 在某区间;IN(值1,值2) 在集合之内
④模糊查询:LIKE,%代表任意多个字符,_代表单个任意字符
4.分组聚合查询 GROUP BY
(1)语法格式:
SELECT 字段列表 FROM 表名
GROUP BY 字段名1[,字段名2…]
[HAVING 分组后的条件]
[ORDER BY 字段名];
(2)说明:
①GROUP BY:按照指定字段对数据行进行分组,相同字段值的记录归为一组,配合聚合函数做分组统计。
②规则:SELECT 后面出现的普通非聚合字段,必须出现在 GROUP BY 后面。
③WHERE 与 HAVING 区别
WHERE:分组之前筛选原始行,不能使用聚合函数。
HAVING:GROUP BY 分组完成之后,对分组结果筛选,可以使用聚合函数。
④ORDER BY:对最终查询结果进行排序;ASC 升序(默认),DESC 降序。
(2)聚合函数(分组统计函数)
①SUM() 求和;②AVG() 求平均值;③MAX() 求最大值;④MIN() 求最小值;⑤COUNT() 统计记录行数
【练习题】
1、 填空题
1. LIKE 模糊查询中,匹配任意多个字符的通配符是________。
2. 逻辑运算符________表示多个条件满足任意一个即可成立。
3. 求取一组数据平均值的聚合函数是________。
4. 获取一组数据最小值的聚合函数是________。
5. 若要匹配 “第二个字符为‘明’” 的任意姓名,LIKE 条件表达式应写为 WHERE sname LIKE '________'。
二、选择题
1.SELECT 语句中,代表查询表中全部字段的通配符是( )
A. ? B. * C. % D. _
2.SELECT 查询结果的列顺序由什么决定( )
A. 原始表字段物理顺序 B. SELECT 后书写的字段书写顺序
C. 字段数据大小 D. 数据录入顺序
3.WHERE 子句中,用来匹配单个任意字符的模糊查询符号是( )
A. % B. _ C. & D. @
4.WHERE 条件中,表示在一个离散集合范围内的关键字是( )
A. BETWEEN…AND B. IN C. LIKE D. AND
5.关于 WHERE 和 HAVING,下面说法正确的是( )
A. HAVING 在分组之前筛选原始数据
B. WHERE 可以使用聚合函数
C. HAVING 在 GROUP BY 分组之后筛选分组结果,可以使用聚合函数
D. WHERE 和 HAVING 完全等价,可以任意互换
6.SELECT 语句中,用于筛选原始数据表记录行的子句是( )
A.GROUP BY B.WHERE C.HAVING D.ORDER BY
7.想要判断字段值是否处在一段连续区间,使用关键字( )
A.IN B.BETWEEN…AND C.LIKE D.AND
8.在 GROUP BY 语法中,SELECT 子句里普通非聚合字段,必须出现在( )
A.FROM 后面 B.GROUP BY 后面 C.WHERE 后面 D.HAVING 后面
9.ORDER BY 排序,默认的排序方式是( )
A.DESC 降序 B.ASC 升序 C.RAND 随机 D. 倒序
10.执行顺序上,HAVING 子句执行发生在( ) 操作之后。
A.WHERE B.GROUP BY 分组与聚合计算 C.FROM D.SELECT
3、 判断题
1. SELECT 语句只会读取数据,不会修改原始数据表里面的数据。()
2. 查询部分字段时,输出结果的列顺序一定和原始数据表字段顺序保持完全一致。()
3. WHERE 子句用来筛选原始数据表的记录行,写在 GROUP BY 子句之前。()
4. AND 逻辑运算符,要求多个条件必须同时成立。()
5. GROUP BY 子句可以实现对记录分组,常和聚合函数配合完成统计计算。()
6. HAVING 子句语法位置写在 GROUP BY 子句的前面。()
7. SELECT 查询多个字段,字段之间可以使用中文逗号分隔。()
8. SELECT 语句执行的时候,先执行 SELECT 子句选出字段,再用 WHERE 过滤行数据。()
9. HAVING 子句可以替换 WHERE 子句,直接用来过滤数据表原始行记录。()
10. NOT IN (20,30,40) 代表字段不等于 20 并且不等于 30 并且不等于 40。()
4、 命令题
有学生表:student 学生表(sid 学号,sname 姓名,sex 性别,class 班级,score 分数)
1. 查询 student 表中学生的学号 sid、姓名 sname、分数 score。
2. 查询 student 表中,班级为 “1 班” 并且分数大于 90 的学生全部信息。
3. 查询 student 表,查询姓名 sname 中姓 “张” 的所有学生全部信息。
4. 按班级 class 分组,统计各班平均分,只显示班级平均分大于 75 的分组结果。
5. 按班级 class 分组,统计每个班级的最高分 max_score,将最终结果按照最高分降序排列。
【答案】
一、填空题
1. % 2. OR 3.AVG () 4.MIN () 5. _明 %
二、选择题
1. B 2. B 3. B 4. B 5. C 6. B 7.B 8.B 9. B 10. B
三、判断题
1.√ 2. × 3. √ 4. √ 5. √ 6. × 7.× 8. × 9. × 10. √
四、命令题
1.SELECT sid,sname,score FROM student;
2.SELECT * FROM student WHERE class='1班' AND score>90;
3.SELECT * FROM student WHERE sname LIKE '张%';
4.SELECT class,AVG(score) FROM student GROUP BY class HAVING AVG(score)>75;
5.SELECT class,MAX(score) AS max_score FROM student GROUP BY class ORDER BY max_score DESC;
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$