赞
踩
任务描述
本关任务:使用左连接和右连接多表查询方法,检索数据表中的指定内容。
相关知识
为了完成本关任务,你需要掌握:
有的时候,我们不仅想知道在两张表中,什么内容是可以匹配查询到的。还想知道那些没有被关联到的内容是什么?比如在百货公司里,我们不仅想知道哪些商品被顾客买走了,还想知道那些没有买走的东西是什么,以调整将来的供货策略。
左连接
左连接以左表为基础,显示左表中的所有记录:
显示的记录条数 = 左表中记录的条数 |
再用左表中的指定列,来和右表中的指定列比较。满足,则输出值;不满足,则输出 NULL。
举个例子
如果你有两张表,分别为表 student 和表 class ,要查出每个学生所对应的班级名称,用左连接应该怎么做?
输入:
- SELECT *
- FROM student left join class
- ON student.class_id = class.class_id
输出:
在这里,左表的第 4 条记录并没有匹配到右表的任何内容,所以右表的相应内容显示为 NULL 。
检索过程:
右连接
右连接与左连接正好相反,右连接以右表为基础,显示右表中的所有记录:
显示的记录条数 = 右表中记录的条数 |
再用右表中的指定列,来和左表中的指定列比较。满足,则输出值;不满足,则输出 NULL。
举个例子 如果你想连接表 student 和表 class 查询每个学生所对应的班级名称,用右连接应该怎么做?会与左连接查询有多大的区别呢?
输入:
- SELECT *
- FROM student right join class
- ON student.class_id = class.class_id
输出:
在这里,右表的第 4 条记录并没有匹配到左表的任何内容,所以左表的相应内容显示为 NULL 。
检索过程:
全连接
全连接类似于左连接和右连接的综合:
显示记录的条数 = 指定比较字段在两个表中的不同种类数 |
对于空余字段,则显示 NULL 。也就是说,它能返回两个表中所有的关联信息,以及所有没有被关联到的信息。
举个例子 我们现在用全连接查询方法,连接表 student 和表 class,查询每个学生所对应的班级名称:
输入:
- SELECT *
- FROM student full join class
- ON student.class_id = class.class_id
输出:
检索过程:
编程要求
我们已经为你建好了数据库与数据表,并添加了相应的数据内容。你只需根据提示,在右侧 Begin-End 区域内补充代码,分别用左连接和右连接关联表 Products 和表 Vendors。
表 Products 和表 Vendors 的内容如下图所示:
测试说明
本关涉及到的测试文件是 step3_test.sh,平台将运行用户补全的 step3.sql 文件,得到数据;
将得到的数据与答案比较,判断代码是否正确。
如果操作正确,你将得到如下的结果:
开始你的任务吧,祝你成功!
实验代码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。