mysql 笛卡尔积_Mysql(笛卡尔积、等值连接、自然连接、外连接)
1、笛卡尔积
笛卡尔积的元素是元组,关系A和B的笛卡尔积可以记为(AXB),如果A为a目,B为b目,那么A和B的笛卡尔积为(a+b)列、(a*b)行的元组集合。
(1)学生表和分数表中的信息:
学生表:
分数表(大概就是这个样子):
(2)学生表和分数表执行笛卡尔积后:
SELECT *FROM student JOIN score
可以看出,执行sql语句后,student表中的每一条语句分别与score表中的每一条语句连接。
2、内连接
内连接又称为普通连接或自然连接。在说自然连接之前,应该先说一下连接的概念,连接是从笛卡尔积中选取属性间满足一定条件的元组。连接运算又可以分为等值连接和自然连接。
(1)等值连接
当条件为“=”的连接为等值连接,是连接属性值相等的那些元组。其结果是连接的表的所有列,包括重复列。
还是运用上面的学生表和分数表:
执行以下语句(隐式内连接):
过滤掉没有用的元组,保留想要的有意义的元组。
SELECT *FROM student,score
WHERE student.studentno=score.studentno
或者(显式内连接):
SELECT *FROM student INNER JOIN score ON
student.studentno=score.studentno
即:只有学生表的学号属性和分数表的学号属性相等的时候才会将表中的两个元组相连,与笛卡尔积相比,等值连接添加了限制条件。
(2)自然连接
自然连接不仅要求连接的两个字段必须同名,还要求将结果中重复的属性列去掉。
执行语句:
SELECT *FROM student NATURAL JOIN score
以上自然连接的查询的元组的条数与等值连接相同,只不过是相同的属性(studentno)只保留了一个。
3、外连接
在以上的学生表和分数表的连接中,存在有些学生分数表中没有对应的该学生的分数信息,同样也有可能存在有分数而没有该学生信息的情况。这些找不到对应的元组进行匹配的元组称为悬浮元组。如果把悬浮元组也保留在结果中,那么这种连接就叫做外连接。
(1)左外连接(只保留左边关系中的悬浮元组)
为了使查询结果更明显,故意制造一个没有分数的学生:
INSERT INTO student VALUES('111','12345566','1111-11-11','111','111','男','zhai','890')
插入后如果进行等值连接或自然连接都不会出现学号为"111"的学生的信息。但是,如果进行左外连接的查询,会出现该学生的信息,但是有关该学生的成绩的相关信息为空。
执行以下语句,进行学生表和分数表的左外连接:
SELECT *FROM student LEFT OUTER JOIN score
ON student.studentno=score.studentno
(2)右外连接(只保留右边关系中的悬浮元组):
创建一个学生的分数元组,只有成绩而没有与之对应的学生(学号):
INSERT INTO score VALUES('55','1234344','c8848','87','98','123')
插入后如果进行等值连接或自然连接都不会出现学号为1234344的分数,但是如果进行右外连接,就会出现只有学生的分数信息,而没有该学生的基本信息的情况。
SELECT *FROM student RIGHT OUTER JOIN score
ON student.studentno=score.studentno
4、内连接、外连接之间的关系:
如果用上图来表示内连接与外连接之间的关系的话:
2:代表内连接
1、2:左外连接
2、3:右外连接
mysql 笛卡尔积_Mysql(笛卡尔积、等值连接、自然连接、外连接)相关推荐
- SQL语法 自然连接 外连接 内连接
文章目录 笛卡尔积 连接 内连接 自连接 自然连接 外连接 左外连接 右外连接 区分连接 自然连接 内连接 内连接.外连接 on 和 where 条件过滤的区别 参考链接 笛卡尔积 结果集数目为多个表 ...
- MySQL--基础知识点--64--等值连接/自连接/自然连接/外连接
该篇文章基于以下三个表进行解析 student表 DROP TABLE IFEXISTS `student`;CREATE TABLE student (`sid` INT NOT NULL AUTO ...
- 一文完整MySQL连接查询,笛卡尔乘积,内连接外连接交叉连接
文章目录 笛卡尔乘积 连接查询分类 等值连接 非等值连接 自连接 外连接 交叉连接 连接查询又称为多表查询,当查询的字段来自于多个表时,使用连接查询. 笛卡尔乘积 笛卡尔乘积现象:表1有m行,表2有n ...
- MySQL 表的增删改查(进阶篇②)· 联合查询 内连接 外连接 · 自连接 · 子查询 exists · 合并查询 union
接进阶篇①,我们继续学习. 一.联合查询 1.1 内连接 1.2 外连接 1.3 内连接和左右外连接的区别 二.自连接 三.子查询 3.1 单行子查询 3.2 多行子查询 使用 in 范围匹配多行 另 ...
- 内连接(等值、非等值连接)、外连接(左外连接、右外连接、全连接)、自然连接、自连接
目录 一.交叉连接(笛卡尔积) 二.内连接(等值.非等值连接) 三.外连接(左外连接.右外连接.全连接) 四.自然连接 五.自连接 一.交叉连接(笛卡尔积) 交叉联接返回左表中的所有行,左表中的每一行 ...
- mysql外连接_mysql学习-mysql内连接外连接
SQL99标准,也称为SQL1999标准 分类:内连接,外连接 一.内连接 使用 inner join ...on 语法: select 列名1 别名1,列名2 别名2... from 表名1 别名 ...
- oracle内连接使用,Oracle中的联合查询-自然连接/外连接/内连接
自然连接 select * from r1 natural [inner] join r2 natural [inner] join r3 where P; select A1,A2 from r1 ...
- mysql 语音_MySQL 在各种程序语音的连接字符串(转)
一.MySQL Connector/ODBC 2.50 (MyODBC 2.50)连接方式 1.本地数据库连接Driver={MySQL};Server=localhost;Option=16834; ...
- MySQL sql99语法—左(右)外连接
应用场景:用于查询一个表中有,另一个表中没有的记录. 特点: 外连接的查询结果为主表中的所有记录,如果从表中有和他匹配的,则显示匹配的值,如果从表中没有,则显示 null. 外连接查询结果 = 内连接 ...
- java内连接外连接_SQL中的内连接与外连接--Java学习网
核心提示:连接运算格式链接运算由两部分构成:连接类型和连接条件连接类型可分为:INNER JOIN 内连接LEFT OUTER JOIN 左外连接RIGHT OUTER JOIN 右外连接FULL O ...
最新文章
- 信息安全管理体系 ISMS
- (经典)Hibernate多对一关系映射(四)
- SAP ABAP F4的检索帮助(包括自定义检索帮助)
- 机器学习中的训练与损失 test and loss (训练loss不下降原因集合)
- PL/SQL NOCOPY限制模式
- 腾讯2020校园招聘后台开发面试编程题
- 【React性能优化】 redux优化
- 右下角使用css,CSS3 屏幕右下角的径向菜单
- 【运维】PowerShell编程 目录文件相关方法的封装与案例详解
- 来自糯大米童鞋的 纯 golang 的 mp4 读写库。
- python爬虫淘宝视频_python爬虫视频教程:一篇文章教会你用Python爬取淘宝评论数据...
- 【Magick++】配置开发环境
- HTTP 412状态码
- 5G专网大上行带宽技术设计与实现
- 骨骼动画详解 和 帧动画
- Python 3 print() 输出自动换行
- 计算机计算器logo,计算器品牌哪个比较好(卡西欧stylish计算器入手体验)
- 利用github pages做免费静态网站个人免费域名空间
- 看css禅意花园记的笔记
- [转]当当网高可用架构之道--转
热门文章
- 个人单干也能实现年入百万(玩转私域流量)
- 【转载】多网卡的7种bond模式原理
- 硅谷归来,七大感触——You Only Live Once
- 数据通信基础 - 信道特性(奈奎斯特定理、香农定理 )
- Erlang/OTP:基于Behaviour的回调函数
- 让按钮变灰色,不可用/
- RDKit|分子指纹提取、相似性比较及应用
- js实现给定图片路径自动下载
- (附源码)基于Python的“书怡”在线书店系统的设计与实现 毕业设计082332
- 【车载】TCS/ASR/TRC牵引力控制系统