SQL Server链接表和子查询

本文详细介绍了SQL Server中的各种连接方式,包括内连接、左连接、右连接、全外连接、交叉连接和自连接,以及它们在数据查询中的应用。此外,还探讨了子查询的概念,包括嵌套子查询和相关子查询,阐述了它们在SQL语句中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL Server链接表和子查询
一、 介绍:
在关系数据中,数据分布在多个逻辑表中时,要获取完整且有意义的数据时,就需要使用链接来查询这些表中的数据,在SQL Server数据库中拥有多种连接方式,有内连接、左连接、右链接、全外链接以及交叉链接,每种的链接类型指定SQL Server如何使用查询一个表中的数据来选择另一个表中的数据。

二、 内连接
内连接是SQL Server数据库中最常用的链接之一。内部链接子句用来查询来自两个或者多个相关表的数据,且其子句inner join将表1的每一行和表2的每一行来进行比较,一查找到满足链接谓词的所有行,如果链接谓词的计算结果为True,则匹配成功,反之则匹配失败。

三、 左连接
和内连接使用方式相同,用到的子句为left join,用来查询来自多个表的数据,返回左表中的所有行数以及右表中所匹配的行数,如果在右表中找不到匹配的行数,则会使用null来代替显示,如果一对行导致连接谓词计算为 TRUE ,则将组合这些行中的列值以形成新行,然后将其包含在结果集 中。 如果左表( T1 )中的行没有与来自 T2 表的任何匹配行,则查询将左表中的行的列值与来自右表的每个列 值的 NULL 组合。 简而言之, LEFT JOIN 子句返回左表( T1 )中的所有行以及右表( T2 )中匹配的行或 NULL值。

四、 右链接
和上诉左连接使用方式相似,用到子句right join,RIGHT JOIN 子句组合来自两个或多个表的数据。 RIGHT JOIN 开始从右表中选择数据并与左表中的行 匹配。 RIGHT JOIN 返回一个结果集,该结果集包含右表中的所有行,无论是否具有左表中的匹配行。 如果右表中的行没有来自右表的任何匹配行,则结果集中右表的列将使用 NULL值。

五、 交叉链接
其使用方法和上诉所用到的链接有所不同,运用到子句cross join链接两个或者多个不相关的表,CROSS JOIN 将表1中的每一行与表2中的每一行连接起来。 换句话说,交叉连接返回两个表中行的笛卡尔积。其子句与INNER JOIN或LEFT JOIN不同,交叉连接不会在连接的表之间建立关系。CROSS JOIN 从第一个表(T1)获取一行,然后为第二个表(T2)中的每一行创建一个新行。 然后它对第一个 表(T1)中的下一行执行相同操作,依此类推。

六、 自连接
其链接方法和上面几种链接有所不同,自联接用于将表连接到自身也就是同一个表中,它对于查询分层数据或比较同一个表中的行很有用。 自联接使用内连接或左连接子句。 由于使用自联接的查询引用同一个表,因此表别名用于为查询中的表 分配不同的名称。

七、 全外链接
FULL OUTER JOIN当左表或右表中存在匹配项时,该命令将返回所有行,

八、 子查询
子查询是嵌套在另一个语句中的查询。就比如:SELECT,INSERT,UPDATE以及DELETE。且子查询可以嵌套在另一个子查询中,在SQL Server中最多支持 32 个嵌套级别,也被称之为嵌套子查询,还有其相关子查询,相关子查询是使用外部查询的值的子查询。用另一种含义来说,它取决于外部查询的值。 由于这种依赖性,相关子查询不能作为简单子查询独立执行。 此外,对外部查询评估的每一行重复执行一次相关子查询。 相关子查询也称为重复子查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值