前置:https://blog.csdn.net/jaihk662/article/details/80072281
https://blog.csdn.net/jaihk662/article/details/80136375
注:所有的下划线+斜体语句都是非必须语句
左外连接:
SQL语句:select… from 表1 natural left outer join 表2
on 连接条件 或 using (公有列1, 公有列2……)
文字描述:连接后,表1的任何元组t都会出现在结果表中,若表2中有满足连接条件的元组s, 则t与s连接,否则t与空值元组连接
其中left outer join表示左外连接,属于连接类型,而斜下划线上的语句都为连接方式
连接方式有以下三种:
- natural:自然连接,出现在结果关系中的两个连接关系的元组在公共属性上取值相等,且公共属性只出现一次
- on 连接条件:出现在结果关系中的两个连接关系的元组取值满足连接条件,且公共属性出现两次
- using (列名…):(列名1, 列名2…) 是两个连接关系的公共属性的子集,元组在(列名1, 列名2…) 上取值相等,且(列名1, 列名2…) 只出现一次
对于左外连接,上述三种连接方式必用一种,并且注意natural的位置和on/using的位置不一样
示例:
右外连接:
SQL语句:select… from 表1 natural right outer join 表2
on 连接条件 或 using (公有列1, 公有列2……)
其余和左外连接一样
示例:
全外连接:
SQL语句:select… from 表1 natural full outer join 表2
on 连接条件 或 using (公有列1, 公有列2……)
其余和左外连接一样,但是部分DBMS(Mysql等)不支持full outer join操作
→可以用union+左/右外链接来实现
内连接:
SQL语句:select… from 表1 natural full outer join 表2
on 连接条件 或 using (公有列1, 公有列2……)
对于外连接,上述三种连接方式必用一种,但是内连接如果一种不用就相当于笛卡尔积
总结: