考点10 多表查询《数据库原理与应用技术-MySQL》河北省(对口招生)计算机类 知识点讲解

2026-08-26
| 6页
| 82人阅读
| 2人下载
精品

内容正文:

河北省(计算机类)对口招生 《数据库原理与应用技术-MySQL》复习讲义 模块3 MySQL数据库管理 考点 10 多表查询 【考纲要求】 1.掌握连接查询:SELECT <字段名1>[ 字段名2,]…FROM <表名1> INNER JOIN | LEFT JOIN | RIGHT JOIN <表名2> ON 表名1.字段名1=表名2.字段名2; 2.掌握子查询; 3.掌握合并查询结果。 【知识网络】 【知识和技能要点】 一、连接查询 连接查询:同时从多张数据表查询数据,通过两张表的关联字段建立关系。常见:内连接 INNER JOIN、左外连接 LEFT JOIN、右外连接 RIGHT JOIN。 1. 语法格式: SELECT 字段列表 FROM 表名1 INNER|LEFT|RIGHT JOIN 表名2 ON 表名1.字段名1 = 表名2.字段名2; (1)ON:书写两张表的连接条件,规定两张表依靠哪些字段匹配,不可省略。 (2)三种连接区别 连接类型 说明 INNER JOIN(内连接) 只返回两张表中能够匹配成功的记录;两边都存在的数据才显示 LEFT JOIN(左连接 / 左外连接) 以左边表为基准,左表全部记录全部显示;右表匹配不到的数据填 NULL RIGHT JOIN(右连接 / 右外连接) 以右边表为基准,右表全部记录全部显示;左表匹配不到的数据填 NULL 二、子查询 1.概念 子查询,也叫嵌套查询:一条 SELECT 查询语句,嵌套在另外一条 SQL 语句内部;内层查询的结果,作为外层查询的条件。其中,内层:子查询(括号包裹),外层:主查询 2.分类 标量子查询:子查询返回单个值(一行一列),可以使用> < =比较。 集合子查询:子查询返回一组数据(一列多行),配合IN、ANY、ALL使用。 三、合并查询结果 UNION 1.概念 使用UNION关键字,把多条 SELECT 查询语句的结果合并成一个结果集输出。 2. 语法格式: SELECT语句1 UNION [ALL] SELECT语句2; 3. 规则 前后两条 SELECT 查询,字段数量必须相同;对应位置字段数据类型要兼容。 UNION:自动去除合并结果里面重复的行。 UNION ALL:直接合并全部结果,不去除重复,执行效率更高。 【练习题】 一、填空题 1.LEFT JOIN,右表匹配不到记录,右表对应字段填充________。 2.合并多条 SELECT 查询结果集的关键字是________。 3.INNER JOIN 内连接,如果两张表没有任何匹配的记录,查询结果返回________条记录。 4.集合子查询配合________关键字,判断字段大于子查询返回集合中任意一个值即条件成立。 5.LEFT JOIN 左连接,左表有 10 条记录,右表完全没有匹配,查询结果一共返回________条记录。 二、选择题 1.内连接使用的关键字是( ) A. LEFT JOIN B. RIGHT JOIN C. INNER JOIN D. UNION 2.左外连接的关键字是( ) A.INNER JOIN B.LEFT JOIN C.RIGHT JOIN D.JOIN ALL 3.在 JOIN 连接查询语法中,用来书写两张表关联匹配条件的关键字是( ) A.WHERE B.ON C.FROM D.HAVING 4.INNER JOIN 内连接查询,返回的记录是() A. 左表全部记录 B. 右表全部记录 C. 两张表能够互相匹配成功的记录 D. 两张表所有全部记录 5.LEFT JOIN 左连接查询,以( )作为基准表。 A. 右边表 B. 左边表 C. 两张表都是基准 D. 没有基准表 6.多表查询中,两张表存在同名字段,访问该字段正确写法是( ) A. 直接写字段名 B. 表名.字段名 C. 只写表名 D. 字段名.表名 7.用于合并多条 SELECT 查询结果集的关键字是( ) A.JOIN B.GROUP BY C.UNION D.ALTER 8.UNION ALL 合并查询,对重复行的处理是( ) A. 自动去除全部重复行 B. 不去除重复行,直接全部合并 C. 只保留重复行 D. 删除所有不重复行 9.使用 UNION 合并两条 SELECT 语句,硬性要求是( ) A. 两条 SELECT 查询的字段数量必须相同 B. 两条 SELECT 必须查询同一张数据表 C. 两条语句都必须写 WHERE 条件 D. 两条语句都必须有 GROUP BY 10.在 LEFT JOIN 语句中,条件写在 ON 子句和 WHERE 子句,下面说法正确的是( ) A.ON 用来做表匹配;WHERE 是对连接完成之后的结果再筛选 B.ON 和 WHERE 功能完全等价,可以随意互换 C.LEFT JOIN 中不能写 WHERE 子句 D.ON 可以省略,全部条件写 WHERE 即可 三、判断题 1.连接查询可以同时从多张数据表查询数据,依靠关联字段建立两张表关系。() 2.INNER JOIN 内连接,会保留左表全部记录,右表匹配不到填 NULL。() 3.RIGHT JOIN 右连接以右边的表作为基准,右表全部记录全部保留。() 4.JOIN 连接查询中,ON 关键字用来书写两张表的关联匹配条件,可以省略。() 5.子查询内层语句可以不用括号包裹,直接书写即可。() 6.UNION 关键字用于合并多张数据表原始表的数据。() 7.内连接 INNER JOIN,只有两张表匹配成功的数据才会出现在结果集。() 8.ON 子句是用来完成两张表之间的连接匹配,WHERE 用于过滤连接之后的结果。() 9.集合子查询返回单个值,适合使用等于号 = 直接比较。() 10.UNION ALL 要求前后 SELECT 的字段数量也必须保持一致。() 4、 命令题 有两张表: student学生表:sid (学号),sname (姓名),class (班级) score成绩表:scid (成绩编号),sid (学号),score (分数) 1. 使用内连接查询学生表和成绩表,显示学生姓名sname、分数score;两张表通过学号 sid 关联。 2. 使用左连接查询 student 左表、score 右表,查询所有学生的姓名以及对应成绩;没有成绩的学生,成绩字段显示 NULL。 3. 查询 student 表中,不在 score 表中有成绩记录的学生全部信息。 4. 把一班学生(student 表 class=' 一班 ')和二班学生(class=' 二班 ')的学号、姓名查询结果合并,自动去除重复行。 5. 查询班级为 “1 班” 的学生的姓名、分数,只筛选分数大于 80 的数据。 【答案】 一、填空题 1. NULL 2. UNION 3. 0 4. Any 5.10 二、选择题 1. C 2. B 3. B 4. C 5. B 6. B 7. C 8.B 9. A 10. A 三、判断题 1. √ 2. × 3. √ 4. × 5. × 6. × 7. √ 8. √ 9. × 10. √ 四、命令题 1.SELECT sname,score FROM student INNER JOIN score ON student.sid = score.sid; 2.SELECT sname,score FROM student LEFT JOIN score ON student.sid = score.sid; 3.SELECT * FROM student WHERE sid NOT IN (SELECT sid FROM score); 4.SELECT sid, sname FROM student WHERE class = '一班' UNION SELECT sid, sname FROM student WHERE class = '二班'; 5.SELECT sname,score FROM student INNER JOIN score ON student.sid = score.sid WHERE class='1班' AND score>80; 原创精品资源学科网独家享有版权,侵权必究 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

考点10 多表查询《数据库原理与应用技术-MySQL》河北省(对口招生)计算机类 知识点讲解
1
考点10 多表查询《数据库原理与应用技术-MySQL》河北省(对口招生)计算机类 知识点讲解
2
考点10 多表查询《数据库原理与应用技术-MySQL》河北省(对口招生)计算机类 知识点讲解
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。