等值连接与自然连接区别:
在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
SELECT * from Table_A A NATURAL JOIN Table_B B WHERE A.id = B.id;
在连接查询中,通常不用 WHERE 而是用 ON,因为 WHERE 没有 ON 效率高。
区别是等值连接含有重复列。
如何使用
对于这么多种JOIN查询,到底什么使用应该用哪种呢?其实我们用图来表示结果集就一目了然了。
假设查询语句是:
SELECT ... FROM tableA ??? JOIN tableB ON tableA.column1 = tableB.column2;
我们把tableA看作左表,把tableB看成右表,那么INNER JOIN是选出两张表都存在的记录:
image.png
LEFT OUTER JOIN是选出左表存在的记录:
image.png
RIGHT OUTER JOIN是选出右表存在的记录:
image.png
FULL OUTER JOIN则是选出左右表都存在的记录:
image.png
小结
-
JOIN查询需要先确定主表,然后把另一个表的数据“附加”到结果集上,对于左右外连接其实只是方向不同,看个人习惯怎么确定主表
-
INNER JOIN是最常用的一种JOIN查询,它的语法是SELECT ... FROM <表1> INNER JOIN <表2> ON <条件...>;
-
JOIN查询仍然可以使用WHERE条件和ORDER BY排序。
网友评论