SQL多表连接 的种类

多表连接的种类
根据结果集生成的规则不同,连接可以分为:

  • 交叉连接(cross join)—笛卡尔积
  • 内连接(inner join)—解决匹配问题
  • 外连接(outer join)—解决不匹配问题 ,表的所有记录出现在结果集

交叉连接

  • 假设table1表中有m条记录,table2表中有n条记录,交叉连接产生的结果集为m*n
  • 该连接产生的结果集称为笛卡尔积

内连接

  • 语法
  • 如果有多个条件表达式,on关键字后面跟一个,其余用and条件连接
  • 先根据on和and条件对要连接的表进行过滤,将过滤后的结果集进行内连接操作(join,on),再根据select语句的定义生成最终结果集.

内连接原理(一)
t1表和t2表做内连接,连接条件为on t1.c1=t2.c2,假设t1表做驱动表,t2表做匹配表,记录的匹配过程如下

  1. 从t1表中读取第一条记录r1,若它的c1值为1
  2. 根据该值到t2表中查找匹配的记录,即需要遍历t2表,从t2表中的第一条记录开始,若该记录(r1)的c2列的值等于1,我们就说这两条记录能够匹配上,那么t1的r1和t2的r1组合起来,作为结果集里的一条记录,否则检测t2表的下一条记录.
select A.REAL_NAME,B.OS_USERNAME
from ACCOUNT a join SERVICE b
on a.ID = b.ACCOUNT_ID

因为a.ID = b.ACCOUNT_ID所以real_nameos_username也就是1对1了


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值