SQLServer之多表联合查询

多表联合查询简介

定义:连接查询是关系型数据库最主要的查询,通过连接运算符可以实现多个表连接数据查询。

分类:内连接,外连接,全外连接。

内连接

定义

内联接使用比较运算符根据每个表的通用列中的值匹配两个表中的行。

语法

select 表1.*,表2.* from 表1 as a [wtih(锁)] inner join 表2 as b [wtih(锁)] on a.值 {= | != } b.值 [条件1] [where 条件] [group by 条件] [having 条件] [order by 条件];

语法注释

{}:大括号内的值必选一个,例如:选择=号。

[]:索引符号的值表示是可添加也可不添加的,例如:选择不添加[条件1]。

[条件1]:[条件1]=[and | or ] [a.值=b.值 | a.值!=b.值 | a.值=值 | a.值!=值 | b.值=值 | b.值!=值],例如:and a.值=b值,或者,or a.值等于b.值。

[where 条件]:where后跟表中数据的筛选条件,例如:where a.值=1。

[group by 条件]:group by后面跟分组条件,可以跟一个或者多个分组条件,例如:group by a.值,b.值。

[having 条件]:having后边主要是筛选group by条件分组后的结果,后面可以跟一个或者多个条件,例如:select max(a.id),min(b.name) from A as a inner join B as b on a.id=b.id group by a.id,b.name having a,id>1 and b.name=1。

[order by 条件]:order by后面跟排序条件,可以根据一个值或者多个值排序,例如:根据多个值排序,select a.* from A as a inner join B as b on a.id=b.id order by a.值 asc,b.值 desc。

示例:A表内连接B表,使用A表中的数据逐行匹配B表的中数据,匹配成功则返回,匹配失败则不返回值,匹配成功一共返回五行数据,where条件筛选返回五行数据,group by条件筛选返回两行数据,having条件筛选返回两行数据,order by条件筛选3大于1,则3在第一行,1在第二行。

外连接

分类

left outer join(左外连接)和right outer join(右连接)。

左外连接

定义

从表(右表)中的数据逐条匹配主表(左表)中的数据,如果匹配,如果右表匹配一行或者多行则将右表匹配值一行或者多行追加到左表匹配行输出到结果集,如果无匹配,NULL值追加到左表不匹配行输出到结果集。

语法

select 表1.*,表2.* from 表1 as a [wtih(锁)] left [outer] join 表2 as b [wtih(锁)] on a.值 {= | != } b.值 [条件1] [where 条件] [group by 条件] [having 条件] [order by 条件];

语法注释

{}:大括号内的值必选一个,例如:选择=号。

[]:索引符号的值表示是可添加也可不添加的,例如:选择不添加[条件1]。

[条件1]:[条件1]=[and | or ] [a.值=b.值 | a.值!=b.值 | a.值=值 | a.值!=值 | b.值=值 | b.值!=值],例如:and a.值=b值,或者,or a.值等于b.值。

[where 条件]:where后跟表中数据的筛选条件,例如:where a.值=1。

[group by 条件]:group by后面跟分组条件,可以跟一个或者多个分组条件,例如:group by a.值,b.值。

[having 条件]:having后边主要是筛选group by条件分组后的结果,后面可以跟一个或者多个条件,例如:select max(a.id),min(b.name) from A as a left outer join B as b on a.id=b.id group by a.id,b.name having a,id>1 and b.name=1。

[order by 条件]:order by后面跟排序条件,可以根据一个值或者多个值排序,例如:根据多个值排序,select a.* from A as a left outer join B as b on a.id=b.id order by a.值 asc,b.值 desc。

示例:A表左外连接B表,B表中数据逐行取出与A表中数据匹配,右表取出第一行数据1与A表逐行匹配,匹配到两行,将B表数据1追加到A表数据行输出到结果集,同理剩余的数据3和1匹配到三行数据,共匹配到五行数据输出,A中存在数据2与B表无匹配行,则将NULL值追加到A表数据2行输出,匹配的结果集和不匹配的结果集共七行数据输出到结果集。(where条件筛选后输出七行数据,group by条件筛选后会输出三行数据,having筛选后会输出三行数据,order by条件筛选后则会按照数据从大到小排列),依次显示不加筛选条件和添加所有筛选条件的结果。

右外连接

定义

从表(左表)中的数据逐条匹配主表(右表)中的数据,如果匹配,如果左表匹配一行或者多行则将左表匹配值一行或者多行追加到右表匹配行输出到结果集,如果无匹配,NULL值追加到右表不匹配行输出到结果集。

