目录

一、交叉连接(笛卡尔积)

二、内连接(等值、非等值连接)

三、外连接(左外连接、右外连接、全连接)

四、自然连接

五、自连接


一、交叉连接(笛卡尔积)

交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。

交叉连接(CROSS JOIN):有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积。

例如:下面的语句1和语句2的结果是相同的。

语句1:隐式的交叉连接,没有CROSS JOIN。

SELECT O.ID, O.ORDER_NUMBER, C.ID, C.NAME

FROM ORDERS O , CUSTOMERS C

WHERE O.ID=1;

语句2:显式的交叉连接,使用CROSS JOIN。

SELECT O.ID,O.ORDER_NUMBER,C.ID,

C.NAME

FROM ORDERS O CROSS JOIN CUSTOMERS C

WHERE O.ID=1;

二、内连接(等值、非等值连接)

内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。

内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。

  1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复属性。 (区别于自然连接)

  2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的 列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

内连接(INNER JOIN):有两种,显式的和隐式的,返回连接表中符合连接条件和查询条件的数据行。(所谓的链接表就是数据库在做查询形成的中间表)。

例如:下面的语句3和语句4的结果是相同的。

语句3:隐式的内连接,没有INNER JOIN,形成的中间表为两个表的笛卡尔积。

SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME

FROM CUSTOMERS C,ORDERS O

WHERE C.ID=O.CUSTOMER_ID;

语句4:显示的内连接,一般称为内连接,有INNER JOIN,形成的中间表为两个表经过ON条件过滤后的笛卡尔积。

SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME

FROM CUSTOMERS C INNER JOIN ORDERS O ON C.ID=O.CUSTOMER_ID;

三、外连接(左外连接、右外连接、全连接)

在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:

1)LEFT  JOIN或LEFT OUTER JOIN

左向外联接的结果集包括  LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

2)RIGHT  JOIN 或 RIGHT  OUTER  JOIN

右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

3)FULL  JOIN 或 FULL OUTER JOIN

全外=左外 UNION 右外

完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

MySQL是不支持全外的连接的,这里给出的写法适合Oracle和DB2。但是可以通过左外和右外求合集来获取全外连接的查询结果。下图是上面SQL在Oracle下执行的结果:

四、自然连接

这种连接查询没有存在的价值,既然是SQL2标准中定义的,就给出个例子看看吧。自然连接无需指定连接列,SQL会检查两个表中是否相同名称的列,且假设他们在连接条件中使用,并且在连接条件中仅包含一个连接列。不允许使用ON语句,不允许指定显示列,显示列只能用*表示(ORACLE环境下测试的)。对于每种连接类型(除了交叉连接外),均可指定NATURAL。自然连接不包含重复的属性。下面给出几个例子。

语句5:

SELECT *

FROM ORDERS O NATURAL INNER JOIN CUSTOMERS C;

语句6:

SELECT *

FROM ORDERS O NATURAL LEFT OUTER JOIN CUSTOMERS C;

语句7:

SELECT *

FROM ORDERS O NATURAL RIGHT OUTER JOIN CUSTOMERS C;

语句8:

SELECT *

FROM ORDERS O NATURAL FULL OUTER JOIN CUSTOMERS C;

五、自连接

连接的表是同一张表,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。

SELECT S1.*, S2.* FROM STUDENT S1 , STUDENT S2 WHERE S1.DEPTNO=S2.DEPTNO AND S1.CLASSNO=S2.CLASSNO;

