日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简要描述内部连接和外部连接之间的区别_sqlserver的几种常见连接方法

發布時間:2025/3/11 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简要描述内部连接和外部连接之间的区别_sqlserver的几种常见连接方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

感謝本文幾種描述方法,讓我解決了最近的一段時間的疑問,轉載下來,以供后面查血使用。

本文鏈接:https://blog.csdn.net/huanghanqian/article/details/52847835

四種join的區別已老生常談:

INNER JOIN(也可簡寫為JOIN): 如果表中有至少一個匹配,則返回行

LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行

RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行

FULL JOIN: 只要其中一個表中存在匹配,就返回行

那么問題來了,還有一種常見的寫法是將表用逗號隔開,那這個又是怎么連接的呢。

先看這兩張表。

使用逗號隔開的方法來連接表:

SELECT *

FROM employee,department

WHERE employee.DepartmentID = department.DepartmentID

輸出結果:

可以很明顯發現:這不就是inner join嘛!

沒錯,答案正是這樣:sql用逗號連接多張表對應的是 inner join。

為了嚴謹性,我到處找sql的官方文檔來證實這一點。然而搜不出來sql的文檔(誰知道網址請務必發我),最后還是在維基百科上找到了可以當作論據的話。

SQL 定義了兩種不同語法方式去表示"連接"。首先是"顯式連接符號",它顯式地使用關鍵字

JOIN

,其次是"隱式連接符號",它使用所謂的"隱式連接符號"。隱式連接符號把需要連接的表放到

SELECT

語句的

FROM

部分,并用逗號隔開。這樣就構成了一個"交叉連接",

WHERE

語句可能放置一些過濾謂詞(過濾條件)。那些過濾謂詞在功能上等價于顯式連接符號. SQL 89標準只支持內部連接與交叉連接,因此只有隱式連接這種表達方式;SQL 92標準增加了對外部連接的支持,這才有了

JOIN

表達式。

也就是說,

SELECT *

FROM employee

INNER JOIN department

ON employee.DepartmentID = department.DepartmentID

等價于:

SELECT *

FROM employee,department

WHERE employee.DepartmentID = department.DepartmentID

至于哪個效率高一點,其實兩者是一回事,沒有區別。只是內連接是由SQL 1999規則定的書寫方式而已。

另外,在寫sql語句測試4種join的時候,發現mysql對于full join返回的結果和inner join一模一樣。經查閱資料,才發現原來mysql不支持full join啊。

見:How to do a FULL OUTER JOIN in MySQL?

————————————————

版權聲明:本文為CSDN博主「huanghanqian」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/huanghanqian/article/details/52847835

總結

以上是生活随笔為你收集整理的简要描述内部连接和外部连接之间的区别_sqlserver的几种常见连接方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。