4.4 连接

  • 自然连接

    自然连接实际指定了搜寻条件。这里包括两部分的内容:首先,自然连接列必须同名,另外,所有同名列都将作为搜索条件。

    • 自然连接所使用的关键字为natural join 。其连接原则为,两个数据源的共有列,并且具有相同列值。

    • 结合与笛卡尔积的区别进行理解

      自然连接与笛卡尔积的区别在于,笛卡尔积无论何时,都将获得两个数据表中所有记录的两两结合。而当两个数据表中存在同名列时,Oracle将同名列作为搜寻条件。相当于强制添加条件——where t1.column = t2.column。但是,当两个表不存在同名列时,Oracle不会添加任何搜寻条件,其效果相当于笛卡尔积。

      • teachers 表

      • student 表

      • 自然连接teachers 和 student 表

        • select s.name,s.class,teacher_name,t.teacher_course from student s natural join teacher_couse t;

          • 其中

            • s.name
            • s.class
            • t.teacher_course
            • teacher_name:不可以使用限定词,否则报错
          • 等同于

            • select s.name,s.class,t.teacher_name,t.teacher_course from student s,teachers t where s.teacher_name=t.teacher_name;

              -

  • 内连接

    自然连接使用两个表之间的公共列作为搜寻条件;而且要求公共列的值必须相等。这带来了极大的限制,因此,自然连接并不常用。而内连接突破了这两种约束。内连接可以自行指定连接列和连接条件。内连接运算的关键字为inner join.

      • teachers 表

      • student 表

      • 内连接teachers表和student表

        select s.id,s.name,s.class,s.teacher_name ,t.teacher_course from student s inner join teachers t on s.teacher_name=t.teacher_name;

        内连接的inner join 中的inner 关键子可以省略
        select s.id,s.name,s.class,s.teacher_name ,t.teacher_course from student s join teachers t on s.teacher_name=t.teacher_name;

        • 对于内连接,利用where 条件也可以实现相同的作用,但是:

          • 在多于两表关联查询时

            含有多个数据源时,例:A,B,C。此时使用where子句方式,from 子句中含有数据源:A,B,C;Oracle 在进行笛卡尔积运算时会进行优化,理想的笛卡尔积运算顺序为:AxBxC ,但是,使用where子句方式时,运算顺序可能会发生改变,得出不正确的结果。此时应使用内连接:
            select * from A join B on …join c on …;

  • 外连接

    内连接所指定的两个数据源,处于平等的地位。而外连接不同,外连接总是以一个数据源为基础,将另外一个数据源与之进行进行条件匹配。即使条件不匹配,基础数据源中的数据总是出现在结果集中。那么,依据哪个数据源作为i基础数据源,便出现了两种外连接的方式——左(外)连接和右(外)连接。因为内连接没有左右之分,所以习惯上,将左外连接和右外连接简称为左连接和右连接。

    • 左连接:left join

      左连接,以lfet join 左侧的表作为基础表来实现关联

        • class_one表

        • teachers表

        • 使用左连接,获取class_one表中所有学生对应的老师信息

          • select c.*,t.teacher_course from class_one c left join teachers t on c.teacher_name=t.teacher_name;
    • 右连接:right join

      与左连接相反,右连接是以运算符右侧的表作为基础表来实现关联。

        • class_one表
          -

        • teachers表

        • 使用右连接,获取teachers表中所有老师对应的学生信息

          • select c.id,c.name,c.class,t.teacher_name,t.teacher_course from class_one c right join teachers t on c.teacher_name=t.teacher_name;
    • 完全连接 full join

      完全连接实际是一个左连接和右连接的组合。也就是说,如果两个数据源使用了完全连接,那么将首先进行一个左连接,然后进行一次右连接,最后再删除其中的重复记录,即得到完全连接。完全连接,应该使用full join 关键字,并使用on关键字指定连接条件。

        • class_one表
          -

        • teachers表
          -

        • 使用full join获取class_one表 和 teachers表的完全连接。

          • select * from class_one c full join teachers t on c.teacher_name = t.teacher_name;

          • 注意:full join 的执行结果与表的顺序无关,无论表在 full join 的前边还是右边,结果都一样!

            • select * from teachers t full join class_one c on c.teacher_name = t.teacher_name;

