9.3.2  自然连接(NATURAL JOIN)

自然连接(NATURAL JOIN)是一种特殊的等价连接,它将表中具有相同名称的列自动进行记录匹配。自然连接不必指定任何同等连接条件。图9.9给出了典型的自然连接示意图。

图9.9  自然连接

自然连接自动判断相同名称的列,而后形成匹配。缺点是,虽然可以指定查询结果包括哪些列,但不能人为地指定哪些列被匹配。另外,自然连接的一个特点是连接后的结果表中匹配的列只有一个,如图9.9所示,在自然连接后的表中,只有一列C。

实例6  使用NATURAL JOIN进行查询

从STUDENT表和TEACHER表中查询学生姓名、所在系、所修的本系教师开设的课程的课程号以及开课教师姓名。这时候就可以采用NATURAL JOIN对两个表进行自然连接。实例代码:

SELECT   SNAME, DNAME, CNO, TNAMEFROM   STUDENT NATURAL JOIN TEACHER

当DBMS执行查询时,将把来自STUDENT表的行与来自TEACHER表中的行通过CNO和DNAME列进行匹配连接。即只有两个表中的CNO和DNAME列的值都相等的行,才连接起来,作为结果表中的行,而CNO和DNAME列在结果表中只出现一次,因此在查询时就不需指明TEACHER.DNAME或是STUDENT.DNAME。

注意 有些DBMS产品,如SQL Server,不支持NATURAL JOIN连接符,因此这里无法给出该实例代码的运行结果。

事实上,使用NATURAL JOIN运算符进行自然连接,与检查两个源表中同名列值相等的WHERE子句是等价的。因此,上例的实现也可表示如下。

SELECT   SNAME, S.DNAME, S.CNO, TNAMEFROM   STUDENT AS S, TEACHER AS TWHERE  S.DNAME = T.DNAMEAND   S.CNO = T.CNO 

运行结果如图9.10所示:

 
图9.10  另一种自然连接的查询结果

与自然连接不同,采用这种方式进行表的连接,虽然两表的CNO和DNAME列相等,但它们在结果表中出现了两次,因此在SELECT语句中,如果要查询这两个字段,必须指明是哪个表的字段。

事实上,使用基于WHERE子句的等值连接要比使用NATURAL JOIN运算符进行自然连接要灵活得多。正如前面介绍的,使用NATURAL JOIN运算符自动判断出具有相同名称的列,而后形成匹配,不能人为地指定哪些列被匹配。当自然连接STUDENT表和TEACHER表时,CNO和DNAME列同时被匹配,而不能只匹配一列。而使用WHERE子句则可以实现任意列的匹配。

实例7  使用WHERE子句进行等值连接查询

从STUDENT表和TEACHER表中查询学生姓名、所在系、所修的所有课程的课程号以及开课教师姓名。这时,STUDENT表和TEACHER表只需将CNO字段匹配即可。实例代码:

SELECT   SNAME, S.DNAME, S.CNO, TNAMEFROM   STUDENT AS S, TEACHER AS TWHERE  S.CNO = T.CNOORDER BY  SNAME

运行结果如图9.11所示。

 
图9.11  STUDENT表和TEACHER表匹配CNO字段的查询结果

在这种情况下,就不可能使用NATURAL JOIN运算符实现。

