資料庫操作中,左連線,右連線是什麼意思,舉例說明

2021-09-16 19:28:28 字數 2846 閱讀 2264

1樓:樂海白

sql join 子句用於把來自兩個或多個表的行結合起來,基於這些表之間的共同欄位。

left join(左連線) 返回包括左表中的所有記錄和右表中聯結欄位相等的記錄。

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

right join(右連線)返回包括右表中的所有記錄和左表中聯結欄位相等的記錄。

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

示例表:表1和表2

1、left join 例:

註釋:王五在表2中沒有匹配的記錄,所以表2的內容為null。

2、right join例:

註釋:表2中所有記錄被返回。

2樓:123飯後娛樂

左連線:只要左邊表中有記錄,資料就能檢索出來,而右邊有的記錄必要在左邊表中有的記錄才能被檢索出來。

右連線:右連線是隻要右邊表中有記錄,資料就能檢索出來。

舉例說明

新建兩張表,分別為t_left_tab和t_right_tab。

將t_left_tab作為左邊表,t_right_tab作為右邊。

左連線:select * from t_left_tab a left join t_right_tab b on a.`id` = b.`id`;

查詢結果:

右連線:select * from t_right_tab a left join t_left_tab b on a.`id` = b.`id`;

查詢結果:

查詢最大條數:select * from t_left_tab a left join t_right_tab b on 1=1;

查詢結果:

3、總結

a 資料庫左連線和右連線的區別:主表不一樣。

b 通過左連線和右連線,最小條數為3(記錄條數較小的記錄數),最大條數為12(3×4)。

擴充套件資料:

資料庫中的自連線:

自連線(self join)可以把它這個過程想象成兩張一樣的表進行左連線或右連線,其中一張表通過設別名的方式成為了虛表,但是共享原標中的資訊。

應用場景:就是表的一個欄位和另一個欄位是相同性質的東西,譬如員工與上司,他們本質也都是員工。

在員工表中,員工的直接上司編號會以另一個欄位的形式出現,但是他的上司的編號也是會出現在員工編號這個欄位裡。

那麼在這種情況下,假如需要去查詢某一位員工的上司的資訊,在已知該員工編號的條件下,可以根據他的編號去獲得上司的編號,進而通過上司的編號去獲得上司的資訊。

舉個例子:

empid      empname      empleaderid

1             張三                   4

2             李四                   7

3             王麻子               7

4             陳六                   8

5             週日                   7

6             王八                   8

7        郝九      8

8     m10      null

上面的表名為employee,那麼我要查詢李四的上司的資訊,對應的sql語句應該是這樣的:

select *from  employee e1 left join employee e2 on e1.empleaderid=e2.empid where e1.

empid=2;

3樓:匿名使用者

假設a表有兩個欄位,aid、name, b 表也有兩欄位 bid,nameid

其中 nameid是aid在b 表中的外來鍵。

a表有資料如下:

aid name

1 a2 b

3 cb表有資料如下:

bid nameid

1 12 1

3 14 2

5 2用左連線,說白一點就是以左邊那個表為標準,左邊那表(表a)的所有記錄必須得全部出現,例如:

select * from a left join b on a.aid=b.nameid

結果應應該為:

aid name bid nameid

1 a 1 1

1 a 2 1

1 a 3 1

2 b 4 2

2 b 5 2

3 c null null

表a 的 aid為1的出現了三次,aid為2的出現了兩次,aid為3的出現了一次,全部都出現了。但因為在表b中沒有以aid為3對應的記錄,所以用null來填充。

同樣道理,用右連線,說白一點就是以右邊那個表為標準,

例如:select * from a right join b on a.aid=b.nameid

結果應該為:

aid name bid nameid

1 a 1 1

1 a 2 1

1 a 3 1

2 b 4 2

2 b 5 2

表b的記錄必須全部出現,但沒有出現 a表中aid為3的記錄,是因為b表中沒有以之對應的記錄,而且此時是以b表為標準的。這樣的比喻不知你看不看得明。

4樓:匿名使用者

看這個,就明瞭

5樓:

網頁連結這裡有詳細的**,這篇博文寫的很簡單易懂

關於C中資料庫連線的最簡單的操作

你這程式是沒問題。只要你在sql server 的配置管理器上開啟資料庫服務。然後在sql server management stduio 上能登陸進sql server 用sa 使用者名稱,空密碼 能找到puls 資料庫就沒問題。sql express是一個縮小版的資料庫,你有資料庫了就不需要。...

asp如何連線SQL資料庫,ASP連線sql資料庫怎樣建立連線 ?

sql server資料庫中的as使用 asp連線sql資料庫怎樣建立連線 1 server 要登入的資料庫伺服器地址,可以是域名,比如local,也可以是ip,比如127.0.0.1 2 uid 登入資料庫的帳號,一般不建議使用sa使用者來登入 3 pwd 登入資料庫的密碼 4 建議在資料庫系統上...

如何連線SQLSERVER資料庫?window身份驗證跟sq

連結數bai據庫 資料庫的服務開啟 using sqlconnection conn new sqlconnection 你的du資料庫的連結字zhi符串 這樣就dao開啟了 conn.open window身份 回驗證與sqlserver身份驗證的區答別。安全級別不同。如果是window身份驗證,...