关系代数运算

关系代数用对关系的运算来表达查询,运算对象是关系,结果得到关系

关系可以理解为一张二维表,例如一张学生表,就是一个关系,关系代数运算就是我们写sql的一些查询操作,操作表生成新的表或者视图

关系代数的运算有两种:

运算符为传统的集合运算符:并、差、交、笛卡尔积

运算符为专门的关系运算符:选择、投影、连接、除

传统的集合运算符:从表的行的角度进行运算,所以需要运算的关系R、S具有相同的属性列的类型、属性列数目

专门的关系运算符:涉及到列、行,没有那些限制

其他:选择、投影、并、差、笛卡尔积是查询操作的基本操作,其他操作可以由这5种基本操作推出

关于这些操作的概念是很晦涩的,结合具体的SQL来理解

并(union)

并操作两个关系R、S,得到的关系由属于R或S的元组组成,就是逻辑并

对应的Sql操作就是Union

第一次查询的id=1的关系 并 第二次查询id=2的关系 的结果:

and的结果也是这样的,为什么不说and呢?

这里主要谈的是并的思想,两个关系的并运算,and的话并不是两个关系的运算

差(except)

差:关系R与关系S的差由属于R而不属于S的所有元组组成

很明显,完成差的查询操作只需要从R中排除R与S交集关系即可,用not in关键字sql查询

实际上存在except关键字,Mysql不支持

换成Sql Server试试:

select * from 学生 where 学号 < 3

except

select * from 学生 where 学号 = 1;

但是没必要记这么多关键字,了解思想就行

笛卡尔积(cartesian product)

m个属性的关系R与n个属性的关系S,笛卡尔积为(m+n)列的元组的集合,行数为(m*n)

我们常用的没有限制的表连接就是笛卡尔积

选择(Selection)

选择又称为限制,在关系R中选择满足给定条件的元组,也就是筛选行

sql语句对应的就是我们的where关键字

投影(projection)

投影:关系R上的投影是从R中选择出若干属性列组成新的关系

这不就是select语句吗?从表R中选择一些属性组成新的关系

下面得到的结果就是一个新的关系

小结

五种基本操作:并、差、笛卡尔积、选择、投影 就是这么简单

相关的概念很晦涩但是完整,我们学习时需要通俗

由这5个基本查询操作,可以组成复杂的关系运算,例如连接

连接(join)

连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元组

连接可以分为:

内连接:两个关系R、S的笛卡尔积限制了一些条件,抛弃R、S中公共属性值不存在相等的元组;等值连接、非等值连接

外连接:没有抛弃R、S中公共属性值不存在相等的元组;左外连接、右外连接、全连接

交叉连接(笛卡尔积)

内外连接的区别在与那些被舍弃的元组是否保存到了结果中,通过后面的sql来理解

teacher、student表:

内连接:

等值连接

select * from student,teacher where student.id = teacher.tid;

仅取出student.id = teacher.tid的元组

非等值连接,也就是不是等号,而是>、

select * from student,teacher where student.id > teacher.tid;

内连接不加限制就是交叉连接了,也就是笛卡尔积

外连接:R、S中舍弃的元组也保存到结果中,而在其他属性上填空值

左外连接:只保留左边关系R的舍弃的元组

select * from student left join teacher on student.id = teacher.tid;

右外连接:只保留右边关系S的舍弃的元组,因为我们teacher表比student表少,所以交换一下位置

select * from teacher

right join student on student.id = teacher.tid;

全连接:左右两表中的舍弃的元组都保留

MySQL不支持full join关键字,但可以通过左连接 union 右连接实现

Sql Server:

select * from 学期成绩 R full join 课程注册 S on R.课程编号 = S.课程编号;

这两个表是这样的:

可以获得查询结果:

