查询和视图设计器如何表示联接
如果联接了表,“查询和视图设计器”将在“关系图”窗格中以图形方式表示联接,在“SQL”窗格中用 SQL 语法表示联接。
“关系图”窗格
在“关系图”窗格中,查询和视图设计器在联接所涉及的数据列之间显示一条联接线。 查询和视图设计器为每个联接条件显示一条联接线。 例如,下图阐释两个联接表之间的联接线:
如果用多个联接条件联接表,则查询和视图设计器将显示多条联接线,如下面的示例所示:
如果没有显示联接数据列(例如,代表表或表结构对象的矩形已最小化,或者联接涉及表达式),则查询和视图设计器会将联接线放到代表表或表结构对象的矩形的标题栏中。
联接线中间的图标形状表示表或表结构对象的联接方式。 如果联接子句使用等号 (=) 以外的运算符,则该运算符将出现在联接线图标中。 下表列出出现在联接线上的图标。
联接线图标 |
说明 |
---|---|
内部联接(用等号创建)。 |
|
基于“大于”运算符的内部联接。 |
|
外部联接,其中包括在左侧表示的表中的所有行,即使它们在相关表中没有匹配行也是如此。 |
|
外部联接,其中含有右边表示的表中的所有行,即使它们在相关表中没有匹配行。 |
|
完全外部联接,其中含有两个表中的所有行,即使它们在相关表中没有匹配行。
说明
有些数据库(如 Oracle)不支持完全外部联接。
|
联接线末端的符号表示联接类型。 下表列出联接类型和显示在联接线末端的图标。
联接线末端的图标 |
联接类型 |
---|---|
一对一联接 |
|
一对多联接 |
|
查询和视图设计器无法确定联接类型。 这种情况最常发生于手动创建联接时。 |
“SQL”窗格
在 SQL 语句中,可以用许多方式表达联接。 确切的语法取决于所使用的数据库以及定义联接的方式。
联接表的语法选项包括:
FROM 子句的 JOIN 限定符。关键字 INNER 和 OUTER 指定联接类型。 该语法是 ANSI 92 SQL 的标准语法。
例如,如果基于每个表中的 pub_id 列联接 publishers 和 pub_info 表,所得到的 SQL 语句可能像下面这样:
SELECT * FROM publishers INNER JOIN pub_info ON publishers.pub_id = pub_info.pub_id
如果创建外部联接,将出现关键字 LEFT OUTER 或 RIGHT OUTER 以代替关键字 INNER。
WHERE 子句比较两个表中的各列。如果数据库不支持 JOIN 语法(或者您自行输入了该语法),则出现 WHERE 子句。 如果联接是在 WHERE 子句中创建的,则两个表名都出现在 FROM 子句中。
例如,下面的语句联接 publishers 和 pub_info 表。
SELECT * FROM publishers, pub_info WHERE publishers.pub_id = pub_info.pub_id