資料庫多表連線 內連線 外連線 交叉連線)

2021-08-21 21:00:28 字數 1889 閱讀 5090

表示例:

table1 id

name1t1

2t23t3

table2 id

age1112

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

例:

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

name

idage1t1

1112t2

222等效於

select * from tablea,tableb where tablea.id=tableb.id
① 外連線又分為:左外連線、右外連線、全外連線。

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

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

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

左外連線示例:

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

name

idage1t1

1112t2

2223t3

null

null

2. 右外連線示例:

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

name

idage1t1

1112t2

211null

null444

3. 全連線示例:

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

name

idage1t1

1112t2

222null

null444

3t3null

null

注:mysql不支援full join,解決辦法:right join + union + left join

兩張表時:

select * from a left join b on a.id = b.id (where 條件)

union

select * from a right join b on a.id = b.id (where條件);

沒有where條件的交叉連線將產生連線表所涉及的笛卡爾積,即tablea的行數*tableb的行數的結果集。如果帶where,返回或顯示的是匹配的行數。(cross join後只能用where不能是on)

select * from tablea cross join tableb;
id

name

idage1t1

1112t2

2223t3

3331t1

1112t2

2223t3

3331t1

1112t2

2223t3

333等效於:

select * from tablea,tableb;

內連線 外連線 交叉連線

一 連線查詢 根據兩個表或者多個表的列之間的關係,從這些表中查詢資料。目的 實現多個表查詢操作。二 連線型別 連線分為三種 內連線 外連線 交叉連線。1 內連線 使用比較運算子 包括 和 進行表間的比較操作,查詢與連線條件相匹配的資料。根據比較運算子不同,內連線分為等值連線和不等連線兩種。1.1 等...

內連線 外連線 交叉連線總結

本篇文章總結了一下sql中的五種連線 內連線 左外連線 右外連線 全連線 交叉連線 一 內連線 full join full outer join 內連線查詢操作列出與連線條件匹配的資料行,它使用比較運算子比較被連線列的列值。內連線分三種 1 等值連線 在連線條件中使用等於號 運算子比較被連線列的列...

SQL Server內連線 外連線 交叉連線

在資料庫查詢中,我們常常會用到的表連線查詢,而我自己在工作中也是時常用這些表連線查詢。而就在剛剛我卻還沒有搞清楚資料庫表連線到底有哪幾種,這幾種表連線查詢方式又有什麼區別,實屬慚愧!藉以此文以謹記。資料庫表連線查詢分三種 內連線 外連線 交叉連線 那下面我們就來分別說說這三種連線。內連線又分為 等值...