### SQL查询习题知识点解析 #### 一、单表查询练习 **1. 查询特定学生信息** - **题目:** 查询学生"张三"的全部基本信息。 - **解析:** 此题要求查询名为“张三”的学生的所有信息。通过`SELECT * FROM xsb WHERE xm = '张三';`来实现,其中`xsb`代表“学生信息表”,`xm`字段存储学生的姓名。 **2. 查询多个特定学生信息** - **题目:** 查询学生"张三"和"张四"的基本信息。 - **解析:** 使用`SELECT * FROM xsb WHERE xm = '张三' OR xm = '张四';`,这里的`OR`条件允许我们同时筛选出名字为“张三”或“张四”的学生信息。 **3. 查询特定姓氏的学生信息** - **题目:** 查询姓"张"的学生的基本信息。 - **解析:** 使用`LIKE`操作符结合通配符`%`来匹配姓“张”的学生。语句为`SELECT * FROM xsb WHERE xm LIKE '张%';`,这里的`%`表示任意数量的字符。 **4. 查询包含特定字符的学生信息** - **题目:** 查询含有"四"字的学生的基本信息。 - **解析:** 同样使用`LIKE`和`%`,但这次是在名字中查找包含“四”的学生。查询语句为`SELECT * FROM xsb WHERE xm LIKE '%四%';`。 **5. 查询特定格式的名字** - **题目:** 查询长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。 - **解析:** 通过精确匹配姓氏和最后一个字来查找符合要求的学生信息。查询语句为`SELECT * FROM xsb WHERE xm LIKE '李_强';`。这里的下划线`_`代表单个任意字符。 **6. 查询多种特定姓氏的学生信息** - **题目:** 查询姓"张"或者姓"李"的学生的基本信息。 - **解析:** 结合两个`LIKE`表达式来查找姓“张”或“李”的学生信息。语句为`SELECT * FROM xsb WHERE xm LIKE '张%' OR xm LIKE '李%';`。 **7. 查询特定姓氏和省份的学生信息** - **题目:** 查询姓"张"并且"所属省份"是"北京"的学生信息。 - **解析:** 这里需要同时满足两个条件:姓“张”且来自“北京”。查询语句为`SELECT * FROM xsb WHERE xm LIKE '张%' AND jg = '北京';`。 **8. 查询来自多个省份的学生信息** - **题目:** 查询"所属省份"是"北京"、“新疆”、“山东”或者"上海"的学生的信息。 - **解析:** 可以使用`IN`操作符来简化多个省份的匹配。查询语句为`SELECT * FROM xsb WHERE jg IN ('北京', '上海', '山东', '新疆');`。 **9. 查询特定姓氏但排除特定省份的学生信息** - **题目:** 查询姓"张",但是"所属省份"不是"北京"的学生信息。 - **解析:** 使用`NOT`或`<>`(不等于)来排除指定省份的学生信息。查询语句为`SELECT * FROM xsb WHERE xm LIKE '张%' AND jg != '北京';`。 **10. 按照多列排序** - **题目:** 查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序。 - **解析:** 通过多列排序实现更细致的数据排列。查询语句为`SELECT * FROM xsb ORDER BY xb, jg, bj;`。 **11. 查询不同省份的学生** - **题目:** 查询现有学生都来自于哪些不同的省份。 - **解析:** 使用`DISTINCT`关键字去除重复项,只显示不同的省份。查询语句为`SELECT DISTINCT jg FROM xsb;`。 **12. 查询未填成绩的学生信息** - **题目:** 查询没有填写成绩的学生的学号、课程号和成绩。 - **解析:** 通过`IS NULL`来查找成绩为空的学生记录。查询语句为`SELECT xh, kch, cj FROM cjb WHERE cj IS NULL;`。 **13. 查询已填成绩的学生信息并排序** - **题目:** 查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序。 - **解析:** 使用`IS NOT NULL`确保成绩非空,然后按成绩降序排列。查询语句为`SELECT * FROM cjb WHERE cj IS NOT NULL ORDER BY cj DESC;`。 **14. 查询特定姓氏的前两名学生** - **题目:** 找出两个姓张的同学信息,只显示对应学生的性别和班级。 - **解析:** 使用`TOP`关键字限制结果集大小,并选择特定字段。查询语句为`SELECT TOP 2 xm, xb, bj FROM xsb WHERE xm LIKE '张%';`。 #### 二、聚合函数练习 **1. 统计学生总数** - **题目:** 统计<学生信息表>,统计共有多少个学生。 - **解析:** 使用`COUNT(*)`来计算表中记录的数量。查询语句为`SELECT COUNT(*) FROM xsb;`。 **2. 统计年龄大于20岁的学生数** - **题目:** 统计年龄大于20岁的学生有多少个。 - **解析:** 通过`WHERE`子句过滤年龄大于20岁的学生,然后统计。查询语句为`SELECT COUNT(*) FROM xsb WHERE nl >= 20;`。 **3. 统计特定时间段内入学的学生数** - **题目:** 统计入学时间在1998年至2000年的学生人数。 - **解析:** 使用日期比较运算符`BETWEEN`来筛选指定年份范围内的入学记录。查询语句为`SELECT COUNT(*) FROM xsb WHERE rxrq BETWEEN '1998-01-01' AND '2000-12-31';`。 **4. 计算特定学生的平均成绩** - **题目:** 统计学号为"S001"的学生的平均成绩。 - **解析:** 使用`AVG()`函数结合`WHERE`子句来计算指定学号学生的平均成绩。查询语句为`SELECT AVG(cj) FROM cjb WHERE xh = 'S001';`。 **5. 计算特定学生的总成绩** - **题目:** 统计学号为"S001"的学生的总成绩。 - **解析:** 使用`SUM()`函数来计算指定学号学生的总成绩。查询语句为`SELECT SUM(cj) FROM cjb WHERE xh = 'S001';`。 **6. 查询特定课程的最高成绩** - **题目:** 统计课程号为"C001"的课程的最高成绩。 - **解析:** 使用`MAX()`函数来获取指定课程号下的最高成绩。查询语句为`SELECT MAX(cj) FROM cjb WHERE kch = 'C001';`。 **7. 查询所有学生的最大年龄** - **题目:** 查询所有学生中的最大年龄是多少。 - **解析:** 使用`MAX()`函数来查找表中的最大年龄值。查询语句为`SELECT MAX(nl) FROM xsb;`。 #### 三、分组查询练习 **1. 统计每个课程的选修人数** - **题目:** 统计<学生选修信息表>,统计每个课程的选修人数。 - **解析:** 使用`GROUP BY`对课程号进行分组,并使用`COUNT(*)`来统计每组的数量。查询语句为`SELECT kch, COUNT(*) AS f FROM cjb GROUP BY kch;`。这里`AS f`为结果集中的别名,用于标识每组的选修人数。 以上是根据提供的文件内容整理的知识点详解,涵盖了SQL基础查询和高级查询的应用场景。这些知识点对于理解SQL查询语句的构建非常有帮助,能够有效地帮助学习者掌握SQL的基础与进阶操作。
- 粉丝: 103
- 资源: 6万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 西门子EPOS效率倍增-伺服驱动功能库详解-简易非循环功能库之EPOS程序段读写.mp4
- windows鼠标美化
- 基于python-CNN深度学习识别10种蔬菜-含5000张以上的图片.zip
- 车辆、标志、人员检测28-YOLO(v5至v11)、COCO数据集合集.rar
- zotero-reference插件-版本号1.3.1.xpi
- 基于javaswing的可视化学生信息管理系统
- 车辆、人检测14-TFRecord数据集合集.rar
- 车辆、人员、标志检测26-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 一款完全免费的屏幕水印工具
- 基于PLC的空调控制原理图