sql表連線的幾種方式

2021-08-09 12:58:59 字數 3722 閱讀 7679

這裡有兩張表tablea和tableb,分別是姓名表和年齡表,用於我們例子的測試資料

tablea

id

name

1

t1

2

t2 4t4

tableb

id

age

1

18

2 203

19

在開發中我們的業務需求有時候是複雜的,多張表聯合查詢的時候是有多種方式的,面對不同的需求,

靈活使用不同的表連線方式,那麼表連線分成哪幾種呢?

表連線有幾種?

sql表連線分成外連線內連線交叉連線。

一.外連線

概述:外連線包括三種,分別是左外連線、右外連線、全外連線。

對應的sql關鍵字:left/right/full outer join,通常我們都省略outer關鍵字,寫成left/right/full join。

在左、右外連線中都會以一種表為基表,基表的所有行、列都會顯示,外表如果和條件不匹配則所有的外表列值都為null。

全外連線則所有表的行、列都會顯示,條件不匹配的值皆為null。

1.左外連線示例:

sql語句:  select * from tablea left join tableb on tablea.id=tableb.id

結果:

id

name

id

age

1

t1

1

18

2

t2

2

20

4

t4

null

null

注釋:tablea(基表)中所有的行列都顯示了,第三行的條件不匹配所有tableb(外表)的值都為null。

2.右外連線示例:

sql語句: select * from tablea right join tableb on tablea.id=tableb.id

結果:

id

name

id

age

1

t1

1

18

2

t2

2

20

null

null

319注釋:tableb(基表)中所有的行列都顯示了,第三行的條件不匹配所有tablea(外表)的值都為null。

3.全外連線示例:

sql語句:select * from tablea full join tableb on tablea.id=tableb.id

結果:

id

name

id

age

1

t1

1

18

2

t2

2

20

null

null319

4t4null

null

注釋:tablea和tableb的所有行列都顯示了,條件不匹配的行的值為null

二.內連線

概述:內連線是用比較運算子比較要連線的列的值的連線,不匹配的行不會被顯示。sql關鍵字join 或者inner join,通常我們寫成join

例子:

select * from tablea join tableb on tablea.id=tableb.id

結果:

id

name

id

age

1

t1

1

18

2

t2

2

20

注釋:只返回條件匹配的行

以上寫法等效於:

select * from tablea,tableb where tablea.id=tableb.id

select * from tablea cross join tableb where tablea.id=tableb.id (cross join 後只能用where不能用on)

三.交叉連線

概念:沒有where條件的交叉連線將產生連線表所涉及的笛卡爾積。即tablea的行數*tableb的行數的結果集。(tablea 3行*tableb 3行=9行)

sql語句:

select * from tablea cross join tableb

結果:

id

name

id

age

1

t1

1

18

2

t2

1

18

4

t4

1

18

1

t1

2

20

2

t2

2

20

4

t4

2

20

1

t1

3

19

2

t2

3

19

4

t4

3

19

注釋:返回3*3=9行資料,即笛卡爾積。

以上寫法等效於:

select * from tablea,tableb

參考文章:

ps:

這完全是拋磚引玉,本人寫的不好,希望大神們能多多指點,共同**,共同學習。

SQL表連線的幾種方式

一 關係代數 合併資料集合的理論基礎是關係代數,它是由e.f.codd於1970年提出的。在關係代數的形式化語言中,用表 或者資料集合表示關係或者實體,用行表示元組,用列表示屬性。關係代數包含以下8個關係運算子 1.選取 返回滿足指定條件的行。2.投影 從資料集合中返回指定的列。3.笛卡爾積 是關係...

sql表連線的幾種方式

這裡有兩張表tablea和tableb,分別是姓名表和年齡表,用於我們例子的測試資料 tablea idname1t1 2t24t4 tableb idage118 220319 在開發中我們的業務需求有時候是複雜的,多張表聯合查詢的時候是有多種方式的,面對不同的需求,靈活使用不同的表連線方式,那麼...

sql表連線的幾種方式

這裡有兩張表tablea和tableb,分別是姓名表和年齡表,用於我們例子的測試資料 表連線有幾種?sql表連線分成外連線 內連線和交叉連線。一.外連線 概述 外連線包括三種,分別是左外連線 右外連線 全外連線。對應的sql關鍵字 left right full outer join,通常我們都省略...