SQL Server中的外连接(左连接(left join)右连接(right join))

2024-04-24 16:18

本文主要是介绍SQL Server中的外连接(左连接(left join)右连接(right join)),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

零、码仙励志

一、建库和建表

二、外连接的用法

1.左连接(left join)

1.解释:

2.运行原理:

3.实例演示:

2.右连接(right join)

1.解释:

2.实例演示:


零、码仙励志

当你持续的说你非常忙碌,就永远不会得到空闲,当你持续的说你没有时间,就永远不会得到时间,当你持续的说这件事明天再做,你的明天就永远不会来

一、建库和建表

create database scort
use scort
create table emp
(empno int primary key,ename nvarchar(10),sal int,deptno int
)
insert into emp values (7369,'smith',3000,20);
insert into emp values (7499,'allen',1500,10);
insert into emp values (7521,'ward',2850,30);
insert into emp values (7566,'jones',2000,30);
insert into emp values (7654,'martin',5000,10);
insert into emp values (7698,'blake',1800,30);create table dept
(deptno int primary key,dname nvarchar(10),loc nvarchar(10)
)
insert into dept values (10,'accounting','new york');
insert into dept values (20,'research','dallas');
insert into dept values (30,'sales','chicago');
insert into dept values (40,'operations','boston');create table salgrade
(grade int primary key,lostl int,hisal int
)
insert into salgrade values (1,700,1200);
insert into salgrade values (2,1201,1400);
insert into salgrade values (3,1401,2000);
insert into salgrade values (4,2001,3000);
insert into salgrade values (5,3001,6000);

二、外连接的用法

解释:将两个表或两个以上的表以一定的连接条件连接起来,不但返回满足连接条件的记录,而且会返回部分不满足条件的记录。

1.左连接(left join)

1.解释:

将两个表或两个以上的表以一定的连接条件连接起来,不但返回满足连接条件的记录,而且会返回左表不满足条件的记录。

2.运行原理:

1.用左表的第一行分别和右表的所有行进行联接,  如果有匹配的行,则一起输出,如果右表有多行匹配,则结果集输出多行,如果没有匹配行,则结果集中只输出一行,该输出行左边为左表第一行内容,右边全部输出null

2.然后再用左表第二行和右边所有行进行联接,如果有匹配的行,则一起输出,如果右表有多行匹配,则结果集输出多行,  如果没有匹配行,则结果集中只输出一行,该输出行左边为左表第二行内容,右边全部输出null

3.以此类推,直至左边所有行连接完毕

4.因为右边很可能出现有多行和左边的某一行匹配,所以左联接产生的结果集的行数很可能大于left join左边表的记录的总数

3.实例演示:

两张表连接:

select * from emp "E"left join dept "D"on "E".deptno="D".deptno

select * from dept "D"left join emp "E"on "E".deptno="D".deptno

 

三张表连接: 

select * from emp "E"left join dept "D"on "E".deptno="D".deptnoleft join  salgrade "S"on "E".sal>"S".lostl and "E".sal<"S".hisal

select * from dept "D"left join emp "E"on "E".deptno="D".deptnoleft join  salgrade "S"on "E".sal>"S".lostl and "E".sal<"S".hisal

 

2.右连接(right join)

1.解释:

右连接与左连接类似,这里就不再赘述

2.实例演示:

两张表连接:

select * from emp "E"right join dept "D"on "E".deptno="D".deptno

select * from dept "D"right join emp "E"on "E".deptno="D".deptno

 

 三张表连接: 

select * from emp "E"right join dept "D"on "E".deptno="D".deptnoright join  salgrade "S"on "E".sal>"S".lostl and "E".sal<"S".hisal

select * from dept "D"right join emp "E"on "E".deptno="D".deptnoright join  salgrade "S"on "E".sal>"S".lostl and "E".sal<"S".hisal

 

本篇博客来自于郝斌老师视频教程的总结以及笔记的整理,仅供学习交流,切勿用于商业用途,如有侵权,请联系博主删除,博主QQ:194760901 

这篇关于SQL Server中的外连接(左连接(left join)右连接(right join))的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/932218

相关文章

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

java连接opcua的常见问题及解决方法

《java连接opcua的常见问题及解决方法》本文将使用EclipseMilo作为示例库,演示如何在Java中使用匿名、用户名密码以及证书加密三种方式连接到OPCUA服务器,若需要使用其他SDK,原理... 目录一、前言二、准备工作三、匿名方式连接3.1 匿名方式简介3.2 示例代码四、用户名密码方式连接4

如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

《如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socketreadtimedout的问题》:本文主要介绍解决Druid线程... 目录异常信息触发场景找到版本发布更新的说明从版本更新信息可以看到该默认逻辑已经去除总结异常信息触发场景复

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

MySQL 表的内外连接案例详解

《MySQL表的内外连接案例详解》本文给大家介绍MySQL表的内外连接,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录表的内外连接(重点)内连接外连接表的内外连接(重点)内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock