数据库之左外连接、右外连接、全外连接

【十一】【SQL】外连接(左外连接,右外连接) 数据库中的外连接(Outer Join)用于连接两个表,并包括两个表中的匹配行以及左表(LEFT JOIN)或右表(RIGHT JOIN)中未匹配的行。:返回左表(FROM子句中第一个表)的所有行,即使在右表中没有匹配的行。如果右表中没有匹配的行,则结果集中右表的部分将包含NULL值。:返回右表(JOIN子句中指定的表)的所有行,即使在左表中没有匹配的行。如果左表中没有匹配的行,则结果集中左表的部分将包含NULL值。 阅读详情

关于Struts2 + spring + hibernate进Q群: 130529143交流。
有偿技术支持Q群:
398162181 

Oracle外连接

(1)左外连接 (左边的表不加限制)

(2)右外连接(右边的表不加限制)

(3)全外连接(左右两表都不加限制)

 

 外连接(OuterJoin)

outer join则会返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行(如select * from dave a left outer join bl b on a.id = b.id 中,a.id是第一个输入,b.id是第二个输入)。它还返回任何在第二个输入中没有匹配行的第一个输入中的行。外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。 通常我们省略outer 这个关键字。 写成:LEFT/RIGHT/FULLJOIN。

 

在左外连接和右外连接时都会以一张表为基表,该表的内容会全部显示,然后加上两张表匹配的内容。如果基表的数据在另一张表没有记录。那么在相关联的结果集行中列显示为空值(NULL)。

 

