友情提示:不同的SQL支持的连接方式是不同的,就像SQL server 和MySQL支持的部分就是不同的。
但连接的原理都是一样的,大家可以根据自己使用的来理解需要的部分,以下是博主根据各种SQL的连接原理的解释以及个人作图,供参考~
………………………………………………………………………………
内部连接–join/inner join
只取A&B连接表中共同的部分,结果表中删除了连接表没有匹配行的所有行
SELECT fieldlist
FROM table1 [INNER] JOIN table2
ON table1.column=table2.column

左连接–left join
保留A&B连接表左表中的所有行,如果左表的某一行在右表中没有匹配的行,则关联的结果表中,来自右表的所有列表均为NULL
SELECT fieldlist
FROM table1 left JOIN table2
ON table1.column=table2.column

右连接–right join
保留A&B连接表右表中的所有行,如果右表的某一行在左表中没有匹配的行,则关联的结果表中,来自左表的所有列表均为NULL
SELECT fieldlist
FROM table1 right JOIN table2
ON table1.column=table2.column

完整/全连接–fulljoin
保留A&B连接表中的所有行,当某一行在另一个表中没有匹配行,则按照NULL值填充返回
SELECT fieldlist
FROM table1 full JOIN table2
ON table1.column=table2.column

交叉连接–cross join
在没有WHERE子句的交叉连接将产生连接所涉及的表的笛卡尔积。
第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。
交叉连接中的列=原表中列数量的总和(相加)
交叉连接表中的行=原表中的行数的积(相乘)
SELECT fieldlist
FROM table1 cross JOIN table2

连接多表
where 子句连接
SELECT fieldlist
FROM table1,table2,table3……
where table1.column=table2.column
and table2.column=table3.column and……
from子句连接
SELECT fieldlist
FROM table1
join table2
join table3……
on table1.column=table2.column
and table2.column=table3.column
本文详细解析了SQL中的内部连接、左连接、右连接、全连接和交叉连接等五种连接方式,通过实例说明了每种连接的特点及应用场景,帮助读者理解和掌握SQL连接的基本原理。
711

被折叠的 条评论
为什么被折叠?



