前言

前面已经说了数据系统的概述了,关系模型是目前用得最多的数据模型,其中一个优点就是:有严格的数学理论根据。本文就是来讲解数据库中的各种关系运算的!本文不做数学概念的深入,只要理解相关的概念即可!

为什么我们要学习数据库关系运算?

学习和理解关系运算的机理,对于理解关系数据库中的数据查询机制有十分重要的意义。

我们可能知道多表查询的时候要消除重复多余的数据,那重复多余的数据怎么产生的呢??WHERE字句又是怎么筛选数据的呢??这些问题我们在关系运算中可以找到答案的。

学习数据库的关系运算,会让我们明白SQL语句是怎么执行的,是通过什么手段让我们得到想要的结果。

学习大纲

笛卡尔积

什么是笛卡尔积?

笛卡尔积简单来说就是两个集合相乘的结果。

为什么查询数据库会出现笛卡尔积

前面的博文已经说了,关系模型是关系模式的集合。

数据库中的两张表就相当于两个集合,当我们使用SELECT语句查询数据的时候,DBMS内部就是以集合相乘的运算得出结果

笛卡尔积的产生过程

我们发现:笛卡尔积的基数是每个集合的元组相乘!

得出来的数据内容是难以符合现实中的实际情况的

例子

为了更好地看见效果,我都会以实际的SQL语句来看效果,然后说明问题的。

emp表的记录有14条:

dept表有4条记录:

我们来看看SMITH,在emp表中,他只在20部门。

但在两张表查询后,10、20、30、40部门他都在了!!我们再观察56条数据,发现每个人都有4个部门,这样的数据是不合理的!!

再回到初衷,我们查询两张表的目的是什么??在查询员工信息的同时,也能知道员工的部门名称是什么!!!所以,我们查询的记录数是不应该有56条这么多的。。我们查询的记录数应该是员工表的记录数,也就是14条而已!

我们再来分析:emp表中有deptno字段,dept表中也有deptno字段!而且发现,emp表中的deptno字段的取值范围是由dept表中deptno字段来决定的!!!

所以,我们可以使用等值连接(emp.deptno=dept.deptno)来消除笛卡尔积,这样就达到我们的目的了!

基于传统集合理论的关系运算

在Oracle上,操作集合的语法提供了4个关键字:

UNION(并集,重复的元组不显示)

UNION ALL(并集,重复的元组也会显示)

MINUS(差集)

INTERSECT(交集)

显示查询结果的全部信息,消除重复的元组

例子

查询所有办事员和经理的信息

SELECT *

FROM emp

WHERE job = 'MANAGER'

UNION

SELECT *

FROM emp

WHERE job = 'CLERK';

注意:使用UNION并操作,比使用关键字OR的性能要好!

返回查询结果相同的部分

例子

查询10部门的信息

SELECT *

FROM dept

INTERSECT

SELECT *

FROM dept

WHERE deptno = 10;

(全部部门和部门10只有部门10是相同的,所以最后返回的是部门10的结果)

返回的查询结果是

例子

SELECT *

FROM dept

MINUS

SELECT *

FROM dept

WHERE deptno = 10;

关系代数特有的关系运算

投影

投影的运算过程:

首先按照j1,j2,…,jk的顺序,从关系R 中取出列序号为j1,j2,…,jk(或属性名序列为Aj1,Aj2,…,Ajk )的k 列,然后除去结果中的重复元组,构成一个以Aj1,Aj2,…,Ajk为属性顺序的k 目关系。

简单来说:取出一个查询结果中某某列,并消除重复的数据,这就是投影!

投影是从列的角度进行的运算

投影的下标可是列序号,也可是列属性名

例子

查询出所有部门的编号

SELECTdeptno

FROMdept;

查询时的过程:先查询得出dept表的所有结果,再通过投影运算只提取”deptno”的列数据,如果 SELECT 后边跟的是”*”,那么就是投影全部数据!

选择

使用比较运算符、逻辑运算符,挑出满足条件的元组,运算出结果!

例子

查询出工资大于2000的员工的姓名

SELECTename

FROMemp

WHEREsal > 2000;

过程:首先查询出emp表的所有结果,使用选择运算筛选得出工资大于2000的结果,最后使用投影运算得出工资大于2000员工的名字!

除运算

除运算的实际应用我还没想明白~~~如果有朋友知道除运算能够用在数据库的哪处,请告诉我一声哈。。

我们也了解一下除运算的过程吧:关系R有ABCD,关系S有CD,首先投影出AB(因为S有CD),再用投影出来AB的结果和关系S做笛卡尔积运算。如果做的笛卡尔积运算记录在R关系中找到相对应的记录,那么投影的AB就是结果了!

连接运算

连接运算其实就在笛卡尔积运算的基础上限定了条件(某列大于、小于、等于某列),只匹配和条件相符合的,从而得出结果!

自然连接

自然连接就是一种特殊的连接运算,它限定的条件是【某列等于某列】。自然连接我们经常使用到。消除笛卡尔积其实就是自然连接了!

