mysql 內連線和外連線查詢

2022-02-14 20:12:55 字數 1559 閱讀 1330

一、內連線查詢 (笛卡兒積)

內聯接查詢inner join,mysql可以簡寫為join

二、外連線查詢

左外聯接查詢left outer join,mysql可以簡寫為left join

右外聯接查詢right outer join,mysql可以簡寫為right join

舉個栗子:

建立兩張表t1,t2,並插入一些資料

create

table

t1( cid

varchar(10

), city

varchar(10

),

primary

key(cid)

)insert

into t1 values('

tedu

','bj

'),('

tx','bj'

),('jd

','sh

'),('

bd','bj'

)create

table

t2( id

int,

customer

varchar(10

),

primary

key(id)

)insert

into t2 values(1,'

tedu

'),(2,'

tedu

'),(3,'

tx'),(4,'

jd'),(5,null)

1.t1和t2做內聯接查詢,得到t1和t2的迪卡爾積

select

*from t1 join t2;

2.在t1和t2的迪卡爾積上做了篩選,篩選的條件就是t1和t2中有關聯的列

select

*from t1 join

t2on t1.cid = t2.customer;

3.在t1和t2篩選過的迪卡爾積上,t1和t2做左外聯接查詢

select

*from t1 left

join

t2on t1.cid = t2.customer;

4.在t1和t2篩選過的迪卡爾積上,t1和t2做右外聯接查詢

select

*from t1 right

join

t2on t1.cid = t2.customer;

總結:一.a表和b表內連線就是把a表的每條記錄和b表的每條記錄做完全組合,如果a表中有4條記錄,b表中有5條記錄,那麼a表和b表內連線後產生的大表就是4*5=20條記錄。

二.外連線是在內連線的基礎上加上left或者right,外連線包含兩點,例如select * from t1 left join t2  

on t1.cid = t2.customer 這樣做外連線

1.t1表中的每條記錄都要顯示出來,如果在t2沒有與之對應的,則顯示null;

2.t2表中如果有多條記錄都可以和t1表中對應,則把這多條記錄都顯示出來。

MySQL多表查詢(內連線和外連線)

新建兩張表a table和b table,如果把 當作乙個集合,那麼 中的記錄就是集合中的乙個元素。表a 表b 1.內連線 只有一種場景 select a.b.from a table a inner join b table b on a.a id b.b id 或select a.b.from ...

mysql內連線和外連線

testa表 idname class1張三 a2李四b 3王五ctestb表 class ageb10c 20d30內連線實際上就是交集,顯示符合匹配條件的資料 select testa.testb.from testa inner join testb on test.class testb.c...

MySQL連線查詢 內連線和外連線的區別

1.使用連線查詢的場景 將多張表進行記錄的連線查詢 按照某個字段指定的條件進行資料的拼接 進行資料的拼接 兩張表的內容顯示在乙個結果表中 使用連線查詢 最終的結果是 記錄數有可能變化,字段數一定會增加 至少兩張表的合併 意義 在使用者檢視資料的時候,顯示的資料來自於多張表連線查詢的分類 4類 內部有...