表的内联合和外联合
在表的联合中,有时会遇到内联合和外联合的问题,但我不知道到底什么叫内联合和外联合,翻过相关的书籍,可都解释的不够清楚,不知哪位大虾能帮忙解释以下这个问题吗?
还有那个外联合中又有什么 左外联合 和 又外联合,这到底是怎么回事呢?
问题点数:50、回复次数:2Top
1 楼xluzhong(Ralph)回复于 2005-05-14 17:38:02 得分 25
使用内联接
内联接是用比较运算符比较要联接列的值的联接。
在 SQL-92 标准中,内联接可在 FROM 或 WHERE 子句中指定。这是 WHERE 子句中唯一一种 SQL-92 支持的联接类型。WHERE 子句中指定的内联接称为旧式内联接。
下面的 Transact-SQL 查询是内联接的一个示例:
USE pubs
SELECT *
FROM authors AS a INNER JOIN publishers AS p
ON a.city = p.city
ORDER BY a.au_lname DESC
此内联接称为相等联接。它返回两个表中的所有列,但只返回在联接列中具有相等值的行。
Top
2 楼xluzhong(Ralph)回复于 2005-05-14 17:38:33 得分 25
使用外联接
仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回 FROM 子句中提到的至少一个表或视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。
Microsoft® SQL Server™ 2000 对在 FROM 子句中指定的外联接使用以下 SQL-92 关键字:
LEFT OUTER JOIN 或 LEFT JOIN
RIGHT OUTER JOIN 或 RIGHT JOIN
FULL OUTER JOIN 或 FULL JOIN
SQL Server 支持 SQL-92 外联接语法,以及在 WHERE 子句中使用 *= 和 =* 运算符指定外联接的旧式语法。由于 SQL-92 语法不容易产生歧义,而旧式 Transact-SQL 外联接有时会产生歧义,因此建议使用 SQL-92 语法。
Top




