SQL
Join總覽(Windows
SQL Server 2008 R2)
Overview
of SQL Join(Windows SQL Server 2008 R2)
前言:
這篇文章其實早該寫了,因為過去在產學公司比較多的業務內容都在依照主管需求串接(Join)不同表格,達到”管理需求”。這句話說得簡單,但並非每個生產管理者都一定理解資料庫的結構,而對我而言,這些資料庫都是由軟體供應商所建置,我也需要了解各個表格之間的邏輯,才能再運用這些資料轉化成所需的資訊。
因此,本篇文章要談的Join就是把管理者的邏輯,變成我們撈取資料庫的邏輯的關鍵,有鑑於網路上的資料都是比較片段,本篇會希望用比較簡單的圖示,讓各位一目瞭然各個Join語法的不同,不論是實務應用、面試求職這個Join的語法觀念都非常重要,也希望本篇文章能幫到大家。
正文:
那麼本篇是針對Window SQL Server 2008 R2(後稱2008 R2)為基礎的撰寫方法,各個資料庫可能會有一些特別的Join各位需要可能要去查查官方的定義。
那麼本篇是針對Window SQL Server 2008 R2(後稱2008 R2)為基礎的撰寫方法,各個資料庫可能會有一些特別的Join各位需要可能要去查查官方的定義。
在進入Join前,先用一張圖片讓各位了解Join跟Union兩者的差異,前者是垂直整合,後者是水平整合,從下方圖片就能明顯看到差異。
Join垂直整合概念圖 |
Union水平整合概念圖
|
可以看到,Join在上面的範例透過工號這個主鍵(Primary Key)進行連接,將員工基本資料與出勤資料進行連結,進而產生員工出勤的資料;而Union則是將不同表格,但相同屬性的欄位,合併成為單一一張表格。因此,雖然都是整合成一張表格,但意義上是非常不同的。
搞清楚Join跟Union的差異後,我們來深入談談在2008 R2的Join。
引述《SQL Server 2008 R2資料庫實務應用》[1]對於Join所做的說明:
它透過兩個資料表間共同欄位的方式來關聯兩個資料表,這種關聯通常是建立在所謂主鍵-外鍵的關係上,也就是說一個資料表的外部索引鍵(Foreign key)欄位參考到另一個資料表的主索引鍵欄位(Primary key),根據這兩個欄位的共同執來建立兩個資料表的關聯關係。
而我們常使用的Join(本篇翻作連接,在[1]中翻成合併容易與Union搞混,為避免誤會故更改翻譯)是用來進行多個資料表間關聯的連接運算,而他又可以細分成以下4種:
根據我自己使用起來的頻率,又以前面兩種為大宗,且邏輯最需要作為區分,因此我繪製了下圖,讓各位快速了解Inner Join、Left Join、Right Join所取出的資料差異。
上圖包含了文氏圖所表明取出的資料以及SQL的語法,我特地將Left Join以及Right Join的聯集的地方獨立出來,因為這個是三者都會包含的地方,但Left Join會包含左邊表格(表格1)有的但右邊表格(表格2)沒有的資料,反之,Right Join會包含右邊表格(表格2)有的但左邊表格(表格1)沒有的資料。
參考文獻:
[1]許正憲與張嘉琪(2011),SQL Server 2008 R2資料庫實務應用。臺北市,上奇資訊
哈囉, 我有些問題想請教. 請問可以信箱聯繫嗎? :)
回覆刪除您好,我的信箱是 ching93011@gmail.com
刪除對於本篇文章有問題,歡迎來信給予指教