5.8.1 使用from子句指定数据源
多张数据库表(或者视图)“缝补”成一个结果集时,需要指定“缝补”条件,该“缝补”条件称为连接条件。
指定连接条件的方法有两种:第一种方法是在where子句中指定连接条件(稍后讲解)。第二种方法是在from子句中使用连接(join)运算将多个数据源按照某种连接条件“缝补”在一起。其语法格式如下:
from表名1 [连接类型] join表名2 on表1和表2之间的连接条件
说明:SQL标准中的连接类型主要分为inner join(内连接)和outer join(外连接),而外连接又分为left join(左外连接,简称为左连接)、right join(右外连接,简称为右连接)以及full join(完全外连接,简称完全连接),连接原理如图5.26所示。
图5.26 连接原理
1.内连接(inner join)
内连接将两个表中满足指定连接条件的记录连接成新的结果集,舍弃所有不满足连接条件的记录。内连接是最常用的连接类型,也是默认的连接类型,可以在from子句中使用inner join(inner关键字可以省略)实现内连接,语法格式如下:
from 表1 [inner] join 表2 on 表1和表2之间的连接条件
说明:使用内连接连接两个数据库表时,连接条件会同时过滤表1与表2的记录信息。
2.外连接(outer join)
外连接又分为左连接(left join)、右连接(right join)和完全连接(full join)。与内连接不同,外连接(左连接或右连接)的连接条件只过滤一个表,对另一个表不进行过滤(该表的所有记录出现在结果集中)。
注意:MySQL暂不支持完全连接。(www.xing528.com)
(1)左连接的语法格式。
from 表1 left join 表2 on 表1和表2之间的连接条件
说明:语法格式中表1左连接表2,意味着查询结果集中须包含表1的全部记录,然后表1按指定的连接条件与表2进行连接,若表2中没有满足连接条件的记录,则结果集中表2相应的字段填入NULL。
(2)右连接的语法格式。
from 表1 right join 表2 on 表1和表2之间的连接条件
说明:语法格式中表1右连接表2,意味着查询结果集中须包含表2的全部记录,然后表2按指定的连接条件与表1进行连接,若表1中没有满足连接条件的记录,则结果集中表1相应的字段填入NULL。
5.8.2 多表连接
以3个表为例,语法格式如下:
from 表1 [连接类型] join 表2 on 表1和表2之间的连接条件
[连接类型] join 表3 on 表2和表3之间的连接条件
多表连接原理如图5.27所示。
图5.27 多表连接接原理
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。