语法

select 表1.*,表2.* from 表1 as a [wtih(锁)] right [outer] join 表2 as b [wtih(锁)] on a.值 {= | != } b.值 [条件1] [where 条件] [group by 条件] [having 条件] [order by 条件];

语法注释

{}:大括号内的值必选一个,例如:选择=号。

[]:索引符号的值表示是可添加也可不添加的,例如:选择不添加[条件1]。

[条件1]:[条件1]=[and | or ] [a.值=b.值 | a.值!=b.值 | a.值=值 | a.值!=值 | b.值=值 | b.值!=值],例如:and a.值=b值,或者,or a.值等于b.值。

[where 条件]:where后跟表中数据的筛选条件,例如:where a.值=1。

[group by 条件]:group by后面跟分组条件,可以跟一个或者多个分组条件,例如:group by a.值,b.值。

[having 条件]:having后边主要是筛选group by条件分组后的结果,后面可以跟一个或者多个条件,例如:select max(a.id),min(b.name) from A as a right outer join B as b on a.id=b.id group by a.id,b.name having a,id>1 and b.name=1。

[order by 条件]:order by后面跟排序条件,可以根据一个值或者多个值排序,例如:根据多个值排序,select a.* from A as a right outer join B as b on a.id=b.id order by a.值 asc,b.值 desc。

示例:A表右外连接B表,A表中数据逐行取出与B表中数据匹配,左表取出第一行数据1与B表逐行匹配,匹配到两行,将A表数据1追加到B表数据行输出到结果集,同理剩余的数据1和3匹配到三行数据,共匹配到五行数据输出,A中存在数据2与B表无匹配行,自动过滤掉并不添加输出,B表数据全部匹配完成,不匹配的结果集为零行,匹配的结果集和不匹配的结果集共五行数据输出到结果集。(where条件筛选后输出五行数据,group by条件筛选后会输出两行数据,having筛选后会输出两行数据,order by条件筛选后则会按照数据从大到小排列),依次显示不加筛选条件和添加所有筛选条件的结果。

全外连接

定义

全外连接又称为完全外连接,该连接查询方式返回两个连接中所有的记录数据。根据匹配条件,如果满足匹配条件时,则返回匹配的一行或者多行数据;如果不满足匹配条件时,同样返回数据,但在相应的列中填入NULL,全外连接返回的结果集中包含了两个完全表的所有数据。全外连接关键字FULL OUTER JOIN。

语法

select 表1.*,表2.* from 表1 as a [wtih(锁)] full [outer] join 表2 as b [wtih(锁)] on a.值 { = | != } b.值 [条件1] [where 条件] [group by 条件] [having 条件] [order by 条件];

语法注释

{}:大括号内的值必选一个,例如:选择=号。

[]:索引符号的值表示是可添加也可不添加的,例如:选择不添加[条件1]。

[条件1]:[条件1]=[and | or ] [a.值=b.值 | a.值!=b.值 | a.值=值 | a.值!=值 | b.值=值 | b.值!=值],例如:and a.值=b值,或者or a.值等于b.值。

[where 条件]:where后跟表中数据的筛选条件,例如:where a.值=1。

[group by 条件]:group by后面跟分组条件,可以跟一个或者多个分组条件,例如:group by a.值,b.值。

[having 条件]:having后边主要是筛选group by条件分组后的结果,后面可以跟一个或者多个条件,例如:select max(a.id),min(b.name) from A as a full outer join B as b on a.id=b.id group by a.id,b.name having a,id>1 and b.name=1。

[order by 条件]:order by后面跟排序条件,可以根据一个值或者多个值排序,例如:根据多个值排序,select a.* from A as a full outer join B as b on a.id=b.id order by a.值 asc,b.值 desc。

