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赵六

相关文章
相关标签/搜索