mysql自然连接和等值连接_区分笛卡儿积,自然连接,等值连接,内连接,外连接...
1.区分笛卡儿积,自然连接,等值连接,内连接,外连接(左连接,右连接和全连接)
假设存在两张表R和S,这里使用的是MySQL数据库。
下面这张表是R
下面这张是S
为了测试左连接和右连接,现在增加一张表T,字段和S表的字段一样,只是数据不一样。
1)笛卡儿积
那么R和S的笛卡儿积
SQL语句如下:
select * from R,S;或select * from R cross join S;
结果如下:
笛卡儿积cross join 象征着返回所有的情况。
2)自然连接
连接是由笛卡儿积和选择操作组合而成,进行连接操作的表必须要有相同的字段,否则进行连接操作就没有意义了。(这里并不是要求两张表里都有相同名称的字段,而是要求两个表单都有一个字段表达的是一个意思,如学生表S有一个S#字段,用来唯一标识一个学生,而成绩表SC里有一个字段SC#,它是用来标识指定学生的成绩的)。”natrual join 自然连接”的处理方式:先进行笛卡儿积操作,然后重复的属性只保留一份。如R和S进行自然连接,R和S都存在属性B,所以进行自然连接后结果只包和属性A,B,C。
自然连接的步骤是将第一张表的第一条记录和第二张表的每一条记录匹配,如果符合条件就组成一条记录,然后第一张表的第二条记录再和第二张表的每一条记录匹配,这步骤一直循环到第一张表的最后一条记录。
R和S的自然连接
SQL语句如下:
select R.A,R.B,S.C from R,S where R.B = S.B;或select * from R natural join S;
结果如下:
3)等值连接
其实等值连接就是内连接。
4)内连接
“inner join 内连接”的处理方式:虽然重复,但两份都保留。如R和S进行内连接,R和S都存在属性B,进行内连接后结果包含属性A,R.B,S.B,C。内连接的结果和自然连接的结果是一样的,只不过是显示的属性不一样而已。内连接会将两张表的重复属性都分别列出来。
R和S的内连接
SQL语句如下:
select * from R,S where R.B=S.B;或select * from R inner join S on R.B=S.B;
结果如下:
5)左连接
left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。左(外)连接,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。其实就是将右边的表的第一项根据条件分别和左边的每一行数据进行对比,如果符合条件,就拼成一条记录。
SQL语句如下:
select * from R left join S on R.B=S.B;
结果如下:
这个或许不太能体现,下面再看一下表R和T的左连接结果,
SQL语句如下:
select * from R left join T on R.B=T.B;
结果如下:
6)右连接
right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。与左(外)连接相反,右(外)连接,左表只会显示符合搜索条件的记录,而右表的记录将会全部表示出来。左表记录不足的地方均为NULL。
右连接的匹配步骤是先将左边的表的第一项根据条件分别和右边的每一行数据进行对比,如果符合条件,就拼成一条记录。
SQL语句如下:
select * from R right join S on R.B=S.B;
结果如下:
下面再看一下表R和T的右连接结果,
SQL语句如下:
select * from R right join T on R.B=T.B;
结果如下:
7)全连接
全连接也是属于外连接的一种。但是MySQL里没有全连接的关键字。但是可以通过union来实现。
注意:
UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
下面看一下表R和T的右连接结果,
SQL语句如下:
(select * from R left join T on R.B=T.B) union (select * from R right join T on R.B=T.B);
结果如下:
mysql自然连接和等值连接_区分笛卡儿积,自然连接,等值连接,内连接,外连接...相关推荐
- Oracle数据库:oracle外连接left/right/full outer join on,oracle扩展的左右外连接展示符号(+)
Oracle数据库:oracle外连接left/right/full outer join on,oracle扩展的左右外连接展示符号(+) 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大 ...
- oracle 连接查询(内、外连接、自连接、子查询)
内连接: 一般使用inner join来实现.其中inner关键字可以省略 同时必须在from子句之后定义一个on子句,用来指定连接条件 外连接 1 左外连接:关键字为left outer join或 ...
- Oracle 内、外连接
一.Oracle连接类型 ☆说明:按照自己的理解划分的类型,并不是官方定义. 1.内连接 ①等值连接 ②非等值连接 ③自然连接 2.外连接 ①左外连接 ②右外连接 ③全外连接 二.表数据准备 ...
- oracle内与外连接,Oracle (内连接)与(外连接)区别
表stu id name 1, Jack 2, Tom 3, Kity 4, nono 表exam id grade 1, 56 2, 76 11, 89 内连接(显示两表匹配的id) select ...
- bluecam连接步骤说明_迈拓维距Type-C扩展坞手机连接电视图文教程
本教程为迈拓维距Type-C扩展坞UC21连接手机投屏电视模式和电脑模式的图文说明,适用于Type-C接口支持视频功能的手机,如华为P30.华为P30 Pro.华为Mate20.华为Mate20 Pr ...
- 昆仑通态如何连接sqlserver数据库_三菱FX5U 与昆仑通态触摸屏的连接操作步骤
首先我们来看下昆仑通态触摸屏的界面设置. 1.点击设备窗口,进入添加PLC 2.先添加一个TCP的父串口,在下面添加5U的设备 3.双击TCP父设备,进行学习设置,输入触摸屏本身的IP地址,选择本地 ...
- windows无法连接到打印机_同事的电脑无法访问,共享打印机连接不上,问题都在这...
作为一个it服务工作者,发现大家平时遇到最多的问题就是公司内部同事的电脑访问不了或者共享打印机打印不了等等.所以今天给大家分享一下引起这些问题的原因所在和解决办法. 其实我们只要掌握了核心的几个关键点 ...
- acegis连接使用方法_利用ArcGis进行地理处理之四(空间连接)
利用ArcGis进行地理处理之四(空间连接) 一.应用目标 在实际工作中,空间连接利用最多的是点数统计.如按照县域统计井数.这个目标实现的方法很多,比如先做相交,再用excel进行统计:再比如利用裁剪 ...
- tplink连接服务器失败_求大神!!!tp-link无线路由连接提示服务器无响应!咋回事!求解!!...
有线宽带连接没问题!可以上网!就是接了无线之后电脑上不了!手机!笔记本连接无线都上不了!以前一直好用!就是一次停电之后用不了!一开始以为路由坏了,就新买了一个!结果!状况... 有线宽带连接没问题!可 ...
最新文章
- ICLR 2021论文接收统计出炉!Top20 机构,国内仅清华在榜!
- 【LeetCode 剑指offer刷题】查找与排序题14:Wiggle Sort(系列)
- C++ 实现二叉树的非递归层次遍历(队列实现)
- android qq弹出菜单,Android开发实现qqminihd 左右滑动菜单效果
- siblings() 获得匹配集合中每个元素的同胞,通过选择器进行筛选是可选的。
- 阶段3 2.Spring_01.Spring框架简介_01.spring课程四天安排
- SpringBoot之Junit单元测试
- python语言实现指纹识别_Python语言之指纹识别是目前最成熟的识别技术!Python能分分钟做出一个来!...
- hello Java 第一天的认识
- 阿里云存储OSS之九大使用技巧
- Balanced Substring
- uniapp editor编辑器
- python的dict
- laravel 5.5 The page has expired due to inactivity. Please refresh and try again
- 软件设计与体系结构——创建型模式
- 将电脑调成护眼色不一定起到护眼的功能
- Robot Toolbox (一):Puma机器人仿真
- 如何与VMware虚拟机共享文件
- [经典教坛]方法总比问题多(完整版)
- 超市库存管理系统java_java实现超市库存管理系统