9.3.2 自然连接(NATURAL JOIN)相关推荐

  1. Oracle数据库:自然连接natural join,using语句,注意避免写交叉连接

    Oracle数据库:自然连接natural join,using语句,注意避免写交叉连接 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的 ...

  2. Oracle学习笔记(三)。连接查询。等值连接,非等值连接,自连接,LEFT OUTER JOIN,RIGHT JOIN,FULL JOIN,自然连接,内连接 INNERJOIN

    文章目录 1. 什么是多表查询 2. 多表链接方式 3. 多表连接语法 3.1 语法结构 3.2 定义连接 3.3 原则 4. 等值连接-内连接 4.1 什么是等值连接 4.2 抉择矩阵 4.3 使用 ...

  3. SQL内连接、外连接、全连接、交叉连接、自连接、自然连接

    SQL内连接.外连接.交叉连接 内连接(inner join) 外连接(outer join) 左外连接 右外连接 全连接(full join) 交叉连接(cross join) 隐式交叉连接与显式交 ...

  4. 连接查询(交叉连接,内连接,外连接,自然连接)

    创建一个学生表和一个课程表.先放出实验的表结构: create table student( id int, name varchar(15), gender varchar(15), cid int ...

  5. Oracle数据库:oracle内连接inner join on,多表查询各种自链接、内连接、外连接的练习示例

    Oracle数据库:oracle内连接inner join on,多表查询各种自链接.内连接.外连接的练习示例 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得 ...

  6. mysql自然连接的例题详解_基于 MySQL 的数据库实践(自然连接)

    在基本查询一节的示例中,我们有从 instructor 和 teaches 表组合信息,匹配条件是 instructor.ID 等于 teaches.ID 的查询,ID 属性是两个表中具有相同名称的所 ...

  7. 【MySQL】MySQL的自然连接和USING连接详细总结

    目录 1 自然连接 2 USING连接 1 自然连接 自然连接是SQL99在SQL92的基础上新增的语法,用关键字 NATURAL JOIN 表示.自然连接类似于SQL92中的等值连接,它会自动查询两 ...

  8. 等值连接、自然连接和内连接之间的区别

    引言 假设有这样四个表student.teacher.score和course它们的定义如下: create table student(学号 int primary key,姓名 varchar(2 ...

  9. mysql存在外键的连接_MySQL(外连接、自然连接、新增-追加-删除外键、外键条件-约束)...

    外连接(outer join) left join:左外连接(左连接),以左表为主表 right join:右外连接(右连接),以右表为主表 基本语法:左表 left/right join 右表 on ...

  10. 图解SQL的连接:左连接、右连接、全连接、内连接、自然连接

    SQL的连接分为三类: 外连接(包括左连接left join.右连接right join.全连接full join) 内连接 inner join 自然连接 natural join 我们来看一个超级 ...

最新文章

  1. js GB2312和unicode互转
  2. Runnable、Callable、Executor、Future、FutureTask关系解读
  3. 剑桥大学终身教授T.S.:7大机器学习算法与应用案例
  4. java day06【类与对象、封装、构造方法】
  5. php 锁机制 stream,Php+redis+锁机制实现高并发秒杀抢购解决方案
  6. IOS 学习笔记 2015-04-10 OC-常用常量
  7. Firefox Private Network使用方法(极详细)
  8. Asp.Net Core 系列教程 (一)
  9. 机器视觉——镜头介绍
  10. 链家二手房成交数据分析(采用pytorch环境)
  11. 微信图片去除马赛克_3个实用的图片去马赛克方法
  12. JavaScript 编写Date 格式化方法『Python风格』
  13. ios html5键盘弹出视图上移,ios 软键盘弹出, 页面整体上移问题
  14. 视频播放器软件哪个最好用?盘点6款Windows电脑上超级好用的本地视频播放器
  15. CAPTCHA(验证码)的来源与作用
  16. 2023年电工杯数学建模AB题思路分析
  17. 代码实现-CVPR2020-Dynamic Convolution: Attention over Convolution Kernels
  18. 计算机这一门在高考里占分吗,2018高考各科答题要点 从答题规范上“要分”
  19. stm32PWM精确控制脉冲个数
  20. Ruby教程_编程入门自学教程_菜鸟教程-免费教程分享

热门文章

  1. 工具栏ToolStrip
  2. c语言入门:比较三个数的大小
  3. textarea 属性
  4. secure CRT设置自动保存日志
  5. 错误1053:服务没有及时响应启动或控制请求
  6. Explicit 关键字
  7. PCL点云(平面点云)分割:Plane Model Segmentation
  8. tf.constant用法
  9. MYSQL中,CAST函数的使用规则
  10. Settings 笔记整理