精华内容
下载资源
问答
  • 数据库关系运算

    2019-09-18 23:08:09
    前言 前面已经说了数据系统的概述了,关系模型是目前用得最多的数据模型,其中一个优点就是:有严格的数学理论根据。... 为什么我们要学习数据库关系运算? 学习和理解关系运算的机理,对...

    前言

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

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

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

    我们可能知道多表查询的时候要消除重复多余的数据,那重复多余的数据怎么产生的呢??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 目关系。

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

    • 投影是从列的角度进行的运算
    • 投影的下标可是列序号,也可是列属性名

    例子

    查询出所有部门的编号

    
    
     SELECT deptno FROM dept; 

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

    这里写图片描述


    选择

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

    例子

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

    
    
    SELECT ename FROM emp WHERE sal > 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列为相同【这就是自然连接】


    转载于:https://my.oschina.net/u/3568681/blog/1610428

    展开全文
  • 为什么我们要学习数据库关系运算?学习和理解关系运算的机理,对于理解关系数据库中的数据查询机制有十分重要的意义。我们可能知道多表查询的时候要消除重复多余的数据,那重复多余的数据怎么产生的呢??WHERE字句....

    前言

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

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

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

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

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

    学习大纲

    7e90b7ef74924bf4d9c575f76aa93660.png

    笛卡尔积

    什么是笛卡尔积?

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

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

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

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

    笛卡尔积的产生过程

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

    dffe5946430916385c261158ab68901a.png

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

    9507b8379299a756108fe41110a1095b.png

    例子

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

    emp表的记录有14条:

    47a5b3d55537e2b4d6c947e19891b29a.png

    dept表有4条记录:

    a5566b95881d41b07faacbc140128742.png

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

    ef9d71c8a6609adf51afd1f0b29a8145.png

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

    379c6b618069192c1ec21c4b0bf83445.png

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

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

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

    1b2897d9ca5b619e823c89fe94ec5cda.png

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

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

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

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

    MINUS(差集)

    INTERSECT(交集)

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

    cbc8fe955f37feb54ad25947745b1286.png

    例子

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

    SELECT *

    FROM emp

    WHERE job = 'MANAGER'

    UNION

    SELECT *

    FROM emp

    WHERE job = 'CLERK';

    19b2150dbe48f8de27e76aff3d4c1fe3.png

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

    返回查询结果相同的部分

    0864748e4470b45354d7192e2042a574.png

    例子

    查询10部门的信息

    SELECT *

    FROM dept

    INTERSECT

    SELECT *

    FROM dept

    WHERE deptno = 10;

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

    f32b8e0821f42be9af0067369b7572c4.png

    返回的查询结果是

    c36e44daa11cc19b332074a19099d086.png

    c72cb73b30b570d19e83361372fa03f8.png

    例子

    SELECT *

    FROM dept

    MINUS

    SELECT *

    FROM dept

    WHERE deptno = 10;

    e738af1b2b2d29cf406a326f0edc52d0.png

    关系代数特有的关系运算

    投影

    投影的运算过程:

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

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

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

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

    例子

    查询出所有部门的编号

    SELECTdeptno

    FROMdept;

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

    08c4e21871f4356d197c1b997bd65524.png

    选择

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

    例子

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

    SELECTename

    FROMemp

    WHEREsal > 2000;

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

    5ac9683ed2b1aa1234aca081a3cc5a24.png

    除运算

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

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

    3479af95cc5823adf67fdfb3e6de0946.png

    连接运算

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

    自然连接

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

    例子

    SELECT *

    FROM emp, dept

    WHERE dept.deptno = emp.deptno;

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

    展开全文
  • 数据库原理之关系数据库关系运算

    万次阅读 多人点赞 2018-12-06 10:10:31
    关系数据库关系运算 选择 投影 链接 除运算 选择运算 选择运算是从关系R中选取使逻辑表达式F为 真的元组,是从行的角度进行的运算 投影运算 投影操作主要是从列的角度进行运算,但投影之后...

    关系数据库关系运算

    • 选择
    • 投影
    • 链接
    • 除运算

    在这里插入图片描述

    选择运算

    在这里插入图片描述

    选择运算是从关系R中选取使逻辑表达式F为 真的元组,是从行的角度进行的运算
    在这里插入图片描述

    投影运算
    在这里插入图片描述

    投影操作主要是从列的角度进行运算,但投影之后不仅取消可原关系中的某些列,而且还可能取消某些元组(避免重复行)
    在这里插入图片描述
    连接运算

    连接运算又有等值连接,自然连接,半连接,左外连接,右外连接,全外连接。

    在这里插入图片描述

    • 等值连接
      在这里插入图片描述
    • 自然连接
      在这里插入图片描述
    • 半连接
      在这里插入图片描述
      R和S自然连接后,保留R属性的投影
    • 左外连接
      在这里插入图片描述
    • 右外连接
      在这里插入图片描述
    • 全连接
      在这里插入图片描述
      一般连接操作是从行的角度进行运算,自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。
      在这里插入图片描述

    除运算

    在这里插入图片描述
    在这里插入图片描述
    除运算是同时从行和列的角度进行的
    在这里插入图片描述

    关系代数表达式
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 数据库关系运算——除运算

    万次阅读 多人点赞 2018-07-02 22:29:05
    书上给“除运算”的定义是: 设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。 我对此不是很理解。 直到看到这样的解读,方才恍然大悟: ...

    书上给“除运算”的定义是:

    设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。

    我对此不是很理解。
    直到看到这样的解读,方才恍然大悟:
    这里写图片描述

    这里写图片描述

    展开全文
  • 关系数据库关系运算

    2020-02-25 00:04:20
    选择 选择的逻辑表达式的基本形式为:XθY。其中θ代表比较运算符,它... 关系R上的投影是从关系R中选出若干属性列组成新的关系。它是从列的角度进行的运算。由于投影取消了某些列之后可能出现重复的行,应取消...
  • 为什么我们要学习数据库关系运算?学习和理解关系运算的机理,对于理解关系数据库中的数据查询机制有十分重要的意义。我们可能知道多表查询的时候要消除重复多余的数据,那重复多余的数据怎么产生的呢??WHERE字句....
  • SQL数据库关系运算

    千次阅读 2018-11-02 21:29:14
    设有如下所示的关系S、SC和C, S(sno,sname,ssex,sage,sdept)(学号,姓名,性别,年龄,专业) C(cno,cname,cpno,credit,tname)(课程号,课程名,先行课号,学分,老师姓名) SC(sno,cno,grade) 试用关系代数表达式表示...
  • 一、 1.假设A能推B:那么每个A1所对应的B的属性值应该一样,由于B的第一行和第三行分别是B1和B3,故A不能推B。...发现只存在C推D,AB推C,AB推D三种关系, 那么主键为AB。 由于没有非主属性部分依赖于.
  • https://blog.csdn.net/skyejy/article/details/80890842
  • 数据库中存储了大量的关系(表)之后,要对其进行增删查改等操作,其一般通过SQL类语言来实现,而语言实现的基础就是对关系进行一定的集合(关系代数)或逻辑处理(关系演算、域演算),然后返回处理结果。1、关系...
  • https://blog.csdn.net/baidu_22153679/article/details/52454748?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161560641816780274177280%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522...
  • 数据库关系运算:自然连接,投影,交,除,并

    万次阅读 多人点赞 2019-04-23 21:49:07
    自然连接是一种特殊的等值连接,他要求两个关系表中进行比较的必须是相同的属性列,无须添加连接条件,并且在结果中消除重复的属性列。 sql语句:Select …… from 表1 natural join 表2 结果: 2.投影 投影是选取...
  • 我们学习关系运算的机理,对我们理解数据库查询操作非常重要 所以我们进行关系操作时很大程度上需要明白关系操作以及关系之间的逻辑 在我们进行数据库查询操作时,如何规范的使用数据库语言,如何进行选择时能够消除...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,423
精华内容 969
关键字:

数据库关系运算