SQL SERVER实现连接与合并查询


Posted in SQL Server onFebruary 24, 2022

创建测试表MyStudentInfo

CREATE table MyStudentInfo
(
Id int not null primary key,
Name varchar(16),
Age int,
Gender varchar(2),
Phone varchar(16),
Address varchar(50),
GradeId int
)

联合插入多条数据

INSERT INTO MyStudentInfo
SELECT 1,'张三',20,'1','15801258912','上海',1 UNION
SELECT 2,'李四',22,'1','12345678901','北京',1 UNION
SELECT 3,'王五',16,'1','13976891234','天津',2 UNION
SELECT 4,'赵六',19,'1','18676891234','重庆',3 UNION
SELECT 5,'小红',21,'2','17776891234','广州',4 UNION
SELECT 6,'小王',25,'2','13176891234','深圳',5 UNION
SELECT 7,'小刘',18,'2','13374591234','南京',6 UNION
SELECT 8,'小张',16,'1','13974596734','长沙',6 UNION
SELECT 9,'小罗',27,'1','13175122786','武汉',7 UNION
SELECT 10,'小袁',21,'2','17715872346','石家庄',8

创建测试表GradeInfo

CREATE table GradeInfo
(
Id int not null primary key,
GradeName varchar(16)
)

联合插入多条数据

INSERT INTO GradeInfo
SELECT 1,'.NET' UNION
SELECT 2,'Android' UNION
SELECT 3,'PHP' UNION
SELECT 4,'UI' UNION
SELECT 5,'HTML5' UNION
SELECT 6,'JAVA' UNION
SELECT 9,'HADOOP' UNION
SELECT 10,'大数据'

内链接

内链接是从结果表中删除其他被链接表中没有匹配的所有行,所以我们说内链接可能丢失数据

SELECT s.Id,s.Name,s.Age,s.Gender,s.Phone,s.GradeId,g.GradeName
FROM MyStudentInfo s INNER JOIN GradeInfo g ON s.GradeId=g.Id

SQL SERVER实现连接与合并查询

外部链接

左外联接,关键字LEFT JOIN

左外联接,结果集中包括左表中的所有行,如果左表的某一行在右表中没有匹配行,则在关联的结果集行中,

来自右表的所有选择列表均为NULL

SELECT s.Id,s.Name,s.Age,s.Gender,s.Phone,s.GradeId,g.GradeName
FROM MyStudentInfo s LEFT JOIN GradeInfo g ON s.GradeId=g.Id

SQL SERVER实现连接与合并查询

右外联接

GIGHT JOIN进行联接

是左外联接的反向联接,将返回右表的所有行,如果右表的某一行在左表中没有匹配行,则将为左表返回NULL

SELECT s.Id,s.Name,s.Age,s.Gender,s.Phone,s.GradeId,g.GradeName
FROM MyStudentInfo s RIGHT JOIN GradeInfo g ON s.GradeId=g.Id

SQL SERVER实现连接与合并查询

完整外联接

关键字是FULL JOIN

完整外联接使用了FULL JOIN进行联接,当某一行在另一表中没有匹配行,另一表的选择列表将返回NULL

SELECT s.Id,s.Name,s.Age,s.Gender,s.Phone,s.GradeId,g.GradeName
FROM MyStudentInfo s FULL JOIN GradeInfo g ON s.GradeId=g.Id

SQL SERVER实现连接与合并查询

交叉联接(笛卡尔积)

CORSS JOIN 没有where 也没有on,返回行数是两表行数的乘积

SELECT s.Id,s.Name,s.Age,s.Gender,s.Phone,s.GradeId,g.GradeName
FROM MyStudentInfo s CROSS JOIN GradeInfo g

SQL SERVER实现连接与合并查询

UNION:UNION操作符用于合并两个或多个 SELECT 语句的结果集

UNION必须遵循

  • 1.两个SELECT语句选择列表中的列数目必须一样,而且对应位置上的列的数据类型必须相同或者兼容,每条 SELECT 语句中的列的顺序必须相同
  • 2.UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名
  • 3.union默认自动去除重复行
  • 4.如果需要手动排序,order by语句必须加在最后一个select语句之后,但是他所使用的排序列名必须是第一个select选择列表中的列名
SELECT Age,Name FROM MyStudentInfo
UNION
SELECT Id,GradeName FROM GradeInfo
ORDER BY Age DESC

SQL SERVER实现连接与合并查询

UNION ALL

  • 1.加上ALL关键字之后,功能就是不删除重复行,也不对行进行自动排序
  • 2.如果希望把不同数据类型的字段合并查询,必须进行类型转换使其相对应的数据类型相同或者兼容
  • 3.当合并两个表,列数不同时.只要向其中一个表源中添加列,就可以使其两个表的列数相同
SELECT Age,Name,Address FROM MyStudentInfo
UNION ALL
SELECT Id,GradeName,NULL FROM GradeInfo
ORDER BY Age DESC

SQL SERVER实现连接与合并查询

UNION和联接查询有什么区别

  • 1.在合并中,两个表的数量和数据类型必须相同 ; 在联接中,一个表的行可能与另一个表的行有很大的区别
  • 2.在合并中,行的数量是两个表行的"和" ; 在联接中,行的最大数目是他们的"乘积"

到此这篇关于SQL SERVER实现连接与合并查询的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

SQL Server 相关文章推荐
Sql-Server数据库单表查询 4.3实验课
Apr 05 SQL Server
【HBU】数据库第四周 单表查询
Apr 05 SQL Server
SQL SERVER中常用日期函数的具体使用
Apr 08 SQL Server
sql中mod()函数取余数的用法
May 29 SQL Server
SqlServer数据库远程连接案例教程
Jul 15 SQL Server
SQL Server表分区删除详情
Oct 16 SQL Server
SQL Server数据库基本概念、组成、常用对象与约束
Mar 20 SQL Server
SQL Server的存储过程与触发器以及系统函数和自定义函数
Apr 10 SQL Server
SQL Server中搜索特定的对象
May 25 SQL Server
SQL使用复合索引实现数据库查询的优化
May 25 SQL Server
详解SQL报错盲注
Jul 23 SQL Server
SqlServer常用函数及时间处理小结
May 08 SQL Server
SQLServer中exists和except用法介绍
SQL Server2019数据库备份与还原脚本,数据库可批量备份
SQL中的三种去重方法小结
Nov 01 #SQL Server
SQL Server表分区删除详情
Spark SQL 2.4.8 操作 Dataframe的两种方式
Windows环境下实现批量执行Sql文件
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
Sep 04 #SQL Server
You might like
基于文本的留言簿
2006/10/09 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
详解jQuery中的事件
2016/12/14 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
Python 实现进度条的六种方式
2021/01/06 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
酒店销售经理岗位职责
2014/01/31 职场文书
社区母亲节活动方案
2014/03/05 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
指导教师推荐意见
2015/06/05 职场文书
董事长秘书工作总结
2015/08/14 职场文书
浅谈JavaScript作用域
2021/12/06 Javascript
Redis实战高并发之扣减库存项目
2022/04/14 Redis
python语言中pandas字符串分割str.split()函数
2022/08/05 Python