--先造数据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赵六