内连接(等值、非等值连接)、外连接(左外连接、右外连接、全连接)、自然连接、自连接相关推荐

  1. 四种连接类型:inner(内连接),left[outer](左外连接),right[outer](右外连接),full[outer](完全外连接)

    在from子句中表示连接操作有四种:inner(内连接),left[outer](左外连接),right[outer](右外连接),full[outer](完全外连接). 一.理论讲解 1.内连接jo ...

  2. MYSQL基础之多表查询:内外连接以及等值非等值连接

    其实前面说过数据库一句话: 这个就设计到一个E-R(entity -relatiosn 实体--联系)模型,其主要设计到三个主要概念:实体集,属性,联系集. 联系集本质就是表之间的关系,现在聊一些表之 ...

  3. 区分笛卡儿积,自然连接,等值连接,内连接,外连接—左,右

    1.笛卡尔积 笛卡儿积,不用多说,返回所有的情况. 2.自然连接 自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系.自然连接是一种特殊的等值 ...

  4. SQL连接的理解和使用(内连接:自然连接等值连接,外连接:左连接右连接全外连接)

    目录 一.连接的介绍 连接是什么? 连接分几种? 条件连接 等值连接 自然连接 二.连接的使用 内连接 INNER JOIN 内连接与等值连接区别 内连接与自然连接区别 外连接 OUTER JOIN ...

  5. 深入分析内连接、外连接、左连接、右连接、等值连接、自然连接和自连接之间的区别,看这篇就够了!

    多表查询经常用到连接,各种连接之间的区别应该注意总结. 首先大概认识各种连接的关系和由来: 表之间的连接常有以下两种: 一.:在SELECT语句的WHERE子句中使用比较运算符给出连接条件,对表进行连 ...

  6. 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 使用 ...

  7. 数据库:区分笛卡儿积、自然连接、内连接、等值连接、外连接

    假设存在两张表 c 和 p,这里使用的是MySQL数据库. 数据表 c: course_id title dept_name credits BIO-301 Genetics Biology 4 CS ...

  8. mysql自然连接和等值连接_区分笛卡儿积,自然连接,等值连接,内连接,外连接...

    1.区分笛卡儿积,自然连接,等值连接,内连接,外连接(左连接,右连接和全连接) 假设存在两张表R和S,这里使用的是MySQL数据库. 下面这张表是R 下面这张是S 为了测试左连接和右连接,现在增加一张 ...

  9. 理解内连接中的隐式内连接、显式内连接和外连接中的左外连接、右外连接

    一.多表查询 二.在 MySQL 中创建 book 和 actor 两张表 1 创建 book 表及添加数据 CREATE TABLE `book` (`id` INT PRIMARY KEY NOT ...

最新文章

  1. OpenResty搭建高性能服务端
  2. 论文笔记:Stochastic Weight Completion for Road Networks using Graph Convolutional Networks
  3. 后端系统开发之白名单机制
  4. Python 三维可视化笔记1 -- TVTK库
  5. 如何选择开源许可证如何修改项目使其符合某种开源许可证
  6. 移动时捕捉不到基点_CAD入门学习攻略:CAD软件中对象捕捉功能使用技巧汇总
  7. linux下卸载mysql(rpm)
  8. MYSQL MVCC实现及其机制
  9. Collection和Collections有什么区别?
  10. android app冷启动,Android冷启动实现APP秒开
  11. web javascript开发 之Response.Write 与document.writ...
  12. 【机器学习】一文详尽系列之EM算法
  13. qqmail的文件中转站可真好用啊
  14. 从重大事件保障,看华为如何打造一流保障体系
  15. 伦斯勒理工学院计算机科学专业强吗,伦斯勒理工学院有哪些专业处于世界顶尖水平?...
  16. 用天文方法计算二十四节气
  17. 数字IC常考题(单选、多选、编程)
  18. 【附源码】计算机毕业设计SSM汽车维修服务系统
  19. Vue CLI 3.x 与 2.x的区别
  20. 2022计算机考研统考的院校有哪些,2022考研初试科目都有哪些?

热门文章

  1. 现在的5G手机根本没什么用!为何还有手机厂商争先恐后?
  2. video 去掉播放按钮并循环播放 可替代gif
  3. 服务器渲染和浏览器渲染的区别
  4. Python 使用PyQt5进行界面程序开发
  5. java中读取logback日志文件_java 控制台 System.out日志输出到logback文件里
  6. 关于e.printStackTrace的死锁
  7. 锤子科技临死前被接盘 ,内部人士爆料已改签今日头条母公司
  8. dateutil 日期计算_时间工具类DateUtil的使用
  9. PC端品优购网页制作(common.css)2
  10. JD达人账号注销流程,防止机构不给结算佣金