对于外连接,也可以使用“(+) ”来表示。关于使用(+)的一些注意事项:

      1.(+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。

      2. 当使用(+)操作符执行外连接时,如果在where子句中包含有多个条件,则必须在所有条件中都包含(+)操作符

      3.(+)操作符只适用于列,而不能用在表达式上。

      4.(+)操作符不能与or和in操作符一起使用。

      5.(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。

 

 

在做实验之前,我们先将dave表和bl里加一些不同的数据。以方便测试。

SQL> select * from bl;

       ID NAME

---------- ----------

        1 dave

        2 bl

        3 big bird

        4 exc

        9 怀宁

SQL> select * from dave;

       ID NAME

---------- ----------

        8 安庆

        1 dave

        2 bl

        1 bl

        2 dave

        3 dba

        4 sf-express

        5 dmm

2.1 左外连接(Left outer join/left join)

    left join是以左表的记录为基础的,示例中Dave可以看成左表,BL可以看成右表,它的结果集是Dave表中的数据,再加上Dave表和BL表匹配的数据。换句话说,左表(Dave)的记录将会全部表示出来,而右表(BL)只会显示符合搜索条件的记录。BL表记录不足的地方均为NULL.

 

示例:

 

SQL> select * from dave a left join bl bon a.id = b.id;

 

      ID NAME               ID NAME

--------- ---------- ---------- ----------

       1 bl                  1 dave

       1 dave                1 dave

       2 dave                2 bl

       2 bl                  2 bl

       3 dba                 3 big bird

       4 sf-express          4 exc

       5 dmm                            -- 此处B表为null,因为没有匹配到

       8 安庆                            -- 此处B表为null,因为没有匹配到

 

SQL> select * from dave a left outer joinbl b on a.id = b.id;

 

       ID NAME               ID NAME

---------- ---------- ---------- ----------

        1 bl                  1 dave

        1 dave                1 dave

        2 dave                2 bl

        2 bl                  2 bl

        3 dba                 3 big bird

        4 sf-express          4 exc

        5 dmm

        8 安庆

 

用(+)来实现,这个+号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。所以加号写在右表,左表就是全部显示,故是左连接。

 

SQL> Select * from dave a,bl b wherea.id=b.id(+);    -- 注意: 用(+) 就要用关键字where

 

       ID NAME               ID NAME

---------- ---------- ---------- ----------

        1 bl                  1 dave

        1 dave                1 dave

        2 dave                2 bl

        2 bl                  2 bl

        3 dba                 3 big bird

        4 sf-express          4 exc

        5 dmm

        8 安庆

   

2.2 右外连接(right outerjoin/ right join)

和left join的结果刚好相反,是以右表(BL)为基础的, 显示BL表的所以记录,在加上Dave和BL 匹配的结果。 Dave表不足的地方用NULL填充.

 

示例:

SQL> select * from dave a right join blb on a.id = b.id;

 

       ID NAME               ID NAME

---------- ---------- ---------- ----------

        1 dave                1 dave

        2 bl                  2 bl

        1 bl                  1 dave

        2 dave                2 bl

        3 dba                 3 big bird

        4 sf-express          4 exc

                               9 怀宁    --此处左表不足用Null 填充

已选择7行。

SQL> select * from dave a right outerjoin bl b on a.id = b.id;

       ID NAME               ID NAME

---------- ---------- ---------- ----------

        1 dave                1 dave

        2 bl                  2 bl

        1 bl                  1 dave

        2 dave                2 bl

        3 dba                 3 big bird

        4 sf-express          4 exc

                               9 怀宁  --此处左表不足用Null 填充

已选择7行。

 

 

用(+)来实现,这个+号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。所以加号写在左表,右表就是全部显示,故是右连接。

 

SQL> Select * from dave a,bl b wherea.id(+)=b.id;

 

       ID NAME               ID NAME

---------- ---------- ---------- ----------

        1 dave                1 dave

        2 bl                  2 bl

        1 bl                  1 dave

        2 dave                2 bl

        3 dba                 3 big bird

        4 sf-express          4 exc

                               9 怀宁

 

2.3 全外连接(full outer join/full join)

     左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充。全外连接不支持(+)这种写法。

 

示例:

 

SQL> select * from dave a full join bl bon a.id = b.id;

       ID NAME               ID NAME

---------- ---------- ---------- ----------

        8 安庆

        1 dave                1 dave

        2 bl                  2 bl

        1 bl                  1 dave

        2 dave                2 bl

        3 dba                 3 big bird

        4 sf-express          4 exc

        5 dmm

                               9 怀宁

 

已选择9行。

 

SQL> select * from dave a full outerjoin bl b on a.id = b.id;

       ID NAME               ID NAME

---------- ---------- ---------- ----------

        8 安庆

        1 dave                1 dave

        2 bl                  2 bl

        1 bl                  1 dave

        2 dave                2 bl

        3 dba                 3 big bird

        4 sf-express          4 exc

        5 dmm      

关于Struts2 + spring + hibernate进Q群: 130529143交流。
有偿技术支持Q群:
398162181 


LaTeX新手入门以及TeXlive和TeXstudio的安装使用 作为一个新手,LaTeX的了解和使用很是费了一番功夫,因此,在这里给找不到路的同志们稍微介绍一下。如有错误,敬请指正。本篇内容基于Win10系统,因此安装在Mac或者Linux上的同学可以再找找其他的介绍文章。 目录 LaTeX介绍 LaTeX环境配置 一、TeXlive下载 二、TeXlive安装 1. 安装main installer 2. 正式安装 三、TeXstudio安装... 阅读详情

相关推荐

BLE透传速率调优(二)

摘要:本文分析了蓝牙协议中MDbit=1时应连续发送多包但实际只发一包的问题。通过波形分析和代码调试,发现问题的根源在于接收端出现sync error导致提前关闭接收窗口,而非发送端问题。最终通过调整RF时序参数(将rxpathdly改为13us)解决了TX到RX转换的同步问题,使连接事件能正常发送多个数据包,传输速率提升至70kb/s。文中详细记录了使用逻辑分析仪和trace宏调试的过程,揭示了CEVA芯片设计中TX中断与ACK接收的关联特性。

袁赟的博客 799

图解数据库左连接、右连接、内连接、外连接、全连接的区别

数据库连表方式 内连接 :inner 、inner join 外连接 :outer join 左外连接 :left outer join 左连接 :left join 右外连接 right outer join 右连接: right join 全连接 full join 、union 准备 现在有2张表,A表和B表,数据和表结构如下 内连接 内连接查询的是两张表的并集,也就是A表和B表都必须有数据才能查询出来; 以下三个查询的结果是一样的,针对上面的表数据,能查询出id为1、2、3的数据 --

叶新东老师的博客 7万+

windows的rancherDesktop修改镜像源

Rancher Desktop中的“Allowed Images”功能(通常在 Preferences -> Container Engine -> Allowed Images 中找到)是用来定义一个允许拉取和推送的镜像列表的规则,例如,只允许从您组织或特定的受信任的仓库中获取镜像。如果问题依旧,请提供您Rancher Desktop的版本和当前选择的容器运行时,以便进一步协助。总结一下,对于Windows上的Rancher Desktop,如果您使用默认的。,镜像源的配置通常通过一个名为。

zwjapple的专栏 2695

Oracle:左连接、右连接、全外连接、(+)号详解

Oracle 左连接、右连接、全外连接、(+)号详解1、左外连接(LEFT OUTER JOIN/ LEFT JOIN)2、右外连接(RIGHT OUTER JOIN/RIGHT JOIN)3、全外连接(FULL OUTER JOIN/FULL JOIN)4、补充5、Oracle中 (+)与left join 的用法区别。

男神的专栏 2万+

1.1.4 运用防火墙实现入侵防御

摘要:本文详细介绍了某公司网络拓扑中防火墙FW1的配置过程。主要内容包括:1)通过web界面登录防火墙;2)配置三个接口的IP地址及所属安全区域;3)创建两个入侵防御配置文件(anti_untrust和anti_trust);4)配置安全策略untrust2dmz和trust2dmz,分别允许公网/内网访问WWW服务器;5)保存配置。操作步骤配有详细截图说明,涉及接口配置、安全区域划分、入侵防御策略设定等关键环节,最终实现内外网对服务器Server1的安全访问控制。(149字)

