MySQL数据库—查询:关联查询(一篇教会你在多表关联下查询数据)
一篇教会你快速且准确的在多张关联表之间查询到想要的数据!
目录
关联查询
• 我们以这四张关联表为基础,进行关联查询的演示:
• 这四张表的创建在 上一篇---多表设计 有讲解到,有疑问的小伙伴可以参考:
▐ 概述
• 关联查询也称为多表查询
• 关联查询有内连接和外连接 (外连接又分为左外连接,右外连接)
▐ 内连接
• 内连接只把满足条件的筛选出来
• 实际应用:例如我们想要查询某个学生的专业名称 (此时数据来源于两张表)
• 这是个错误案例:
select * from student ,major
• 此时表与表没有添加任何关联条件,会导致出现笛卡尔乘积现象
所以我们需要为其添加条件:
• 内连接方式一: •
-- 内连接,只把满足条件的筛选出来
SELECT * FROM student ,major WHERE majorid=id
• 内连接方式二:
SELECT * FROM student INNER JOIN major ON majorid=id
在添加条件后就可以拿到我们想要的结果了:
以上我们查询是所有的列(select *),但是当我们查询特定列的信息时会发现两个表中都有NAME,
此时系统是不知道这个NAME是哪个表中的NAME,就会报错,所有就需要给表重新命名。
SELECT s.num,s.name,m.name FROM student s INNER JOIN major m ON s.majorid=m.id
重新命名的语法:原表名 AS 新表名 (AS可省略)
○ 思考?
• 在现实中,如果某个学生还未分配专业,使用内查询还会查到该学生的信息吗?
答案是不会的,此时该学生没有分配专业,majorid列为空,不满足内连接的条件
• 但这种情况下如果我们还想获取此学生的信息该怎么办呢?
所以就引出了外连接
▐ 左外连接
• 把左边表中所有的数据查询出来,右边表中只会查询出满足条件的
• 实际应用:
SELECT
*
FROM student s LEFT JOIN major m ON s.majorid=m.id
此时在学生表中再添加一行学生信息但不为其分配专业 (majorid列保持为空)
我们发现朴树虽然没有分配专业 (majorid列为null), 但还是将朴树的学生信息(左表)显示了出来,
如果这里使用内连接是不会显示的
▐ 右外连接
• 有了对左外连接的了解,右外连接顾名思义就是把右边表中所有的数据查询出来,左边表中只会查询出满足条件的
结语:
希望这篇关于MySQl数据库—关联查询的介绍到能对大家有所帮助,欢迎大佬们留言或私信与我交流学海漫浩浩,我亦苦作舟!大家一起学习,一起进步!
本人微信: g2279605572
更多推荐
所有评论(0)