联结是一种机制,用来在一条SELECT中关联表。在联结时应该注意外键或主键问题。
SQL对一条SELECT语句中可以联结的表的数目没有限制。
注意:
1、在引用的列可能出现二义性时,必须使用完全限定列名(用一个点分隔的表名和列名)。如果引用一个没有用表名限制的具有二义性的列名,将会报错。
2、不要联结不必要的表,联结的表越多,性能下降的越厉害。
笛卡尔积是由没有联结条件的表关系返回的结果为笛卡尔积,检索出的行的数目为第一个表的行数乘以第二个表的行数。
基于两个表之间的相等测试的联结称为等值联结,也称为内部联结。
自联结通常作为外部语句用来替代从相同表中检索数据时使用的子查询语句。虽然子查询和自联结最终的结果相同,但是有时候处理联结远比处理子查询快得多。
自然联结排除多次出现,使每个列只能返回一次,只能选择那些唯一的列(一般通过对表使用通配符即SELECT *),对所有其他表的列使用明确的子集来完成。
外部联结指包含了那些相关表中没有关联行的行。