資料庫常見的join方式有三種:inner join, left outter join, right outter join(還有一種full join,因不常用,本文不討論)。這三種連線方式都是將兩個以上的表通過on條件語句,拼成乙個大表。以下是它們的共同點:
1. 關於左右表的概念。左表指的是在sql語句中排在left join左邊的表,右表指的是排在left join右邊的表。 2. 在拼成的大表中,左表排在左邊,右表排在右邊。 3. on條件語句最好用=號對兩表相應的主外來鍵進行連線。當然,也可以用其他操作符,如》,
在下文中,用到了兩個表,"部門"表與"組織"表,其中,"部門"表有一名為"組織編號"的外來鍵,指向"組織"表中的主鍵"編號"。
inner join
格式:select * from 部門 inner join 組織 on 部門.組織編號 = 組織.編號
目的:將兩表中符合on條件的所有記錄都找出來。
規律:1. 拼出的大表記錄不會增加。 2. 如果左邊與右表的關係是一對多的關係,在選出的任一記錄中,假若右表有多個記錄與其對應,那麼,連線後的左表,主鍵將不再唯一。
典型應用:將存在多關係的引用表放在左表,將存在一關係的被引用表放在右表,通過=號將主外來鍵進行連線,通過對右表設定過濾條件,選出相應的且主鍵唯一的左表記錄。
備註:inner join 是預設的連線方式,可縮寫為join。
轉化為where子句:
select * from 部門, 組織 where 部門.組織編號 = 組織.編號
left outter join
格式: select * from 部門 left join 組織 on 部門.組織編號 = 組織.編號
格式: select * from 組織 left join 部門 on 組織.編號 = 部門.組織編號
目的:將左表的所有記錄列出,右表中只要符合on條件的,與左表記錄相拼合,不符合條件的,填以null值。
規律:1. 選出所有符合條件的左表,如果左邊與右表的關係是一對一的關係,則拼成的大表記錄不會改變。 如果左邊與右表的關係是多對一的關係,則拼成的大表記錄也不會改變。 如果左邊與右表的關係是一對多的關係,則拼成的大表記錄會增加。對於每一具有一對多關係的左表記錄,如果左表1:n與右表對應,那麼會多出n-1條記錄。例如,如果左表第一條記錄1:3對應於右表,多出2條記錄。如果左表第二條記錄1:2對應於右表,則再多出1條記錄。這樣,總共多出3條記錄。其他類推。 2. 如果左邊與右表的關係是一對多的關係,在選出的任一記錄中,假若右表有多個記錄與其對應,那麼,連線後的左表,主鍵將不再唯一。 3. 如果左邊與右表的關係是一對多的關係,對於左表任一記錄,如果右表沒有記錄與其相對應,則全部填以null值。
典型應用:將存在多關係的引用表放在左表,將存在一關係的被引用表放在右表,通過對右表設定過濾條件,選出相應的且主鍵唯一的左表記錄。
備註:left outter join可用left join代替。在有些資料庫中,如hsqldb, 只能使用left join而不能使用left outter join。
轉化為where子句:
select * from 部門, 組織 where 部門.組織編號 = 組織.編號
right outter join
格式: select * from 部門 right join 組織 on 部門.組織編號 = 組織.編號
格式: select * from 組織 right join 部門 on 部門.組織編號 = 組織.編號
目的:將右表的所有記錄列出,左表中只要符合on條件的,與右表記錄相拼合,不符合條件的,填以null值。
規律:(與left outter join相反)
典型應用:可轉化成left outter join。例如
select * from 組織 right join 部門 on 部門.組織編號 = 組織.編號 與 select * from 部門 left join 組織 on 部門.組織編號 = 組織.編號 的效果一樣
備註:right outter join可用right join代替。在有些資料庫中,如hsqldb, 沒有實現right join功能。
轉化為where子句:
select * from 部門, 組織 where 部門.組織編號 = 組織.編號
資料庫連線的三種方式
剛開始學習資料庫.對資料庫的那幾種連線方式有點不太明白.我說說這幾天我自己的理解.三種連線方式 rdo dao ado ado active data objects,活動資料物件 dao data access objects,資料訪問物件 rdo remote data objects,遠端資料...
資料庫連線的三種方式
剛開始學習資料庫 對資料庫的那幾種連線方式有點不太明白 我說說這幾天我自己的理解 三種連線方式 rdo dao ado ado active data objects,活動資料物件 dao data access objects,資料訪問物件 rdo remote data objects,遠端資料...
連線SQL Server 資料庫的三種方式
涉及到配置檔案的連線方法 方式一 在配置檔案中 connectionstring value data source 伺服器的名稱 initial catalog 要連線的資料庫的名稱 user id 資料庫登入名 password 資料庫登入密碼 在 中獲取資料庫連線字串 public stati...