关系演算
关系演算
前情回顾:关系代数
整理自教材《数据库系统概论》(第五版)(王珊、萨师煊)
关系演算基于符号逻辑的一个分支:谓词演算,分为两种,元组关系演算(ALPHA语言)和域关系演算(QBE语言)。
元组变元是给定关系上的一个变量,取值范围是该关系上的所有元组。
ALPHA的查询操作
基本格式为:操作语句 工作空间名(表达式):操作条件
其中工作空间名差不多都写的W,不知道它存在在这儿的意义是什么。稍微翻译一下就是:[一般是GET] [一般是W](你要查询的列名):限制和要求
检索操作
简单检索
不带限定条件的检索,比如
限定的检索
带条件的检索,条件在冒号后。比如小于20岁学生的学号
带排序的检索
查询小于20岁学生的学号并且按年龄降序排列。
指定返回元组条数的检索
取出3个AI系学生的学号。
用元组变量的检索
可以简化关系名,而且使用量词
查询AI系学生的名字。
当查询条件来自工作区以外的关系(也就是别的表)时,要用元组变量和量词。
用存在量词的检索
查询选修2号课程的学生名字
把SC(Student-Course)关系的元组叫做X,找到的X的学号
多个关系多个条件
这里的
用全称量词的检索
查询不选2号课程的学生名字
这里的
用两种量词的检索
查询选修了全部课程的学生姓名。
对所有的课程,存在这样的选课关系,使得选课学生学号是Student表中的学号,且课号是Course中的课号。
用蕴涵的检索
啊啊我懒得写了,总之就是条件形如p可以推出q。
更新操作
修改
首先用HOLD语句把要修改的元组读入工作空间,然后用宿主语言修改元组属性(MOVE语句),最后用UPDATE语句写回数据库。
插入
首先用宿主语言在工作空间中新建元组,然后用PUT语句把该元组存入指定关系。
删除
首先用HOLD语句把要删除的元组读入工作空间,然后用DELETE语句删除该元组。
QBE的查询操作
开局一张空白表格,用户在最左上格输入关系名,然后第一行剩下的格会被系统填入关系的属性名。
用户在下面的行构造查询要求,其中P.是操作符,表示打印(也就是显示)。
查询条件中可以使用比较运算符(大于小于不等于……等于的情况就直接写val
而不是=val
)。
示例元素(域变量)是这个域中可能的一个值,不一定是查询结果中的元素。也就是随便在这个域里面挑一个值出来给系统做示范?
然后系统就显示查询结果,也就是之前写了P.的列对应的结果。
SPJ | SNO | PNO | JNO | QTY |
---|---|---|---|---|
P.S1 | J1 |
这个的意思就是要查询SPJ表中所有JNO是J1的SNO,其中示例就是S1,表示S1是SNO属性的一个可能取值。
具体的应用见下一篇的习题!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了