例子

SELECT *

FROM emp, dept

WHERE dept.deptno = emp.deptno;

设定将dept表的deptno列和emp的deptno列为相同【这就是自然连接】

mysql关系运算_数据库关系运算相关推荐

  1. mysql 投影运算_数据库查询 - 通俗易懂解释:选择、投影、并、差、笛卡尔积、连接 - 小黑电脑...

    关系代数运算 关系代数用对关系的运算来表达查询,运算对象是关系,结果得到关系 关系可以理解为一张二维表,例如一张学生表,就是一个关系,关系代数运算就是我们写sql的一些查询操作,操作表生成新的表或者视 ...

  2. mysql图书管理数据库的三个关系模式_数据库 考虑如下关于图书馆的关系模式,用关系代数写出查询(数据库系统概念第六版6.14)...

    贝尔梅尔娜美 2019.03.15 采纳率:60%    等级:39 已帮助:91565人 数据库系统的基本概念 数据:实际上就是描述事物的符号记录. 数据的特点:有一定的结构,有型与值之分,如整型. ...

  3. mysql关系模式_数据库学习--关系模式

    最近开始做数据库的大实验,其中有一条实验要求如下: 通过网络查找相关文献并参考所给资料进行需求分析,画出系统的 E-R 图,给出实体或联系的属性,标明联系的种类,并写出关系模式. 画ER图没有什么问题 ...

  4. mysql 实体关系表_实体关系图

    解释 实体关系图:简记E-R图是指以实体.关系.属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式.E-R图为实体-联系图,提供了表示实体型.属性和联系的方法,用来描述现实世界的概念模 ...

  5. 简述er图的作用_数据库关系图的作用是什么?

    你的位置: 问答吧 -> MSSQL -> 问题详情 数据库关系图的作用是什么? 一.数据库关系图的作用是什么? 二.ER图的作用是什么? 三.两者之间的差别和联系??? 作者: zhan ...

  6. 管理mysql表知识点_数据库复习提纲(必考知识点整理)

    第1章 绪论 1 数据:数据是数据库中存储的基本对象. 数据库(DB):是长期存储在计算机内.有组织的.可共享的大量数据的集合. 数据库管理系统(DBMS):提供数据定义语言(DDL),用户通过它可以 ...

  7. 数据库mysql的索引_数据库索引

    数据库索引 编辑 锁定 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信 ...

  8. mysql选择题解析_数据库选择题及答案

    在数据库中储存选择题,要设置几张表好呢? 建议这样建 题目表(编号id, 标题, 题目内容) 选项表(题目编号id, 选项) 答案表(题目编号id, 答案) 查询的时候就 select 选项 from ...

  9. mysql实验总结_数据库实验的心得体会.docx

    数据库实验的心得体会 数据库实验心得体会 篇一:数据库实训总结 SQL Server 数据库管理课实训报告 这个星期是我们SQL Server 数据库管理课的实训,经过一个星期的实训,让我将书本上的理 ...

最新文章

  1. python.freelycode.com-Python字节码介绍
  2. 11.10/11.11/11.12 安装PHP5 11.13 安装PHP7
  3. vue-springboot项目 mybatis条件查询结果为null时解决方案 @Param @RequestParam 的参数传递
  4. 云服务器镜像麻烦吗_云服务器的镜像功能有什么作用?
  5. typescript或javascript深拷贝Object json
  6. Docker 安装Centos,Tomcat,Jdk等相关的自定义(Dockerfile)镜像
  7. Silverlight 的文本框自动完成(AutoComplete)
  8. spring源码解析(一)---占位符解析替换
  9. .net core5
  10. 第一次写oracle SQL 两个表链接查询
  11. OpenCasCade – 贴纹理
  12. chrome内核 用h5调用高拍仪(摄像图)实现拍证件照
  13. Intelligent driver model(IDM)
  14. 跨专业考计算机研究生有专业限制吗,我想跨专业考计算机专业研究生
  15. Word动态输出多表格方案(以工资条为例)
  16. 8-详解前缀树贪心算法N皇后问题
  17. 联想小新 Pro 16 2023 评测
  18. 将 s1 和 r1 上的启动配置文件上传到服务器进行备份,packettracer综合技能练习261...
  19. 卡西欧计算机键盘讲解,卡西欧小方块按键介绍
  20. SPWM与SVPWM的比较

热门文章

  1. Win10家庭版 误删winsock和winsock2注册表的解决方案
  2. [开关电源]浪涌电流有点高?我来给你支支招
  3. span标签的使用场景
  4. 多项式函数在某一点处的泰勒展开
  5. CE认证电气间隙和爬电距离要求
  6. Awesome Free ChatGPT(免费的chatgpt镜像网站)
  7. google instant
  8. 力天创见客流统计设备应用分析
  9. Java编程思想+Effective Java+Java核心技术+Java核心技术 卷II+Java语言程序设计(中文+英文+源码)
  10. 无线网络中的单跳和多跳