Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » 连接:从多个表检索数据 » 连接的工作原理

 

连接的表

SQL Anywhere 支持以下几类连接表。

  • 交叉连接   两个表的这种连接类型生成来自这两个表的各行的所有可能组合。结果集的规模是第一个表中的行数乘以第二个表中的行数。交叉连接也称作矢量积或笛卡儿积。您不能将 ON 子句与交叉连接一起使用。

  • 键连接   这种类型的连接条件使用各表间的外键关系。如果使用 JOIN 关键字时未指定连接类型(如 INNER、OUTER 等),并且没有 ON 子句,则缺省是键连接。

  • 自然连接   此连接是基于具有相同名称的列自动生成的。

  • 使用 ON 子句连接   此类型的连接由 ON 子句中的连接条件的显式说明产生。在与键连接或自然连接一起使用时,该连接条件既包含生成的连接条件,也包含显式连接条件。在与 JOIN 关键字一起使用(但不与 KEY 或 NATURAL 关键字一起使用)时,没有生成的连接条件。请参见显式连接条件(ON 子句)

内连接和外连接

可以通过指定 INNER、LEFT OUTER、RIGHT OUTER 或 FULL OUTER 对键连接、自然连接和使用 ON 子句的连接加以限定。缺省值是 INNER。在使用关键字 LEFT、RIGHT 或 FULL 时,关键字 OUTER 是可选的。

在内连接中,结果中的每一行都满足连接条件。

在左外连接或右外连接中,为一个表保留所有行,为另一个表不满足连接条件的行返回空值。例如,在右外连接中,保留右侧表的所有行,左侧的用空值补充。

在完全外连接中,保留这两个表的所有行;并且为不满足连接条件的行提供空值。