为了账号安全,请及时绑定邮箱和手机立即绑定

SQL中inner join,outer join和cross join的区别

SQL中inner join,outer join和cross join的区别

慕容森 2019-03-21 14:14:50
SQL中inner join,outer join和cross join的区别
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

交叉连接(CROSS JOIN):有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积,返回记录的个数应当是a和b表中符合记录的和。
显式:select [cols_list] from a cross join b where [condition]
隐式:select [cols_list] from a, b where [condition]
内连接(INNER JOIN):有两种,显式的和隐式的,返回连接表中符合连接条件和查询条件的数据行,和我们写普通的sql相同。
显式:select [cols_list] from a inner join b on [condition] where [condition]
隐式:select [cols_list] from a, b where [condition]
外连接(OUTER JOIN):外连不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。外连接分三类:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。
三者的共同点是都返回符合连接条件和查询条件(即:内连接)的数据行。不同点如下:
左外连接还返回左表中不符合连接条件单符合查询条件的数据行。
右外连接还返回右表中不符合连接条件单符合查询条件的数据行。
全外连接还返回左表中不符合连接条件单符合查询条件的数据行,并且还返回右表中不符合连接条件单符合查询条件的数据行。全外连接实际是上左外连接和右外连接的数学合集(去掉重复),即“全外=左外 UNION 右外”。
说明:左表就是在“(LEFT OUTER JOIN)”关键字左边的表。右表当然就是右边的了。在三种类型的外连接中,OUTER 关键字是可省略的
如:select [cols_list] from a left join b on [condition] where [condition]
多个表的情况可以用:
select [cols_list] from a left join b on [condition] inner join c on [condition] where [condition]


 


查看完整回答
反对 回复 2019-03-29
  • 3 回答
  • 0 关注
  • 485 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信