MySQL的幾種連接 join

一、釋義。

1、Left Join(左聯接)

以左表為中心,返回左表中符合條件的所有記錄以及右表中聯結字段相等的記錄——當右表中無相應聯接記錄時,返回空值。

2、Right Join(右聯接)

以右表為中心,返回右表中符合條件的所有記錄以及左表中聯結字段相等的記錄——當左表中無相應聯接記錄時,返回空值。

3、Inner Join(等值連接)

返回兩個表中聯結字段相等的行。

二、示例。

1、插入測試表(test1,test2)

create table test1 --測試表1

(id int not null,

value char(10) )

create table test2 --測試表2

(id int not null,

value char(10) )

2、插入數據

--insert into test1

insert into test1

values (1,'testaa')

insert into test1

values (2,'testaa')

insert into test1

values (3,'testaa')

--insert into test2

insert into test2

values (1,'testaa2')

insert into test2

values (2,'testaa2')

insert into test2

values (4,'testaa2')

3、查詢結果比較(附圖)

select * from test1 a left join test2 b on a.id = b.id

select * from test1 a right join test2 b on a.id = b.id

select * from test1 a inner join test2 b on a.id = b.id

MySQL的幾種連接 join/inner join//left join/right join區別

4、刪除測試表

drop table test1

drop table test2

總結:

連接:A xjoin B(主表 操作 關聯表)

select過程:from->where->group by->having->order by->limit

在不使用on語法時,join、inner join、逗號、cross join結果相同,都是取2個表的笛卡爾積。逗號與其他操作符優先級不同,所以有可能產生語法錯誤,儘量減少用逗號

join、inner join、cross join支持on和using語法,逗號不支持on和using語法

on語法:篩選連接後的結果,兩表的對應列值相同才在結果集中,可以通過and連接多個列值的匹配要求,列名可以不同

select * from tb_test1 inner join tb_student on tb_test1.id=tb_student.id;

using語法:篩選連接後的結果,兩表的對應列值相同才在結果集中,括號內用多個列名要求用逗號連接,列名必須相同。


分享到:


相關文章: