当前位置: 首页 > news >正文

关系运算(3)

关系代数

昨天讲完附加关系代数运算,今天讲扩展关系代数运算。

扩展代数运算

正如其名,这种运算定义了前面基本和附加都没有的运算。

去重运算

可以将关系R中跟查询条件相关但是形成了重复的元组去除,只保留查询结果(简洁)

比如查询学生表中的所有系别:

广义投影运算Π

它与前面提到的投影运算区别在于:前者可以对要选取的属性列进行运算或者字符串函数,而后者不行。

比如在学生表中并没有学生出生年份这一属性,但是我们可以通过2021-Sage通过广义投影来实现:

(1)算术运算

查询所有学生的学号、姓名、出生年份

结果会是:

(2)字符串函数

假设现在有一个员工表Employees,并且查询员工ID和员工姓名并且要求姓名都是大写:

ΠEmployeeID, UPPER(FullName)(Employees)

结果将是:

EmployeeID

FullNameInUpperCase

E001

ALICE WONDERLAND

E002

BOB BUILDER

E003

CAOL DREAMER

其中UPPER就是一个字符串函数

聚集运算

其中Fi是聚集函数,常用的聚集函数包含count、sum、avg、min、max等,分别是计算所查属性列下满足条件的元组数量(元素数量)、对属性列下的分量数值进行求和、对属性列下的分量数值进行求和进行求平均值、查找该属性列下数值的最小值、查找该属性列下数值的最大值。

以count、avg为例:

(1)查询学生总人数:

查询结果会返回5.

(2)查询学生总人数、以及学生平均年龄

查询结果:

分组运算

(1)比如查询各个系的男生和女生人数:

结果:

会看到系别只剩下四个元组,性别也是四个,这是由于该运算会去除重复的部分,即

这个符号前的属性列只会保留必要的属性值,而符号后的跟聚焦运算一样

(2)查询所有选课学生的学号及平均分:

结果:

根据上面的,Sno在运算符号前所以成绩表中的Sno属性列中的学号每一个只计算一次。

排序运算

将学生表按照年龄排序,对于年龄相同的元组按照学号排序

对于A1列取值相同的元组按照A2的值进行排序,以此类推。

关系代数运算表达式总结

来试试几道例题:

(1)查询选修了1号课程的学生学号、姓名及成绩

该表达式会先进行自然连接,后是查询,再是投影运算

注:SC是学生选课表,Student是学生表

(2)查询选修了1号课程的学生学号、姓名及成绩

可以有两种表示:

但是下面的会比上面的更加高效,因为在进行自然连接之前先通过查询减少了参与连接的元组数。

关系演算

我们在关系运算(1)中说过关系演算和SQL一样都属于非过程式的查询语言。只描述要查询的数据,而不描述如何查询的过程

元组关系演算

(1)查询年龄≥18的学生的学号、姓名、性别、年龄、所在系

其中t是指我要的查询结果是元组,即元组变量

结果:

(2)查询年龄≥18的学生的学号:

语句含义:

查询结果:

域关系演算

(1)查询年龄大于等于18的学生的学号、姓名、性别、年龄、所在系。

  1. 查询年龄大于等于18的学生的学号:

在|前面的是域变量,相当于前面元组关系演算关系那样。

http://www.lryc.cn/news/458086.html

相关文章:

  • tp6的系统是如何上架的
  • Vue:开发小技巧
  • 力扣之1369.获取最近第二次的活动
  • Python 和 Jupyter Kernel 版本不一致
  • Android常用布局
  • 初级网络工程师之从入门到入狱(五)
  • JavaScript轮播图实现
  • 【LLM开源项目】LLMs-开发框架-Langchain-Tutorials-Basics-v2.0
  • Python 爬取天气预报并进行可视化分析
  • 最左侧冗余覆盖子串
  • 性能测试-JMeter(2)
  • 芯课堂 | Synwit_UI_Creator(μgui)平台之图像处理篇
  • QT C++ 软键盘/悬浮键盘/触摸屏键盘的制作
  • element-ui点击文字查看图片预览功能
  • SpringBoot集成Redis使用Cache缓存
  • 【瑞萨RA8D1 CPK开发板】lcd显示
  • 算法收敛的一些证明方法与案例
  • 基于vue框架的蛋糕店网上商城740g7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 你真的了解Canvas吗--解密六【ZRender篇】
  • 孤独相伴 - 结婚十七年
  • json-server,跨域
  • 【Conda】修复 Anaconda 安装并保留虚拟环境的详细指南
  • 转行高薪 AI 产品经理,快速入门方法在此处
  • 初识环境变量
  • 成像基础 -- 景深计算
  • Git中从dev分支恢复master分支
  • 12.5 Linux_进程间通信_信号灯
  • Linux——cp-mv-rm命令
  • 上升点列
  • 刷题 链表