第十六章 创建高级联结
-
使用表别名
-
使用不同类型的联结(等值联结(equijoin)之外的)
-
自联结
自联结通常作为外部语句用来替代从相同表中检索数据时使用的子查询语句。虽然最终的结果是相同的,但有时候处理联结远比处理子查询快得多。
-
自然联结:自然联结排除多次出现,使每个列只返回一次。
-
外部联结:联结包含了那些在相关表中没有关联行的行。这种类型的联结称为外部联结。
-
-
外部联结的类型:存在两种基本的外部联结形式:左外部联结和右外部联结。它们之间的唯一差别是所关联的表的顺序不同。换句话说,左外部联结可通过颠倒FROM或WHERE子句中表的顺序转换为右外部联结。因此,两种类型的外部联结可互换使用,而究竟使用哪一种纯粹是根据方便而定。
-
没有=操作符*:MySQL不支持简化字符*=和=*的使用,这两种操作符在其他DBMS中是很流行的。
-
使用带聚集函数的联结
-
使用联结和联结条件:
- 注意所使用的联结类型。一般我们使用内部联结,但使用外部联结也是有效的。
- 保证使用正确的联结条件,否则将返回不正确的数据。
- 应该总是提供联结条件,否则会得出笛卡儿积。
- 在一个联结中可以包含多个表,甚至对于每个联结可以采用不同的联结类型。虽然这样做是合法的,一般也很有用,但应该在一起测试它们前,分别测试每个联结。这将使故障排除更为简单。