创建高级联结
16.1 使用表别名
别名除了用于列名和计算字段外,SQL还允许给表名起别名。这样做有两个主要理由:
缩短SQL语句;
允许在单条SELECT语句中多次使用相同的表。
16.2 使用不同类型的联结
一般我们使用的是内部联结或等值联结(equijoin)。
16.2.1 自联结
用自联结而不用子查询
自联结通常作为外部语句用来替代从相同表中检索数据时使用的子查询语句。处理联结远比处理子查询快得多。
16.2.2 自然联结
自然联结排除多次出现,使每个列只返回一次。自然联结是这样一种联结,其中你只能选择那些唯一的列。这一般是通过对表使用通配符(SELECT *),对所有其他表的列使用明确的子集来完成的。
16.2.3 外部联结
联结包含了那些在相关表中没有关联行的行。这种类型的联结称为外部联结。
16.3 使用带聚集函数的联结
16.4 使用联结和联结条件
注意所使用的联结类型。一般我们使用内部联结,但使用外部联结也是有效的。
保证使用正确的联结条件,否则将返回不正确的数据。
应该总是提供联结条件,否则会得出笛卡儿积。
在一个联结中可以包含多个表,甚至对于每个联结可以采用不同的联结类型。