第15课:SQL连表查询

连表查询虽然在SQL中有性能问题,并不是很推荐使用,但是有些场景可能无法避免,所以学习也是非常有必要的

这里的连表查询举例用两个表A,B
其实在实际操作中,A,B可以是同一个表,也可以是不同的表,也可以更多的表进行连接

1.INNER JOIN 产生的结果是AB的交集
SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name

2.LEFT [OUTER] JOIN 产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name

3.RIGHT [OUTER] JOIN 产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代。
SELECT * FROM TableA RIGHT OUTER JOIN TableB ON TableA.name = TableB.name

4.FULL [OUTER] JOIN 产生A和B的并集。对于没有匹配的记录,则会以null做为值。
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name 

5.CROSS JOIN 把表A和表B的数据进行一个N*M的组合,即笛卡尔积。如本例会产生4*4=16条记录,在开发过程中我们肯定是要过滤数据
SELECT * FROM TableA CROSS JOIN TableB 

6.UNION求并集,并去重,即把两次或多次查询结果合并起来。要求:两次查询的列数必须一致
SELECT * FROM TableA UNION SELECT * FROM TableB

7.UNION ALL求并集,不去重
SELECT * FROM TableA UNION ALL SELECT * FROM TableB

打赏  如对你有帮助,请我喝杯咖啡吧!