Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 完全外部联接与完全联接_Sql_Sql Server 2008_Tsql_Join - Fatal编程技术网

Sql 完全外部联接与完全联接

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

只是通过查询和示例来更好地理解连接。我注意到,在SQL Server 2008中,以下两个查询给出了相同的结果:

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