Sql 完全外部联接与完全联接
只是通过查询和示例来更好地理解连接。我注意到,在SQL Server 2008中,以下两个查询给出了相同的结果:Sql 完全外部联接与完全联接,sql,sql-server-2008,tsql,join,Sql,Sql Server 2008,Tsql,Join,只是通过查询和示例来更好地理解连接。我注意到,在SQL Server 2008中,以下两个查询给出了相同的结果: SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name 它们是执行完全相同的操作以产生相同的结果,还是在更复杂的示例中遇到不同的结果?这只是可互换的术语吗?实际上它们是相同的左外连接与左连接相同,右外连接与右连接相同。从内部联接进行比较,信息量更大 请参阅此以了解详细信息 Microsoft
SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
它们是执行完全相同的操作以产生相同的结果,还是在更复杂的示例中遇到不同的结果?这只是可互换的术语吗?实际上它们是相同的
左外连接
与左连接
相同,右外连接
与右连接
相同。从内部联接进行比较
,信息量更大
请参阅此以了解详细信息
Microsoft®SQL Server™ 2000将这些SQL-92关键字用于外部联接
在FROM条款中规定:
- 左外连接还是左连接
- 右外连接还是右连接
- 完全外部联接或完全联接
full-outer-join
或full-join
返回两个表中的所有行,在可以进行匹配的位置匹配行,并将NULL
s放置在不存在匹配行的位置 一些数据库确实能够识别外部关键字。有些则不然。
在被识别的地方,它通常是一个可选的关键字。
几乎总是,完全连接和完全外部连接做完全相同的事情。(我想不出一个他们没有的例子。其他人能想出一个吗?)
这可能会让你疑惑,“如果它没有意义,为什么它甚至会是一个关键字?”答案归结为编程风格
在过去,程序员努力使代码尽可能紧凑。每个字符都意味着更长的处理时间。我们使用了1、2和3个字母变量。我们用了两位数的年份。我们消除了所有不必要的空白。有些人仍然这样编程。这与处理时间无关。更多的是关于快速编码
现代程序员正在学习使用更多的描述性变量,并在代码中添加更多的注释和文档。使用额外的单词,如OUTER,确保阅读代码的其他人更容易理解代码。模糊性将减少。这种风格更具可读性,对将来需要维护代码的人也更友好。是的,在SQL Server 2008 R2中,两个查询的结果相同。非常好,谢谢。我遇到的许多教程都是根据自己的风格使用它们,但没有注意到它们是相同的。连接的可视化表示:
SELECT * FROM TableA
FULL JOIN TableB
ON TableA.name = TableB.name