MySQL之连接查询

不像关系代数中“连接”是用一个特殊符号来表达的,在SQL中“连接”是用“连接条件”来表达的。

连接条件或连接谓词:用来连接两个表的条件 

一般格式:

[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>

连接字段:连接谓词中的列名称

连接条件中的各连接字段类型必须是可比的,但名字不必相同

 

1、等值与非等值连接查询

等值连接:连接运算符:“=”

采用在select中去掉重复字段的方式

连接操作的执行过程

   (1)嵌套循环法(NESTED-LOOP)

           a.首先在表1中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中的一个元组。

           b.表2全部查找完后,再找表1中的第二个元组,然后再从头开始扫描表2,逐一查找满足连接条件的元组,找到后就将表1中的第二个元组与该元组拼接起来,形成结果表中的一个元组。

            c.重复上述操作,直到表1中的全部元组都处理完毕

   (2)排序合并法(SORT-MERGE)

            常用于等值连接

          a.首先按连接属性对表1和表2排序

          b.设置指针,分别指向表1和表2的第一个元组。如果这两个元组满足连接条件,则进行元组拼接(如果有多个连续元组满足连接条件,则需要一一拼接),并将两指针分别向后移一个原则。否则,将具有较小值得指针后移一个元组。

          c.重复上述操作,直到表1或表2中的全部元组都处理完毕为止

     (3)索引连接(INDEX-JOIN)

           a.对表2按连接字段建立索引

           b.对表1中的每个元组,依次根据其连接字段值查询表2的索引,从中找到满足条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中的一个元组

           c.(该方法亦可以看做嵌套循环法的一个变种)

                

2、自身连接

一个表与其自己进行连接,是一种特殊的连接

需要给表起别名以示区别

由于所有属性名都是同名属性,因此必须使用别名前缀

3、外连接

外连接与普通连接的区别

  1. 普通连接操作只输出满足连接条件的元组
  2. 外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出
  3. 左外连接

             列出左边关系中所有的元组

     4.右外连接

            列出右边关系中所有的元组

4、多表连接

         两个以上的表进行连接

 

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值