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 过滤索引提高查询语句的性能分析
Jul 15 SQL Server
SQL SERVER触发器详解
Feb 24 SQL Server
sql时间段切分实现每隔x分钟出一份高速门架车流量
Feb 28 SQL Server
SQL Server中常用截取字符串函数介绍
Mar 16 SQL Server
SQL CASE 表达式的具体使用
Mar 21 SQL Server
如何使用SQL Server语句创建表
Apr 12 SQL Server
SQL Server 忘记密码以及重新添加新账号
Apr 26 SQL Server
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
May 25 SQL Server
一次SQL查询优化原理分析(900W+数据从17s到300ms)
Jun 10 SQL Server
SQL Server数据库备份和恢复数据库的全过程
Jun 14 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
Content-type 的说明
2006/10/09 PHP
PHP中for循环语句的几种变型
2006/11/26 PHP
PHP自动重命名文件实现方法
2014/11/04 PHP
PHP实现带进度条的Ajax文件上传功能示例
2019/07/02 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python中设置变量访问权限的方法
2015/04/27 Python
Python编程之多态用法实例详解
2015/05/19 Python
Python 数据结构之旋转链表
2017/02/25 Python
python多进程实现文件下载传输功能
2018/07/28 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
python各类经纬度转换的实例代码
2019/08/08 Python
通过cmd进入python的步骤
2020/06/16 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
什么是makefile? 如何编写makefile?
2012/08/08 面试题
军训鉴定表自我鉴定
2014/02/13 职场文书
升旗仪式主持词
2014/03/19 职场文书
经营目标管理责任书
2014/07/25 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
Python竟然能剪辑视频
2021/05/25 Python
MySQL中order by的执行过程
2022/06/05 MySQL
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android