Mysql通过左连接 union 右连接就不实现了

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

  1. mysql关系运算_数据库关系运算

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

  2. mysql关系运算_数据库中的关系运算

    1.和(Union)运算.针对行 针对两张具有相同属 性的表,将两者表合并起来,在合并过程中遇到重复的行保留一项就行了. 2.差(difference)运算.针对行 vc3Ryb25nPjwvcD4K ...

  3. mysql单台跨数据库查询_在MySQL中怎样进行跨库查询?

    在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询:另一种是不同服务的跨库查询:它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 一.同服务的跨库查询 同服务的跨库查询只需要在关联 ...

  4. mysql数据库查询工具''_数据库查询工具

    多肉数据查询系统是一款非常实用的查询多肉植物小工具,软件提供了多肉植物的习性.照片.如何培养等等功能,对于喜欢在家里养些花花草草的用户会有很大的帮助,操作也很简单,基本一看就会.接下来非凡软件站小编就 ...

  5. mysql中db的名词解释_数据库常用名词解释大全

    ◆DB:数据库(Database), DB是统一管理的相关数据的集合.DB能为各种用户共享,具有最小冗余度,数据间联系密切,而又有较高的数据独立性. ◆超键:在关系中能唯一标识元组的属性集称为关系模式 ...

  6. 查询mysql的函数_数据库基本查询函数

    1.注释语法:--,# 2.后缀是.sql的文件是数据库查询文件 3.保存查询 4.在数据库里面 列有个名字叫字段 行有个名字叫记录 CRUD操作: create 创建(添加) read 读取 upd ...

  7. mysql 统计男女生人数_数据库查询男女的人数分别是多少?

    展开全部 数据库查询男女的人数:62616964757a686964616fe59b9ee7ad9431333365633864 1.select stuClass,count(stuName) 班级 ...

  8. mysql账目表_数据库1(数据库、表及表数据、SQL语句)

    01数据库概念 A: 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来, 用户可以对数据库中的数据进行增加,修改,删除及查询操作. B: 什么是数据库管理 ...

  9. mysql 事务原子性_数据库事务原子性、一致性是怎样实现的?

    先借用前辈的一句话:数据库事务有不同的隔离级别,不同的隔离级别对锁的使用是不同的,锁的应用最终导致不同事务的隔离级别. 隔离性分为四个级别: 1读未提交:(Read Uncommitted) 2读已提 ...

最新文章

  1. 训练深度学习网络时候,出现Nan是什么原因,怎么才能避免?——我自己是因为data有nan的坏数据,clear下解决...
  2. jsp+mysql开发论坛程序
  3. 九背包上的发言稿_01背包
  4. 【OS】课设记录总结+进程整理
  5. Linux MISC 驱动实验
  6. 数据库——关系数据理论学习笔记
  7. vba操作word删除某些页面
  8. UI设计中的“吐司”是什么意思?
  9. 想自学编程?这么多编程自学网站,总有一个适合你吧!
  10. Enhancing Label Correlation Feedback in Multi-Label Text Classification via Multi-Task Learning
  11. 用 git 拉代码时报错:Git Pull Falied:You have not concluded your merge.Exiting because of unfinished
  12. c语言 椭圆,C语言画圆椭圆
  13. 待到凤凰花开季,惟愿前程皆似锦
  14. 什么是抖音小程序 小程序该怎么做
  15. 李开复:人工智能对人类真正的威胁是什么?
  16. 【动态系统的建模与分析】伯德图-笔记
  17. 数据库打开数据表_使用微数据打开您的数据
  18. regexp_substr
  19. 江苏省的计算机二级考试c语言
  20. 转:090906爆笑COD4山寨剧情

热门文章

  1. Maven - 客户端 Nexus 配置
  2. 不用电的计算机(一)
  3. Python 和matlab 关于DMD(动态模态分解)的实现和对比 21/06/08
  4. 四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型
  5. HTML页面下雪特效
  6. 李嘉诚能否再续神话?“长科版”上市内幕
  7. net-java-php-python-人事工资管理系统计算机毕业设计程序
  8. 推流式搅拌器选型功率计算方法_潜水搅拌机如何计算功率
  9. 通过蓝点无限的学习,对UWB实现的过程以及对UWB连接WIFI的遇到的问题进行复盘
  10. 什么是 ETL ?什么是 ELT ?