基本定义:
left join (左连接):返回包含左表中的所有记录和右表中连接字段相等的记录。
right join (右连接):返回包含右表中的所有记录和左表中连接字段相等的记录。
inner join (等值连接或叫内连接):只返回两个表中连接字段相等的行。 full join (全外连接):返回左右表中所有的记录和上下表中连接字段相等的记录。
1、内联接
(典型的联接运算,运用像 = 或 <> 之类的比较运算符)。包含相等联接和自然联接。
内联接运用比较运算符按照每一个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。 2、外联接
外联接能够是左向外联接、右向外联接或完整外边联接。 在 FROM子句中指定外联接时,能够由下列几组关键字中的一组指定:
1)LEFT JOIN或LEFT OUTER JOIN 左向外联接的结果集包含 LEFT OUTER子句中指定的左表的所有行,而不仅是联接列所匹配的行。倘若左表的某行在右表中无匹配行,则在关联联的结果集行中右表的所有选取列表列均为空值。
2)RIGHT JOIN 或 RIGHT OUTER JOIN
右向外联接是左向外联接的反向联接。将返回右表的所有行。倘若右表的某行在左表中无匹配行,则将为左表返回空值。
3)FULL JOIN 或 FULL OUTER JOIN
完整外边联接返回左表和右表中的所有行。当某行在另一个表中无匹配行时,则另一个表的选取列表列包括空值。倘若表之间有匹配行,则全部结果集行包括基表的数据值。 3、交叉联接
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接亦叫作作笛卡尔积。 FROM 子句中的表或视图可经过内联接或完整外边联接按任意次序指定;然则,用左或右向外联接指定表或视图时,表或视图的次序很重要。相关运用左或右向外联接摆列表的更加多信息,请参见运用外联接。
示例:
A表
id name
1 小王
2 小李
3 小刘
B表
id A_id job
1 2 老师 2 4 程序员
内连接:(仅有2张表匹配的行才可表示)
select a.name,b.job from A a inner join B b on a.id=b.A_id
只能得到一条记录 小李 老师
左连接:(左边的表不加限制)
select a.name,b.job from A a left join B b on a.id=b.A_id
三条记录
小王 null
小李 老师 小刘 null
右连接:(右边的表不加限制)
select a.name,b.job from A a right join B b on a.id=b.A_id
两条记录
小李 老师 null 程序员
全外连接:(上下2张表都不加限制)
select a.name,b.job from A a full join B b on a.id=b.A_id
四条数据
小王 null
小李 老师
小刘 null null 程序员
注:在sql中l外连接包含左连接(left join )和右连接(right join),全外连接(full join),等值连接(inner join)又叫内连接。
Bye~
不想错失就把咱们设为星标吧!
第1步:点击顶部蓝字“自动化软件测试”,进入公众号主页
第二步:点击右上角“···”
第三步:点击“设为星标”
|