通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。连接查询是关系数据库中最主要的查询,连接查询根据连接方式可以分为三种:内连接,外连接,交叉连接等。
下面进行简单介绍以上三种连接。(为了演示方便首先建两个表,过程略)
表一
表二
l内连接
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。按照具体的连接方式,内连接可分为三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
select * from Table_1 inner join Table_2 on Table_1.majorNo =Table_2.majorNo
形成过程:简单的说就是把两张表根据条件拼成一张表,在上例中首先根据两个majorNo字段找出相等的记录,然后将查找的记录所有的列保存下来,如果这一列中有的没有记录则不显示这条记录。
2、不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
select * from Table_1 inner join Table_2 on Table_1.majorNo <>Table_2.majorNo
结果如下:
形成过程:和上面过程类似只不过条件由等于变为各种不等而已。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
select Table_1.*,Table_2.majorName,Table_2.collageName from Table_1 inner join Table_2 on Table_1.majorNo=Table_2.majorNo
结果如下:
形成过程:过程和第一个类似,只不过在选择列的时候人为的将重复的列不显示而已。
l外连接
外连接根据连接方式也分三种:左连接、右连接、全外连接
1、左连接:返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表的所有的列。
select * from Table_1 left join Table_2 on Table_1.majorNo =Table_2.majorNo
结果如下:
形成过程:以表一(左表)为基准遍历表二(右表)中符合条件的记录,然后进行拼接,如果表二(右表)中没有匹配项则显示NULL。
2、右连接:返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括右表的所有的列。
select * from Table_1 right join Table_2 on Table_1.majorNo =Table_2.majorNo
结果如下:
形成过程:以表二(右表)为基准遍历表一(左表)中符合条件的记录,然后进行拼接,如果表一(左表)中没有匹配项则显示NULL。
3、全外连接:返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括两张表的所有的列。
select * from Table_1 full outer join Table_2 on Table_1.majorNo =Table_2.majorNo
结果如下:
形成过程:先以表一进行左连接,然后以表二进行右连接,最后删掉重复的记录
l交叉连接
select * from Table_1 cross join Table_2 order by Table_1.stuID
结果如下:
形成过程:把join的左表按条件排序,然后把右表无条件拼接过来。这样依次执行,这样这种记录便为两个表的记录的笛卡尔积。