浅谈连接查询

通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。连接查询是关系数据库中最主要的查询,连接查询根据连接方式可以分为三种:内连接,外连接,交叉连接等。

下面进行简单介绍以上三种连接。(为了演示方便首先建两个表,过程略)

表一


表二


l 内连接

内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。按照具体的连接方式,内连接可分为三种:

1、 等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。



结果如下:


形成过程:简单的说就是把两张表根据条件拼成一张表,在上例中首先根据两个majorNo字段找出相等的记录,然后将查找的记录所有的列保存下来,如果这一列中有的没有记录则不显示这条记录。

2、 不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>>=<=<!>!<<>



结果如下:

形成过程:和上面过程类似只不过条件由等于变为各种不等而已。

3、 自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。



结果如下:


形成过程:过程和第一个类似,只不过在选择列的时候人为的将重复的列不显示而已。

l 外连接

外连接根据连接方式也分三种:左连接、右连接、全外连接

1、 左连接:返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表的所有的列。



结果如下:


形成过程:以表一(左表)为基准遍历表二(右表)中符合条件的记录,然后进行拼接,如果表二(右表)中没有匹配项则显示NULL

2、 右连接:返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括右表的所有的列。



结果如下:


形成过程:以表二(右表)为基准遍历表一(左表)中符合条件的记录,然后进行拼接,如果表一(左表)中没有匹配项则显示NULL

3、 全外连接:返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括两张表的所有的列。



结果如下:


形成过程:先以表一进行左连接,然后以表二进行右连接,最后删掉重复的记录

l 交叉连接



结果如下:


形成过程:把join的左表按条件排序,然后把右表无条件拼接过来。这样依次执行,这样这种记录便为两个表的记录的笛卡尔积。

原文地址:https://www.cnblogs.com/beijiguangyong/p/2302753.html