SQL的JOIN家族

--先造數據spa

create table atable

(id int,select

name nvarchar(50))數據

insert into a(id,name)tab


insert into a(id,name)values(1,'張三')co

values(2,'李四')join

insert into a(id,name)oss

values(3,'王五')background

insert into a(id,name)生成

values(4,'趙六')

 

 

create table b

(id int,

name nvarchar(50))

insert into b(id,name)

values(1,'張三')

insert into b(id,name)

values(2,'李四')

insert into b(id,name)

values(3,'王五')

insert into b(id,name)

values(5,'趙六')

 

select * from a

1張三

2李四

3王五

4趙六

select * from b

1張三

2李四

3王五

5趙六

1、inner join(等價於join)表示內鏈接,在兩個表中存在至少一個匹配時,INNER JOIN 關鍵字返回行。

select * from a join b on a.id=b.id

1張三1張三

2李四2李四

3王五3王五

2、left join表示左鏈接,會從左表那裏返回全部的行,即便在右表中沒有匹配的行。

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

1張三1張三

2李四2李四

3王五3王五

4趙六NULLNULL

3、right join表示右鏈接,會從右表那裏返回全部的行,即便在左表中沒有匹配的行。

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

 

1張三1張三

2李四2李四

3王五3王五

NULLNULL5趙六

4、full join表示全鏈接,只要其中某個表存在匹配,FULL JOIN 關鍵字就會返回行。

select * from a full join b on a.id=b.id

1張三1張三

2李四2李四

3王五3王五

4趙六NULLNULL

NULLNULL5趙六

5、cross join鏈接用於生成兩張表的笛卡爾集。

select * from a cross join b

 

1張三1張三

2李四1張三

3王五1張三

4趙六1張三

1張三2李四

2李四2李四

3王五2李四

4趙六2李四

1張三3王五

2李四3王五

3王五3王五

4趙六3王五

1張三5趙六

2李四5趙六

3王五5趙六

4趙六5趙六

相關文章
相關標籤/搜索