Ljs040411的博客 2130

Moltemplate建模----水盒子data文件

1功能介绍 Moltemplate是LAMMPS官方支持的建模工具之一,适用于LAMMPS建模。该程序创建了一种简单的文件格式来存储分子定义和力场,即模板LT。LT文件包含与特定分子有关的所有文本(包括坐标,键拓扑,角度,力场参数,约束,组和修复)。 Moltemplate可以复制分子,对其进行自定义,然后用它作为构建更大、更复杂分子的基础。构建后,可以自定义...

元素魔方科研服务 2593

左外连接、右外连接

left和right是外连接, 左外连接、右外连接 Inner是内连接。 假设有A,B两个表。 表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表B记录如下: bID bName 1 2006032401 2 2006032402 3 2006032403 4 2006032404 8 2006032408

qq_43552564的博客 2780

IEC61850 通信协议测试验证实战指南:从理论到实践

本文提供了一份全面的IEC61850通信协议测试验证实战指南,强调测试必须从理论走向工程实践。文章详细讲解了如何搭建测试环境,并深入剖析了MMS、GOOSE、SV三大核心协议的实战测试方法,旨在帮助工程师通过系统化的测试验证,确保电力自动化设备的互操作性与通信可靠性。

weixin_29204121的博客 170

数据库内连接、左外连接、右外连接中的on、and、where条件使用

使用on条件,A为主表;使用on条件,B为主表;使用on、and主表条件;使用on、where主表条件;使用on、and条件,a.type1;使用on、where条件,a.type1;使用on、and从表条件;使用on、where从表条件;使用on、and从表条件,从表Bcard1111;使用on、where条件,从表Bcard1111;inner内链接,使用on、and条件;inner内连接,使用on、where条件。

qq_45138120的博客 9755

电路板功能测试系统-FCT for PCBA

电路板功能测试系统用于电路板组件(PCBA)的功能测试(FCT),满足自动化大批量生产的要求。  ● 用户根据自己需要定义测试步骤,灵活方便  ● 适合工业自动化大批量生产应用  ● 系统测试精度高,稳定可靠   一、电路板功能测试系统概述 电路板测试过程通常由多个步骤组成,每单个步骤中需要对多个物理量(电压、电流、电阻、频率、波形等)进行测试。在每个步骤测试时

6808

Unity3D实现项目限制功能(使用次数限制和时间限制)

大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。在软件开发的时候,可能会遇到程序的使用次数限制,以及时间的限制,下面就写一下这两种方法是新建注册表,增加键值对,修改键值,完成对程序的控制提示:以下是本篇文章正文内容,下面案例可供参考以上就是讲了两种限制方法不定时更新Unity开发技巧,觉得有用记得一键三连哦。

心疼你的一切博客 1810

mysql查询时 全外連接_MySQL数据库左外连接、右外连接、全外连接

MySQL查询分为内连接查询和外连接查询,他们的区别在于:内连接查询的两个表示对等关系,根据条件进行匹配;外连接是以某一个表为主,两一个表根据条件进行关联。外连接分为左外连接、右外连接和全外连接。本文重点介绍各外连接的思想,以及如何实现全外连接,并举例。左外连接左外连接以左边表为基础,根据条件,将右边表附属到左边表,语法:SELECT * FROMA LEFT JOIN B ON conditi...

weixin_28877505的博客 1190

人工智能训练师(三级)操作技能考核·自测卷

为您定制了一份。这份试卷严格拆分了“业务分析”、“智能训练”、“智能系统设计”、“培训与指导”四大模块,所有填空题均来源于上一轮整理的。您可以先用它进行“第二步(抛开答案自己填)”,填完后对照末尾的答案速查进行“第一步(补全并运行)”的校验,最后标记错题进行“第三步(针对性重复练习)”。

suny8088的博客 102

数据库——自然连接、内连接、外连接(左外连接、右外连接、全外连接)、交叉连接

1. 自然连接(*natural join)* 自然连接不用指定连接列,也不能使用ON语句,它默认比较两张表里相同的列, `SELECT*FROM student NATURAL JOIN score;` 显示结果如下: 2. 内连接(inner join) 和自然连接区别之处在于内连接可以自定义两张表的不同列字段。 内连接有两种形式:显式...

