数据库之SQL(基本连接,内连接,左外连接,右外连接,全外连接,交叉连接,自连接)
之前的博客内容我们分享了数据表的查询与管理,但那只是针对数据库中的一个表格进行的查询管理,现在如果我们想要同时看到两个数据表中的数据的话,那要怎么办呢?采用多连接查询的方式。
SQL中有哪几种多连接的方式?
有七种连接的方式:
基本连接,内连接,左外连接,右外连接,全外连接,交叉连接,自连接
如果对连接方式了解的人看到这里会感到很熟悉,但对于不了解的人则是一头雾水,没关系,我们来梳理一下,了解的人可以再重复一遍, 顺便可以提点意见^_^,不了解的人我们来先初步认识一下以上七种连接方式。
一、基本连接
①什么是基本连接?
基本连接又称多表连接,是对多个表内容的查询与连接。
②为什么会有多表连接的存在?
基于数据库的范式理论,数据库的数据查询一个表格未能把信息全部查询出来,所以就涉及到了多表连接的查询。
③多表连接如何连接?
select 不同表格中的列名
from 不同表格
问题一
A,B代表什么?
AB是此代码中的简化定义,在From子句中,表格后面加一个空格即表示可以创建快捷访问或者是重新命名,即班级信息为A表,梅里号为B表
问题二
为什么搜索出来这么多信息?
梅里号表中的数据如下:
因为以上只是select from 的查询语句,而代码则设置了7个内容,所以共查询了7次。以上表格只是简单的查询语句,我们还没有完成多表的连接,多表连接的三要素中我们还差一个where语句。
问题三
加上where语句的效果?
这就查询出来咯,所以,通过以上的例子让我们更加清晰的看到了多表连接的三个必要条件。
问题四
where 在这里起什么作用呢?
关系连接:A表中的班级与B表中的班级建立关联。
二、内连接
①什么是内连接?
内连接也是多表连接,对多表数据进行查询和连接
②那与基本连接有什么区别呢?
我们先看一下他的代码及操作效果:
会发现与基本连接的查询结果是一样的。
那区别在哪里?
内连接与基本连接的查询效果是一样的,都是对多表的查询,只是表现形式,代码不一样而已。
我们看一下代码区别:
基本连接:
内连接:
即在第二个和第三个必备条件上面有区别。
三、外连接,左外连接,右外连接,全外连接
①什么是外连接?
在了解外连接之前我们再重申一下内连接
内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。
外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。
左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。
右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。
全外连接:左外连接 + 右外连接。
②内连接与外连接如何区分?
我的个人理解,内外可看做是符合条件内的行与符合条件外的行
③外连接、左外连接、右外连接,全外连接有什么区别?
我们拿代码及其效果来说话:
A表:梅里号数据:
B表:班级信息数据
内连接:
连接结果仅包含符合连接条件的行
外连接:
连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。
左外连接:
不仅包含1-6符合条件的行,还包含左侧的梅里号表中的不符合条件的其他全部数据。
右外连接:
不仅包含1-6符合条件的行,还包含右侧的班级信息表中的其他不符合条件的全部数据。
全外连接:
不仅包含1-6符合条件的行,还包含左右两侧的班级信息表及梅里号表中的其他不符合条件的全部数据。
四、交叉连接
我们来看一下示例就会清晰多了:
交叉连接不带where子句,返回的连接数是第一个表中符合查询条件的数据行数乘以第二个表中符合条件的数据行数,一下表格中第一表中7行数据,第二表中7行数据,那么交叉连接的查询数为7*7=49
问题一:
交叉的连接是按照什么方式连接的呢?
我们来看以下连个表后应该会清楚一些
即:以cross join右侧的表格为基数,逐步的一对多。
问题二:
加上where子句是什么样的呢?
与基本连接,与内连接的结果是一样的,因为查询的where关联条件是AB表中连接部分‘班级’的交叉数据,那不就是相同数据么。
五、自连接
自连接顾名思义:自己与自己连接,一对多,即同一个数据表的多表连接
'梅里号'表格数据:
自连接后是什么样的呢?
与同一个表格的交叉连接数据相同
六、思维导图
数据库之SQL(基本连接,内连接,左外连接,右外连接,全外连接,交叉连接,自连接)相关推荐
- Oracle 数据库利用sql语句杀掉用户session进程,“ORA-01940: 无法删除当前连接的用户“问题解决办法
错误报告 - ORA-01940: 无法删除当前连接的用户 01940. 00000 - "cannot drop a user that is currently connected&qu ...
- SQL的左连接 ,右连接,内连接和全外连接的4者区别
基本定义: left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录. right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录. inner j ...
- 数据库——自然连接、内连接、外连接(左外连接、右外连接、全外连接)、交叉连接
1. 自然连接(*natural join)* 自然连接不用指定连接列,也不能使用ON语句,它默认比较两张表里相同的列, `SELECT*FROM student NATURAL JOIN score ...
- oracle in的用法_oracle 左连接、右连接、全外连接、内连接、以及 (+) 号用法
Oracle中的连接可分为,内连接(INNER JOIN).外连接(OUTER JOIN).全连接(FULL JOIN),不光是 Oracle,其他很多的数据库也都有这3种连接查询方式. Oracle ...
- oracle 建表id自增长_oracle 左连接、右连接、全外连接、内连接、以及 (+) 号用法...
Oracle中的连接可分为,内连接(INNER JOIN).外连接(OUTER JOIN).全连接(FULL JOIN),不光是 Oracle,其他很多的数据库也都有这3种连接查询方式. Oracle ...
- MySQL 学习笔记(15)— 连接查询(内连接、左外连接、右外连接、全外连接、交叉连接、自然连接等)
本文参考:https://gitbook.cn/gitchat/column/undefined/topic/5db92b68a9c3a53bc3800eff SQL 支持的连接查询包括内连接.外连接 ...
- 左连接 ,右连接,内连接和全外连接的4者区别
基本定义: left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录. right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录. inner j ...
- mysql创建全外连接的视图_「MySql学习」Mysql学习系列之常用数据库查询语句
一.简单查询 简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的表或视图.以及搜索条件等.10.5pt;font-family:"A ...
- Oracle左连接、右连接、全外连接以及(+)号用法
1.准备工作 Oracle 外连接(OUTER JOIN)包括以下: 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应SQL:LEFT/RIGHT/F ...
- 架构师之路 — 数据库设计 — SQL 结构化查询语言
目录 文章目录 目录 SQL 结构化查询语言 SELECT 查询语句 WHERE 过滤语句 ORDER BY 排序语句 GROUP BY 分组语句 集合运算语句 UNION 并集运算 INTERSEC ...
最新文章
- Python3不存在reduce函数
- 【ES6】Generator函数详解
- Oracle“死锁”模拟
- 996+GPA+500
- 对Javascript 类、原型链、继承的理解
- 【蓝桥杯Java_C组·从零开始卷】第五节(一)、BigInteger的使用
- 开放、普惠、高性能-SLS时序存储助力打造企业级全方位监控方案
- 数字图像处理基础与应用学习,第二章
- 【JAVA SE】第十五章 ArrayList、LinkedList、HashMap和HashSet
- 售价扎心!索尼Xperia 5国行版开启预售:骁龙855+1200万后置三摄
- 信息与计算科学偏计算机的学校,信息与计算科学:披着计算机“外衣”的数学专业...
- 计算机关机管理软件,局域网管理利器--大势至远程开关机工具
- 三次hermite插值matlab,三次hermite插值
- DLL load failed while importing rdBase
- 微信小程序 谈谈在大学初次写项目的体验
- Verifying archive integrity... Error in check sums 1981929512 2439459451
- php实现facebook登陆功能
- QCPColorMap实现瀑布图
- 塞北村镇旅游网站设计(论文+PPT+源码)
- selenium+python:元素定位的八种方式