示例:全外连接A表与B表,首先输出所有符合条件的数据,A表中数据逐行取出和B表中数据逐行匹配,存在1和3的数据匹配行,匹配成功输出5行数据,然后输出不符合条件的行,A中存在2行不符合条件的值,B表数据全部匹配成功无不符合条件的值,返回A中不符合条件的值并将其它列值置为NULL输出2行数据,总共输出5加2共七行数据。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.SQL Server 2014简介.mp4 10.SQL Server 2014定义表主键、外键.mp4 11.SQL Server 2014新增表记录.mp4 12.SQL Server 2014查询表记录.mp4 13.SQL Server 2014修改表记录.mp4 14.SQL Server 2014删除表记录.mp4 15.SQL Server 2014条件限制where.mp4 16.SQL Server 2014 BETWEEN语法.mp4 17.SQL Server 2014子查询IN.mp4 18.SQL Server 2014子查询EXISTS.mp4 19.SQL Server 2014返回记录排序.mp4 2.SQL Server 2014硬件和软件要求.mp4 20.SQL Server 2014关联查询.mp4 21.SQL Server 2014聚合函数AVG() SUM().mp4 22.SQL Server 2014聚合函数MIN() MAX().mp4 23.SQL Server 2014COUNT和SUM()函数.mp4 24.SQL Server 2014 LEN()函数.mp4 25.SQL Server 2014随机数的产生.mp4 26.SQL Server 2014 GETDATE() GETUTCDATE().mp4 27.SQL Server 2014 CONVERT函数.mp4 28.SQL Server 2014 DATEDIFF函数.mp4 29.SQL Server 2014 DATEPART函数.mp4 3.SQL Server 2014数据库安装.mp4 30.SQL Server 2014 CHARINDEX函数.mp4 31.SQL Server 2014 STUFF函数.mp4 32.SQL Server 2014 SUBTRING函数.mp4 33..SQL Server 2014 LEFT()和RIGHT函数.mp4 34.SQL Server 2014 LTRIM()和RTRIM()函数.mp4 35.SQL Server 2014 UPPER()和LOWER()函数.mp4 36.SQL Server 2014 REPLACE()函数.mp4 37.SQL Server 2014 REPLICATE和SPACE()函数.mp4 38.SQL Server 2014 REVERSE函数.mp4 39.SQL Server 2014 CAST函数.mp4 4.SQL Server 2014数据库创建.mp4 40.SQL Server 2014 CASE函数.mp4 5.SQL Server 2014数据库修改与删除.mp4 6.SQL Server 2014数据库备份与还原.mp4 7.SQL Server 2014数据类型.mp4 8.SQL Server 2014新建表.mp4 9.SQL Server 2014修改、删除表结构.mp4 PPT SQL Server 2014简介 SQL Server 2014数据库备份与还原 SQL Server 2014数据库创建 SQL Server 2014数据库修改与删除 SQL Server 2014数据类型
SQL Server 2014基础入门视频教程 (40集,含课件) 1.SQL Server 2014简介.mp4 2.SQL Server 2014硬件和软件要求.mp4 3.SQL Server 2014数据库安装.mp4 4.SQL Server 2014数据库创建.mp4 5.SQL Server 2014数据库修改与删除.mp4 6.SQL Server 2014数据库备份与还原.mp4 7.SQL Server 2014数据类型.mp4 8.SQL Server 2014新建表.mp4 9.SQL Server 2014修改、删除表结构.mp4 10.SQL Server 2014定义表主键、外键.mp4 11.SQL Server 2014新增表记录.mp4 12.SQL Server 2014查询表记录.mp4 13.SQL Server 2014修改表记录.mp4 14.SQL Server 2014删除表记录.mp4 15.SQL Server 2014条件限制where.mp4 16.SQL Server 2014 BETWEEN语法.mp4 17.SQL Server 2014子查询IN.mp4 18.SQL Server 2014子查询EXISTS.mp4 19.SQL Server 2014返回记录排序.mp4 20.SQL Server 2014关联查询.mp4 21.SQL Server 2014聚合函数AVG() SUM().mp4 22.SQL Server 2014聚合函数MIN() MAX().mp4 23.SQL Server 2014COUNT和SUM()函数.mp4 24.SQL Server 2014 LEN()函数.mp4 25.SQL Server 2014随机数的产生.mp4 26.SQL Server 2014 GETDATE() GETUTCDATE().mp4 27.SQL Server 2014 CONVERT函数.mp4 28.SQL Server 2014 DATEDIFF函数.mp4 29.SQL Server 2014 DATEPART函数.mp4 30.SQL Server 2014 CHARINDEX函数.mp4 31.SQL Server 2014 STUFF函数.mp4 32.SQL Server 2014 SUBTRING函数.mp4 33..SQL Server 2014 LEFT()和RIGHT函数.mp4 34.SQL Server 2014 LTRIM()和RTRIM()函数.mp4 35.SQL Server 2014 UPPER()和LOWER()函数.mp4 36.SQL Server 2014 REPLACE()函数.mp4 37.SQL Server 2014 REPLICATE和SPACE()函数.mp4 38.SQL Server 2014 REVERSE函数.mp4 39.SQL Server 2014 CAST函数.mp4 40.SQL Server 2014 CASE函数.mp4

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值