多表连接查询
在关系数据库中,有时需要将多个表的数据整合使用才能得到完整的信息。因此需要将多个表进行连接。多表查询和单表查询比较,有以下不同
(1) 在From子句中,必须写上查询所涉及的所有表明及连接条件
From <表1> JOIN <表2>ON<连接条件>[,…..n]
(2) From子句中的源表可以是一个基于查询的结果
(3) 多表连接,涉及多个表的字段可能有重名情况,命令中必须明确地在字段前面加表明前缀来指明字段来源,不重名的字段可以直接写。
定义
多表连接,可以理解为先将多个表连接起来当做一个表,然后再进行查询,所有在单表查询中使用的其他子句和功能在多表连接查询都是相同的。
1、 内连接和外连接
将多个表连接在一起进行查询,有5种连接方式,命令如下
(1) 内连接:左表 [INNER] JOIN 右表 ON 左表.连接字段 = 右表.连接字段
(2) 左外连接: 左表 LEFT [OUTER] JOIN 右表 ON 左表.连接字段 = 右表.连接字段
(3) 右外连接:左表 RIGHT [OUTER] JOIN 右表 ON 左表.连接字段 = 右表.连接字段
(4) 全外连接:左表 FULL [OUTER] JOIN 右表 ON 左表.连接字段 = 右表.连接字段
(5) 交叉连接:左表 CROSS JOIN 右表
内连接查询就是将两个源表中满足条件的记录相连
左外连接,包括内连接的查询结果记录,以及左表中所有不满足连接条件的其他记录。这些不满足条件的左表记录,在查询结果的右边位置全部填上null值
右外连接,包括内连接的查询结果记录,以及右表中所有不满足连接条件的其他记录。
这些不满足条件的右表记录,在查询结果的左边位置全部填上null值
全外连接,查询结果包括左右表全部满足连接条件的记录,以及左右表所有不满足条件的其他记录。不满足条件的记录分别放在结果中,在左边或者右边空位上填上null
交叉连接即笛卡尔连接,用于实现笛卡尔积运算。即将两个表的所有记录一一连接起来。
【例1】
【例2】
【例3】
2 使用派生表
所谓派生表(又称在线视图)是将查询结果作为派生的一个表参与进一步查询。
【例4】