sql中的内连接、左连接、右连接(join on)

83 阅读2分钟

数据举例:

image.png

image.png

两表人为连接后:

image.png

一 、表连接(内) join on输出是黄色部分,两个表的共有部分

SQL语法:

Select From 表1 a join 表2 b on a.关键字段 = b.关键字段(正常情况下关键字段是身份证号)

select from dbo.英语证书表 a join dbo.计算机证书表 b

n a.姓名=b.姓名

二 、表连接( left join on输出是见下图

SQL语法:

Select From 表1 a left join 表2 b on a.关键字段 = b.关键字段

select a.姓名,英语证书,计算机证书 from dbo.英语证书表 a left join dbo.计算机证书表 b on a.姓名=b.姓名

image.png

三 、表连接(右)

right join on输出是见下图

SQL语法:

Select From 表1 a right join 表2 b on a.关键字段 = b.关键字段

select b.姓名,英语证书,计算机证书 from dbo.英语证书表 a right join dbo.计算机证书表 b

on a.姓名=b.姓名

image.png

四 、表连接(全)

full join on输出是见下图

SQL语法:

Select From 表1 a full join 表2 b on a.关键字段 = b.关键字段

select a.姓名,b.姓名,英语证书,计算机证书 from dbo.英语证书表 a full join dbo.计算机证书表 b

on a.姓名=b.姓名

image.png

五 、表连接( full join on的应用

SQL语法:

Select From 表1 a full join 表2 b on a.关键字段=b.关键字段

(正常情况下关键字段是身份证号,此处为了好理解用的姓名,因为在此表中,姓名也能实现唯一性)

应 用

谁没有过英语四级----where

--第一步使用全连接full join

--第二部加条件where

注意:为了区分两个表的姓名,我们在数据库内进行了修改

修改的方法:直接点选列名,重新命名

select * from dbo.英语证书表 a full join dbo.计算机证书表 b

on a.姓名英语证书表=b.姓名计算机证书

where 英语证书 is null

image.png

注意: 连接语句中尽量用正向的条件语句(like is null之类的 ;不用not like 和 is not null语句)

注意: where中需要两个以上条件(用and \or特别要注意逻辑关系)才能执行出来的结果,必须用括号()