久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SQL的表連接怎么實現

152次閱讀
沒有評論

共計 2410 個字符,預計需要花費 7 分鐘才能閱讀完成。

這篇“SQL 的表連接怎么實現”文章的知識點大部分人都不太理解,所以丸趣 TV 小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“SQL 的表連接怎么實現”文章吧。

SQL 的表連接

在關系數據庫中,數據分布在多個邏輯表。想要獲得完整有意義的數據集,則需要使用連接來查詢這些表中的數據。SQL Server 中支持多種連接,包括內連接、左連接、右連接、交叉連接和全外連接。

一、內連接

內部連接子句用于查詢來自兩個或多個相關表的數據。INNER JOIN 子句的語法:

SELECT p.product_name, p.list_price ,c.category_nameFROM production.products p 
INNER JOIN production.categories c ON c.category_id = p.category_id

注意:要查詢的字段,必須要在字段的前面加上表名或者表的別名,如:p.product_name
其中 FROM 后面的是主表,然后 INNER JOIN 后面的表是要連接的表。主表和連接表進行比較,查 找滿足的條件的所有行。連接謂詞的計算結果為 true 是,則將主表和連接表進行合并成新的結果 集,如下圖所示:

內連接的多個表連接, 如下所示:

SELECT p.product_name, p.list_price ,c.category_name, b.brand_nameFROM production.products p 
INNER JOIN production.categories c ON c.category_id = p.category_id 
INNER JOIN production.brands b ON b.brand_id = p.brand_id

二、左連接

在左連接中使用 LEFT JOIN 子句用于查詢來自多個表的數據,它返回是左表中的所有行和右表中匹配行。若是右表中找不到匹配行,則使用 NULL 代替顯示,如圖所示:

使用 LEFT JOIN 語句進行連接:如下所示:

SELECT p.product_name, p.list_price ,c.category_nameFROM production.products p 
LEFT JOIN production.categories c ON c.category_id = p.category_id

在上面的語法中 FROM 后面的表是左表(production.products),而 LEFT JOIN 后面緊跟的右 表(production.categories)。

三、右連接

在右連接中使用 RIGHT JOIN 子句來進行兩個表或多個表進行查詢。右查詢剛好與左查詢的是相反 的,返回右表的所有行和左表的匹配行,若左表找不到匹配行,則返回 NULL 代替顯示,如圖所示:

使用 RIGHT JOIN 語句進行連接:如下所示:

SELECT p.product_name, p.list_price ,c.category_nameFROM production.products p 
RIGHT JOIN production.categories c ON c.category_id = p.category_id

在上面的語法中 FROM 后面的表是左表(production.products),而 RIGHT JOIN 后面緊跟的右 表(production.categories)。

四、交叉連接

CROSS JOIN 連接兩個或多個不相關的表。以下是兩個表的 CROSS JOIN 的語法,兩種寫法:

SELECT T1.select_list 
FROM T1 CROSS JOIN T2;

或者

SELECT T1.select_list 
FROM T1, T2;

CROSS JOIN 將第一個表 (T1) 中的每一行與第二個表 (T2) 中的每一行連接起來。換句話說,交叉連 接返回兩個表中行的笛卡爾積。與 INNER JOIN 或 LEFT JOIN 不同,交叉連接不會在連接的表之間 建立關系。
假設 T1 表包含三行:1 , 2 和 3,T2 表包含三行:A,B 和 C。CROSS JOIN 從第一個 表 (T1) 獲取一行,然后為第二個表 (T2) 中的每一行創建一個新行。然后它對 第一個 表 (T1) 中的 下一行執行相同操作,依此類推。在此圖中,CROSS JOIN 總共創建了 9 行。

五、自連接

自聯接用于將表連接到自身(同一個表)。它對于查詢分層數據或比較同一個表中的行很有用。
自聯接使用內連接或左連接子句。由于使用自聯接的查詢引用同一個表,因此表別名用于為查詢 中的表分配不同的名稱。
注意:如果在不使用表別名的情況下在查詢中多次引用同一個表,則會出現錯誤。
示例:

SELECT t1.select_list 
FROM T1 t1INNER JOIN T1 t2 ON t1.category_id = t2.category_id

在 INNER JOIN 這里可以使用其他的子句,比如:LEFT JOIN,RIGHT JOIN

六、全外連接

FULL OUTER JOIN 當左表或右表中存在匹配項時,該命令將返回所有行。如圖所示:

使用 FULL OUTER JOIN 查詢 pm.projects 表和 pm.member 表中的數據:

SELECT m.name member, p.title project 
FROM pm.members m 
FULL OUTER JOIN pm.projects p ON p.id = m.project_id;

pm.projects 表數據:

pm.member 表數據:

查詢結果:

以上就是關于“SQL 的表連接怎么實現”這篇文章的內容,相信大家都有了一定的了解,希望丸趣 TV 小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計2410字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 监利县| 淮北市| 陇南市| 武清区| 龙南县| 资源县| 鄂温| 宽城| 介休市| 新余市| 建宁县| 青田县| 伽师县| 庆阳市| 芮城县| 辽阳市| 朝阳区| 荔浦县| 陇川县| 紫阳县| 扬州市| 黄平县| 襄樊市| 射洪县| 大港区| 沁源县| 浠水县| 哈密市| 灵石县| 多伦县| 江山市| 武夷山市| 威海市| 遂昌县| 宁夏| 彭水| 县级市| 巴中市| 沙河市| 华宁县| 茌平县|