1. 程式人生 > >左連線、右連線和內連結(自然連線)

左連線、右連線和內連結(自然連線)

前兩天面試時被問到資料庫左連線,原題是:A、B表中各有4條資料,A表左連線B表時會顯示多少條資料?當時腦殘的說了句:16條!唉~悲催的。。。一下子體現了自己在資料庫方面的弱項,回來之後補習了一下,在此記錄一下個人學習之後的總結:

1、左連線

左連線基本格式為A left join B on A.key=B.key,比如以下語句:

select * from A left join B on A.id=B.id;

如果A、B表的資料結構為:

A:                B:

id, name

id, name

1, xiaolu

1, xiaolu

2, yaoyao

3, yaoyao

,這時執行上述語句會得出如下結果:

A.id

A.name

B.id

B.name

1

Xiaolu

1

Xiaolu

2

yaoyao

null

null

由上述結果可以看出,左連線是以左表為座標,首先將A表中所有的資料列出來,然後根據on的匹配條件查出B表中的資料並將資料列在A表資料後面,如果在B表中沒有與A表中匹配的資料,則顯示為null,查詢出的總資料數為A表中的資料條目個數。

2、右連線

右連線基本格式為A right join B on A.key=B.key,比如以下語句:

select * from A right join B on A.id=B.id;

如果A、B表的資料結構為:

A:               B:

id, name

id, name

1, xiaolu

1, xiaolu

2, yaoyao

3, yaoyao

,這時執行上述語句會得出如下結果:

B.id

B.name

A.id

A.name

1

xiaolu

1

xiaolu

null

null

3

yaoyao

由上述結果可以看出,左連線是以左表為座標,首先將B表中所有的資料列出來,然後根據on的匹配條件查出A表中的資料並將A表的資料列在B表的前面,如果在A表中沒有與B表中匹配的資料,則顯示為null,查詢出的總資料數為B表中的資料條目個數。

3、內連結

內連線基本格式為A inner join B on A.key=B.key,比如以下語句:

select * from A inner join B on A.id=B.id;

如果A、B表的資料結構為:

A:                B:

id, name

id, name

1, xiaolu

1, xiaolu

2, yaoyao

3, yaoyao

,這時執行上述語句會得出如下結果:

A.id

A.name

B.id

B.name

1

xiaolu

1

xiaolu

由上述結果可以看出,內連結是隻顯示匹配的資料