--先造數據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趙六