内连接(等值、非等值连接)、外连接(左外连接、右外连接、全连接)、自然连接、自连接
目录
一、交叉连接(笛卡尔积)
二、内连接(等值、非等值连接)
三、外连接(左外连接、右外连接、全连接)
四、自然连接
五、自连接
一、交叉连接(笛卡尔积)
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。
交叉连接(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;
内连接(等值、非等值连接)、外连接(左外连接、右外连接、全连接)、自然连接、自连接相关推荐
- 四种连接类型:inner(内连接),left[outer](左外连接),right[outer](右外连接),full[outer](完全外连接)
在from子句中表示连接操作有四种:inner(内连接),left[outer](左外连接),right[outer](右外连接),full[outer](完全外连接). 一.理论讲解 1.内连接jo ...
- MYSQL基础之多表查询:内外连接以及等值非等值连接
其实前面说过数据库一句话: 这个就设计到一个E-R(entity -relatiosn 实体--联系)模型,其主要设计到三个主要概念:实体集,属性,联系集. 联系集本质就是表之间的关系,现在聊一些表之 ...
- 区分笛卡儿积,自然连接,等值连接,内连接,外连接—左,右
1.笛卡尔积 笛卡儿积,不用多说,返回所有的情况. 2.自然连接 自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系.自然连接是一种特殊的等值 ...
- SQL连接的理解和使用(内连接:自然连接等值连接,外连接:左连接右连接全外连接)
目录 一.连接的介绍 连接是什么? 连接分几种? 条件连接 等值连接 自然连接 二.连接的使用 内连接 INNER JOIN 内连接与等值连接区别 内连接与自然连接区别 外连接 OUTER JOIN ...
- 深入分析内连接、外连接、左连接、右连接、等值连接、自然连接和自连接之间的区别,看这篇就够了!
多表查询经常用到连接,各种连接之间的区别应该注意总结. 首先大概认识各种连接的关系和由来: 表之间的连接常有以下两种: 一.:在SELECT语句的WHERE子句中使用比较运算符给出连接条件,对表进行连 ...
- 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 使用 ...
- 数据库:区分笛卡儿积、自然连接、内连接、等值连接、外连接
假设存在两张表 c 和 p,这里使用的是MySQL数据库. 数据表 c: course_id title dept_name credits BIO-301 Genetics Biology 4 CS ...
- mysql自然连接和等值连接_区分笛卡儿积,自然连接,等值连接,内连接,外连接...
1.区分笛卡儿积,自然连接,等值连接,内连接,外连接(左连接,右连接和全连接) 假设存在两张表R和S,这里使用的是MySQL数据库. 下面这张表是R 下面这张是S 为了测试左连接和右连接,现在增加一张 ...
- 理解内连接中的隐式内连接、显式内连接和外连接中的左外连接、右外连接
一.多表查询 二.在 MySQL 中创建 book 和 actor 两张表 1 创建 book 表及添加数据 CREATE TABLE `book` (`id` INT PRIMARY KEY NOT ...
最新文章
- OpenResty搭建高性能服务端
- 论文笔记:Stochastic Weight Completion for Road Networks using Graph Convolutional Networks
- 后端系统开发之白名单机制
- Python 三维可视化笔记1 -- TVTK库
- 如何选择开源许可证如何修改项目使其符合某种开源许可证
- 移动时捕捉不到基点_CAD入门学习攻略:CAD软件中对象捕捉功能使用技巧汇总
- linux下卸载mysql(rpm)
- MYSQL MVCC实现及其机制
- Collection和Collections有什么区别?
- android app冷启动,Android冷启动实现APP秒开
- web javascript开发 之Response.Write 与document.writ...
- 【机器学习】一文详尽系列之EM算法
- qqmail的文件中转站可真好用啊
- 从重大事件保障,看华为如何打造一流保障体系
- 伦斯勒理工学院计算机科学专业强吗,伦斯勒理工学院有哪些专业处于世界顶尖水平?...
- 用天文方法计算二十四节气
- 数字IC常考题(单选、多选、编程)
- 【附源码】计算机毕业设计SSM汽车维修服务系统
- Vue CLI 3.x 与 2.x的区别
- 2022计算机考研统考的院校有哪些,2022考研初试科目都有哪些?
热门文章
- 现在的5G手机根本没什么用!为何还有手机厂商争先恐后?
- video 去掉播放按钮并循环播放 可替代gif
- 服务器渲染和浏览器渲染的区别
- Python 使用PyQt5进行界面程序开发
- java中读取logback日志文件_java 控制台 System.out日志输出到logback文件里
- 关于e.printStackTrace的死锁
- 锤子科技临死前被接盘 ,内部人士爆料已改签今日头条母公司
- dateutil 日期计算_时间工具类DateUtil的使用
- PC端品优购网页制作(common.css)2
- JD达人账号注销流程,防止机构不给结算佣金