本文速读:
- 什么是JOIN?
- 从多表查询关联数据
- 怎么使用JOIN?
- INNER JOIN:交集
- OUTER JOIN:左全集(LEFT)、右全集(RIGHT)或者合并全集(FULL)
- CROSS JOIN:笛卡尔乘积
1、什么是JOIN?
JOIN用于根据两个或多表的列之间的关系,从中查询数据。
2、怎么使用JOIN?
●INNER JOIN
SELECT * FROM T_NumA INNER JOIN T_NumB ON T_NumA.aID=T_NumB.bID
运行的结果是得到两个表之间的交集。用上图可以看出,INNER JOIN符合交换律:“A INNER JOIN B”,“B INNER JOIN A”一样。
●OUTER JOIN
1)、LEFT (OUTER) JOIN
SELECT * FROM T_NumA LEFT OUTER JOIN T_NumB ON T_NumA.aID=T_NumB.bID
运行的结果:产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。
2)、RIGHT (OUTER) JOIN
SELECT * FROM T_NumA RIGHT OUTER JOIN T_NumB ON T_NumA.aID=T_NumB.bID
从运行的结果一眼就可以看出来,该联接产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代。
3)、FULL(OUTER)JOIN
SELECT * FROM T_NumA FULL OUTER JOIN T_NumB ON T_NumA.aID=T_NumB.bID
由结果可知:该联接产生A和B的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。
注:MySQL之中,需要使用UNION合并LFT JOIN和RIGHT JOIN来模拟FULL JOIN。
●CROSS JOIN
SELECT * FROM T_NumA CROSS JOIN T_NumB
由运行结果可知:交叉联接运行的结果就是咱们在数据库系统原理中学的笛卡尔积(Cartesian Product),产生一个6*6=36行记录的结果集。
现在,你懂了SQL JOIN了吗?