SQL Server链接表和子查询

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 返回一个结果集,该结果集包含右表中的所有行,无论是否具有左表中的匹配行。 如果右表中的行没有来自右表的任何匹配行,则结果集中右表的列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Oracle中,UPDATE子查询是一种在UPDATE语句中使用SELECT语句的方法,用于更新表中的数据。但是在使用UPDATE子查询时,可能会遇到ORA-01779错误代码,提示"cannot modify a column which maps to a non-key-preserved table"。这个错误通常是由于子查询的连接方式不符合Oracle的限制所引起的。 根据引用的解释,Oracle要确保连接后更新的内容可以写入一张表中,所以连接方式必须是1对N或者1对1的连接。这样才能确保连接后的结果集数量和事实表一致,从而使得对连接后子查询的更新可以顺利地更新到事实表中。 为了解决ORA-01779错误,您可以检查子查询中的连接方式是否满足Oracle的要求。确保连接的表是主键保留表或具有唯一约束的表。如果连接方式不符合要求,您可以修改连接的方式,以满足Oracle的限制。另外,还可以考虑使用其他方法来更新表中的数据,如使用临时表或联接更新等。 总结起来,当在Oracle中使用UPDATE子查询时,需要确保连接方式满足Oracle的限制,即1对N或者1对1的连接方式。如果遇到ORA-01779错误,可以检查连接的表是否是主键保留表或具有唯一约束,并相应地修改连接方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [sqlserver做链接服务器连接Oracle完整版教程](https://download.csdn.net/download/pxfpxf/88244026)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [UPDATE语句-简单形式-子查询形式](https://blog.csdn.net/weixin_39829574/article/details/116415849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [UPDATE子查询的ORA-1779错误](https://blog.csdn.net/weixin_29614359/article/details/116317170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值