#前言
多表连接查询实际上是通过各个表之间的共同列的关联性来查询数据的,它是关系数据库查询最重要的特征。
一、多表连接查询
(1)内连接查询
内连接查询是最典型、最常用的连接查询,它是根据表中的共同列来进行匹配。特别是两个表中存在主外键关系时通常会使用内连接查询。
(2)外连接查询
外连接查询至少返回一个表中的所有记录,根据匹配条件有选择性的返回另一张表的记录。
外连接可以是在左外连接、右外连接。
内连接和外连接都是用来联合两个表的查询结果,但是它们之间的区别在于内连接只返回满足条件的行,而外连接则会返回所有的行。通常情况下,内连接的效率比外连接高,因为内连接可以忽略一些不需要的行,而外连接需要返回所有的行,即使一些行在另一个表中不存在。
二、内连接查询
内连接查询通常会用“=”或“<>”(不等于)等比较运算符来判断两列数据值是否相等。内连接使用WHERE子句来进行表之间的关联。内连接可以通过两种方式来实现。
1.在WHERE子句中指定连接条件
例如,查询学员成绩信息:
SELECT b.studentNo,b.studentName,a.score,a.examDate FROM result a,student b WHERE
a.studentNo=b.studentNo;
查询结果如下:
上面这种形式的查询,相当于FROM后面紧跟了两个表名,在字段别表中,用“表名.列名”来区分列,再用WHERE条件子句来加以判断,要求学生编号信息相等。
通过上图,可以发现内连接查询,就是在关联字段中,学生成绩表中的学号和学员信息表中的学号相等的情况下,学员成绩表中的成绩和学员信息表中的学员信息才会被查询出来。内连接也可以理解为两表相等的数据才会被查询出来。
详细解读:
为什么要联合查询?
(1)如果只是查询成绩信息表,可以把某个学员的成绩查询出来,但是查询的结果中,只有学员的编号,不知道学员姓名等信息。
(2)如果只是查询学员信息表,则查询结果中没有成绩信息;
(3)为了在查询结果中,一要查询出成绩,二要查询出学员信息,只能是两个表联合查询才能满足要求。
在什么时候可以用到连接查询?
(1)数据存放在不同的表中,又需要一起查询显示的时候;
(2)主外键表中一起查询显示数据时;
连接查询能用在几个表中?
(1)连接查询,上面的学习是两个表,实际可以连接更多的表。比如通过成绩表,可以联合查询学员信息表,科目信息表,通过学员编号和科目编号进行关联。如下所表示:
总结
以上就是今天要讲的内容,本文仅仅简单介绍了多表连接查询,而mysql提供了大量能使我们快速便捷地处理数据的函数和方法。