千家信息网

SQL SERVER如何实现连接与合并查询

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了SQL SERVER如何实现连接与合并查询,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。创建测试表MyStudent
千家信息网最后更新 2026年11月02日SQL SERVER如何实现连接与合并查询

这篇文章主要介绍了SQL SERVER如何实现连接与合并查询,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

创建测试表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 MyStudentInfoSELECT 1,'张三',20,'1','15801258912','上海',1 UNIONSELECT 2,'李四',22,'1','12345678901','北京',1 UNIONSELECT 3,'王五',16,'1','13976891234','天津',2 UNIONSELECT 4,'赵六',19,'1','18676891234','重庆',3 UNIONSELECT 5,'小红',21,'2','17776891234','广州',4 UNIONSELECT 6,'小王',25,'2','13176891234','深圳',5 UNIONSELECT 7,'小刘',18,'2','13374591234','南京',6 UNIONSELECT 8,'小张',16,'1','13974596734','长沙',6 UNIONSELECT 9,'小罗',27,'1','13175122786','武汉',7 UNIONSELECT 10,'小袁',21,'2','17715872346','石家庄',8

创建测试表GradeInfo

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

联合插入多条数据

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

内链接

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

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

外部链接

左外联接,关键字LEFT JOIN

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

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

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

右外联接

GIGHT JOIN进行联接

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

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

完整外联接

关键字是FULL JOIN

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

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

交叉联接(笛卡尔积)

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

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

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

UNION必须遵循

  • 1.两个SELECT语句选择列表中的列数目必须一样,而且对应位置上的列的数据类型必须相同或者兼容,每条 SELECT 语句中的列的顺序必须相同

  • 2.UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名

  • 3.union默认自动去除重复行

  • 4.如果需要手动排序,order by语句必须加在最后一个select语句之后,但是他所使用的排序列名必须是第一个select选择列表中的列名

SELECT Age,Name FROM MyStudentInfoUNIONSELECT Id,GradeName FROM GradeInfoORDER BY Age DESC

UNION ALL

  • 1.加上ALL关键字之后,功能就是不删除重复行,也不对行进行自动排序

  • 2.如果希望把不同数据类型的字段合并查询,必须进行类型转换使其相对应的数据类型相同或者兼容

  • 3.当合并两个表,列数不同时.只要向其中一个表源中添加列,就可以使其两个表的列数相同

SELECT Age,Name,Address FROM MyStudentInfoUNION ALLSELECT Id,GradeName,NULL FROM GradeInfoORDER BY Age DESC

UNION和联接查询有什么区别

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

  • 2.在合并中,行的数量是两个表行的"和" ; 在联接中,行的最大数目是他们的"乘积"

感谢你能够认真阅读完这篇文章,希望小编分享的"SQL SERVER如何实现连接与合并查询"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

数据 两个 外联 语句 相同 类型 结果 链接 查询 篇文章 选择 一行 关键 关键字 排序 乘积 同时 多条 数目 数量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 博彦科技互联网金融 互联网科技公司的优势 互联网巨头科技公司 互联网与科技金融数据 互联网金融公司科技 平安科技 互联网 菲比寻常互联网科技 国外互联网科技网站 现代科技和互联网有关系吗 深圳市罗太互联网科技有限公司 区块链结合互联网科技 黑科技 体验场景 互联网大会 广州百诚互联网科技有限公司官网 宁波跨境商互联网科技有限公司 萌小萌互联网科技河南有限公司 吉林省码上互联网科技电话 艺电能源互联网科技有限公司招聘 山东蛋芒互联网科技有限公司 高科技和互联网的现代国家 互联网科技工作委员会副主任毛军 互联网科技巨头监管 上海致骋互联网科技 互联网金融科技公司干啥的 互联网还是高科技吗 东莞新华互联网科技学校 威龙国际互联网科技公司 陕西云淼互联网科技公司 山东蛋芒互联网科技有限公司 如何强化互联网金融科技
0