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 相关文章推荐
2021-4-5课程——SQL Server查询【3】
Apr 05 SQL Server
SQL 窗口函数实现高效分页查询的案例分析
May 21 SQL Server
如何有效防止sql注入的方法
May 25 SQL Server
sql查询结果列拼接成逗号分隔的字符串方法
May 25 SQL Server
解决sql server 数据库,sa用户被锁定的问题
Jun 11 SQL Server
SqlServer数据库远程连接案例教程
Jul 15 SQL Server
利用 SQL Server 过滤索引提高查询语句的性能分析
Jul 15 SQL Server
SQL SERVER存储过程用法详解
Feb 24 SQL Server
SQL Server使用导出向导功能
Apr 08 SQL Server
SQL Server Agent 服务无法启动
Apr 20 SQL Server
SQL Server #{}可以防止SQL注入
May 11 SQL Server
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
May 25 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
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
python使用turtle库绘制时钟
2020/03/25 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
优秀毕业生自我鉴定
2014/01/19 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
面试感谢信范文
2015/01/22 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android