mysql中的连接操作

1.交叉连接

交叉连接不带WHERE子句,会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积。



2.内连接:

内连接合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行。
语法:
SELECT <列名>
FROM 表1  INNER  JOIN  表2
ON 表1.列名  条件运算符  表2.列名
[WHERE 条件]
[ORDER BY  排序列]

(1)等值连接
等值连接必须要有等值的条件,当条件不同时连接的结果也不相同,两个关系可以没有相同的属性列(列名可不同)

L表:


Y表:


where条件为:

L.A=Y.B:


L.B=Y.B:


(2)自然连接:

自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。

(3)不等值连接:出等号之外的运算符

3.外连接:
外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出。(连接条件里属性列可同可不同)
(1)左外联结   (LEFT JOIN):
左外连接使用LEFT JOIN连接两表,连接时左表为主表,左表中的每条记录必定出现在结果集中,而在右表中没有对应的记录,将以NULL值进行填充。
语法:
SELECT * FROM TABLE_A
LEFT JOIN TABLE_B
ON 连接条件
[WHERE 条件]

例:select * FROM L left JOIN Y on L.B=Y.C


(2)右外联结   (RIGHT JOIN):
右外连接与左外连接相似,不同的是右表为主表,右表中的每条记录必定出现在结果集中,而在左表中没有对应的记录,将以NULL值进行填充。
语法:
SELECT * FROM TABLE_A
RIGHT JOIN TABLE_B
ON 连接条件

[WHERE 条件]

例:select * FROM L RIGHT  JOIN Y on L.B=Y.C


4.内外连接的区别:


原文地址:https://www.cnblogs.com/mlan/p/11060377.html