连接表也可以叫多表连接

在关系数据库中,数据分布在多个逻辑表中,要获取完整有意义的数据集。需要使用连接来查询这些表中的数据。SQL Server连接包括
内连接、左连接、右连接、全外连接和交叉连接

内连接、左连接、右连接、交叉连接所有的数据库都实用,就全外连接只是SQL Server数据库的写法,不一定所有数据库都实用

内连接:用于查询来自两个或多个相关表的数据 (见图2)

图表 1  内连接的图表   这个图表明两张表能关联上的显示出来,管理不上的则不显示

关键字:inner join  on

注意:使用inner join不能少on,少了on语句就报错

图表 2

Inner join后面跟的是第二张表

On作为关键字不能少,on后面跟的是关联条件,也就是用哪个字段去关联两张表。注意:关联的字段也不可以随便去写,一定要使用两张表共用的字段。如果把on
p.brand-id=b.brand-id改成on p.brand_name=b.brand_name则没有数据,因为两张表中间没有相关联的字段(见图片3)

图表 3

左连接:用于查询来自多个表的数据,它返回左表中所有行和右表中匹配的行,如果右表找不到匹配的行,则有null来代替显示(见图片4)

图表 4

关键字:left join  on

例子:见图表5

图表 5

在图表5里面加上一个where条件,直接查询出来没有销售给任何客户的产品(见图表6)

图表 6

在图表6我们写了两个关联条件

On后面是一个关联条件,where是关联数据之后的结果集进行一个筛选的关联条件

也可以直接给他定一个值(见图表7)这是用where条件去筛选

图表 7

图表 8

图片8不用where条件去关联,在on关联条件后面给他定一个值,查出的结果有许多null,就五条数据是我们给他定的值,说明我们在后面给他加上order_id给他定了一个值,那on这一段就作为一个关联的条件,它除了要和关联的数据相等之外,它还有等于我们在后面给他定的一个值,只有满足这个条件

图表 9

右连接:把右表的数据显示出来,左表的数据更关联上的显示出来,和左连接是一个相反的操作(见图表11)

关键字:right join

图表 10

图表 11

交叉连接:连接两个或多个不相关的表,交叉连接返回两个表中行的笛卡尔积

笛卡尔积就是两个数像乘,他没有on的条件,与inner join和left join不同,交叉连接不会在连接的表之间建立关系[
注:如果遇上两个大的笛卡尔积那么数据库会被卡死](见图表12)

关键字:cross join

图表 12

不想让两张表格向乘,就加上条件,就不会笛卡尔积了(见图表13)

图表 13

图表 14

两种笛卡尔积的写法效果是一样的,只是一个用cross隔开,一个用“,”逗号隔开

自连接:一个表自己跟自己关联,他对查询分层数据或比较同一个表的行很有用,分层数据就是一个表里面分几个层级,使用内连接或左连接,使用自身连接查询同一个表,但是要给这个表起不同的别名
sql才会生效,同名则会报错

例一:

查询员工‘Houston’的经理叫什么

图表 15   先分开查询出来

图表 16   用到内连接查询数据

全外连接:当左表或右表存在匹配项时,该命令将返回所有行。所有行就是匹配上的,匹配不上的都会显示  [也就是把左连接和右连接组合起来,效果差不多]

关键字:full outer join

图表 17 

查询出两张表格的数据,在用全外连接去连接两张表格的数据

图表 18

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信