第四章 SQL查询 之连接{自然连接,内连接,外连接(左外连接,右外连接,完全连接)}相关推荐

  1. 第四章 SQL查询之联合语句

    4.3联合语句 联合语句是指对于多个查询所获得的结果集进行集合操作.这些集合操作包括union.union all.intersect和minus.这些集合运算都是二元运算,运算结果仍然是一个记录集合 ...

  2. 第四章 SQL聚合函数 COUNT(二)

    文章目录 第四章 SQL聚合函数 COUNT(二) 权限 性能 未提交事务所做的更改 示例 第四章 SQL聚合函数 COUNT(二) 权限 要使用COUNT(*),必须对指定的表具有表级别的SELEC ...

  3. 第二十四章 SQL函数 CEILING

    文章目录 第二十四章 SQL函数 CEILING 大纲 参数 描述 示例 第二十四章 SQL函数 CEILING 数值函数,返回大于或等于给定数值表达式的最小整数. 大纲 CEILING(numeri ...

  4. 第九十四章 SQL函数 %MINUS

    文章目录 第九十四章 SQL函数 %MINUS 大纲 参数 描述 示例 第九十四章 SQL函数 %MINUS 将数字转换为规范整理格式,然后反转符号的整理函数. 大纲 %MINUS(expressio ...

  5. oracle延时盲注如何防止,【原创】WEB安全第四章SQL注入篇21 oracle 延时注入

    WEB安全第四章SQL注入篇21 oracle 延时注入 1.简介 DBMS_LOCK.SLEEP()函数可以让一个过程休眠很多秒,但使用该函数存在许多限制.首先,不能直接将该函数注入子查询中,因为O ...

  6. 第四章 缓存查询(一)

    文章目录 第四章 缓存查询(一) 缓存查询提高了性能 创建缓存查询 动态SQL的缓存查询名称 嵌入式SQL的缓存查询名称 单独的缓存查询 文字替换 DynamicSQLTypeList Comment ...

  7. 第七章 SQL查询(三)

    第七章 SQL查询(三) 一,什么是子查询 子查询是一个嵌套在 SELECT.INSERT.UPDATE 或 DELETE 语句或其他子查询中的查询 子查询在WHERE语句中的一般用法: SELECT ...

  8. 第九章 SQL查询数据库(二)

    文章目录 第九章 SQL查询数据库(二) 调用用户定义函数的查询 查询串行对象属性 查询集合 使用说明和限制 调用文本搜索的查询 伪字段 查询元数据 快速查询 查询和企业缓存协议Enterprise ...

  9. 数据库系统原理——第四章 SQL与数据库的基本操作(1)知识点总结(自考本)

    当你想挣一百块的时候你就要把目标定成一千块,这样才挣得更多. 第四章 SQL与数据库的基本操作 SQL概述 什么是SQL? SQL的特点 SQL的四大功能 数据定义语言 数据操纵语言 数据控制语言 嵌 ...

最新文章

  1. 【转】sed 简明教程
  2. 20220129---CTF刷题---WEB--代码审计
  3. 设计数据密集型应用程序_设计数据密集型应用程序书评
  4. ZetCode Kotlin 教程
  5. groupadd命令详解(实例)
  6. Linux 常用ping命令详解
  7. tpx色卡电子版_潘通色卡电子版Pantone TPX(新175色)
  8. FPGA入门——初学建议
  9. n元均匀直线matlab,均匀直线阵天线的分析
  10. java实现zip文件压缩和解压
  11. 联想“重组症”:仅靠重组是不够的
  12. 关于print spooler无法启动
  13. 计算机讲Word文档中的组合,电脑Word文档中两个表格如何合并
  14. 大文本文件打开工具_信息技术类专业常用工具软件教案1.1
  15. html项目符号正方形,html 项目符号
  16. 测试oschina
  17. Matlab合并文本或excel文件数据并绘图
  18. 几道js数组循环练习题
  19. ei指什么_SCI、EI分别是什么意思
  20. Windows激活时,不想直接用微软账户登录咋办

热门文章

  1. dedecms 后台修改系统设置,但是config.cache.inc.php文件不能写入
  2. 我的第一个油猴脚本「屏蔽CSDN底下的登录栏」
  3. 重磅!ChatGPT 网页版来啦!响应速度超快!
  4. 分布式系统多副本复制的问题与解决方案
  5. php中{}大括号的用法总结
  6. 【附源码】计算机毕业设计SSM网上拍卖系统
  7. Android 深入系统完全讲解(15)
  8. Windows 临界区(CRITICAL_SECTION)的使用
  9. DP/HDMI/DVI显示器接口详解
  10. 下载bilibi视频 下载B站视频