止喜的博客 7万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

oracle数据库左外右外连接,Oracle数据库之内连接、外连接、右外连接、全外连接小总结...

本文主要向大家介绍了Oracle数据库之内连接、外连接、右外连接、全外连接小总结,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。数据库版本:Oracle 9i表TESTA,TESTB,TESTC,各有A, B两列A B001 10A002 20AA B001 10B003 30BA B001 10C004 40C连接分为两...

weixin_39655377的博客 197

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数据库 内连接 左外连接 右外连接 全外连接

内连接内连接中,只有满足连接条件的元组才能作为结果输出,即当任一个表中为null则不会输出。 SQL 语句:123SELECT FIRST.Cno,SECOND.CpnoFROM Course FIRST,Course SECONDWHERE FIRST.Cpno=SECOND.Cno; 左外连接如果在查询时需要保留一个表中全部的元组,就需要使用外连接。 SQL12SELECT Student....

TAN 1901

数据库之SQL(基本连接,内连接,左外连接,右外连接,全外连接,交叉连接,自连接)

之前的博客内容我们分享了数据表的查询与管理,但那只是针对数据库中的一个表格进行的查询管理,现在如果我们想要同时看到两个数据表中的数据的话,那要怎么办呢?采用多连接查询的方式。 SQL中有哪几种多连接的方式? 有七种连接的方式: 基本连接,内连接,左外连接,右外连接,全外连接,交叉连接,自连接 如果对连接方式了解的人看到这里会感到很熟悉,但对于不了解的人...

Elsa~的博客 1万+

数据库的内连接、外连接(左外连接、右外连接、全外连接)以及交叉连接

SQL数据库的连接:内连接、和外连接(左外连接、右外连接、和全连接)本次实验在MySQL数据库中进行,数据库初始表如下:一、内连接:结果仅包含符合连接条件的两表中的行。如下:二、外连接:结果包含符合条件的行,同时包含不符合条件的行(分为左外连接、右外连接和全外连接)1、左外连接:左表全部行+右表匹配的行,如果左表中某行 在右表中没有匹配的行,则右表该行显示NULL。如下:2、右外连接:和左外连接相...

行者小朱的博客 2万+

数据库学习之MySQL (十六)—— SQL99 外连接 左外连接 右外连接 全外连接 交叉连接

外连接 之 左外连接 与 右外连接 为啥要用外连接 全外连接 总结 内连接 外连接

菜鸡的学习之路 4286

oracle数据库左外右外连接,【SQL】Oracle的内连接、左外连接、右外连接及全外连接...

理解Oracle的各种连接方法的最有效的方法就是“躬亲”,在实践中去深刻理解内连接,左外连接,右外连接,全外连接的概念的和效果。1.创建测试表并准备测试数据sec@ora10g> create table a (a number(1),b number(1),c number(1));sec@ora10g> create table b (a number(1),d number(1)...

weixin_33940031的博客 112

oracle数据库中左外连接,oracle中表的左外连接,右外连接,全外连接

---1. 普通的相等连接select e.last_name, d.department_namefrom employees e, departments dwhere e.department_id = d.department_id;---2 左外连接 LEFT OUTER JOINselect e.last_name,e.department_id,d.department_namefr...

weixin_42524750的博客 308

数据库的内连接、外连接(左外连接、右外连接、全外连接)以及交叉连接(转)...

转自: 数据库的内连接、外连接(左外连接、右外连接、全外连接)以及交叉连接 SQL数据库的连接:内连接、和外连接(左外连接、右外连接、和全连接) 本次实验在MySQL数据库中进行,数据库初始表如下:   一、内连接:结果仅包含符合连接条件的两表中的行。如下:   二、外连接:结果包含符合条件的行,同时包含不符合条件的行(分为左外连接、右外连接和全外连接) 1、左外连接:左表全...

weixin_34233679的博客 254

简单理解数据库几种连接方式:内连接,左外连接,右外连接,全外连接

内连接:又叫连接,自然连接。一句话理解找公共部分交集 全外连接:一句话理解找并集,没有部分空值填充 左外连接:对照左表将右表信息填充,左表没有右表有的丢弃 右外连接:对照右表将左表信息填充,右表没有左表有的丢弃 ...

Skiray的博客 1315

mysql 内连接、自然连接、外连接的区别

内连接、自然连接、外连接的区别

ratel的博客 4万+
上一篇: PLSQL之循环和游标
下一篇: Oracle之高级查询
eplusing
博客等级 码龄12年 45粉丝 118原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值