数据库系统概论期末经典大题讲解(用关系代数进行查询)

简介: 数据库系统概论期末经典大题讲解(用关系代数进行查询)

今天也是结束的最为密集的考试周,在分析过程中自己也有些许解题的感悟,在此分享出来,希望能帮到大家期末取得好成绩。


一.专门的关系运算

1.选择(σ)

选择操作符用于从关系中选择满足特定条件的元组

例如,σ 年龄>20 (学生) 表示选择学生表中年龄大于20的学生(默认取出全部信息)

eg:

下方是一个标准的学生表:

image.png

接下来我们用关系代数表示在学生课程数据库中查询计算机系的全体学生的操作 :

σSdept= ‘计算机系’ (学生) 或者 σ5= ‘计算机系’ (学生)   5代表第五列。

我们经常去选择第一种写法。


选择完后的结果如下:


2.投影(π)

投影操作符用于从关系中选择指定的属性  (即选择指定的列)

例如,π 学号,姓名 (学生) 表示选择学生表中的学号和姓名属性


eg:

image.png

在学生课程数据库中,查询学生的姓名和所在系 :


3.连接(⋈)


连接操作符用于将两个关系进行连接,通常是在它们的公共属性上进行  (一个表不能够满足我的需求)

例如,学生表和选课表可以通过学号进行连接,得到学生选课的信息


eg:

已知关系R, S如下:       R          

                                       S        


求:

按照要求连接后的表格为:


连接的分类:

等值连接:

  • 等值连接是基于两个关系中的属性之间的相等条件来进行连接的。具体来说,如果两个关系 R 和 S 中存在一个属性 A,使得 R.A = S.A,那么这两个关系就可以进行等值连接
  • 等值连接的结果是一个新的关系,包含了满足等值条件的 R 和 S 的元组的组合

自然连接:

  • 自然连接是基于两个关系中相同属性的相等条件来进行连接的。具体来说,自然连接会自动查找两个关系中相同属性名的属性,并根据这些属性进行等值连接
  • 自然连接的语法通常表示为 R ⨝ S,其中 R 和 S 是要进行自然连接的两个关系
  • 自然连接的结果是一个新的关系,包含了满足相同属性值的 R 和 S 的元组的组合,并且会自动去除重复的属性

等值连接和自然连接都是用于将两个关系进行连接操作的方法,它们的区别在于连接的条件和结果的属性

4.除法操作(÷)

R ÷ S   其中,R 和 S 分别是两个关系,R 的属性必须是 S 的属性的超集(全部所有才用÷)

例子:假设有两个关系:学生(学号,姓名)和选课(学号,课程名)。现在想要找出选修了所有课程的学生,可以使用除法操作符来实现:

学生 ÷ π 学号 (选课)


二.较为综合的例题

第一个

已知学生选课数据库模式:

  • Student(Sno, Sname,Sage, Sdept)
  • Course(Cno,Cname)
  • SC(Sno,Cno,Score)

用关系代数进行如下查询:

选修了2号课程的学生的姓名?

计算机系有不及格课程的学生名单

学生张林的“数据库原理”成绩

查询选修了学号为“00002”的学生所选修的所有课程的学生学号和姓名

第二个

图书馆管理数据库

  • 读者(读者编号, 姓名, 单位)
  • 图书(书号, 书名, 作者, 出版社, 单价, 类型)
  • 借阅记录(读者编号, 书号, 借阅日期, 应还日期)
  • 还书记录(读者编号, 书号, 归还日期)

b6578971ed634e22b74c0ae5330d978d.png

0fe1462c622042079bb6cc7a85350cb5.png

3、 查询8号读者2003年3月10日所借图书的相关信息

4、 查询超期归还图书的读者姓名和单位

5、 查询借阅过《天龙八部》的读者的信息


好啦,这次的内容就先到这里啦,下一次大概率是数据库范式,最小依赖集个找主码相关的内容。


目录
相关文章
|
27天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:视图之美,简化查询、提升效率的数据库利器(14)
轻松入门MySQL:视图之美,简化查询、提升效率的数据库利器(14)
|
27天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
|
2月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
2月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
68 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
2月前
|
SQL 存储 JSON
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
亲爱的社区小伙伴们,Apache Doris 2.1.0 版本已于 2024 年 3 月 8 日正式发布,新版本开箱盲测性能大幅优化,在复杂查询性能方面提升100%,新增Arrow Flight接口加速数据读取千倍,支持半结构化数据类型与分析函数。异步多表物化视图优化查询并助力仓库分层建模。引入自增列、自动分区等存储优化,提升实时写入效率。Workload Group 资源隔离强化及运行时监控功能升级,保障多负载场景下的稳定性。新版本已经上线,欢迎大家下载使用!
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
|
2月前
|
存储 NoSQL Redis
【Redis】利用Redis List实现数据库分页快速查询
【Redis】利用Redis List实现数据库分页快速查询
119 0
|
2月前
|
存储 缓存 NoSQL
利用Redis List实现数据库分页快速查询的有效方法
利用Redis List实现数据库分页快速查询的有效方法
|
2月前
|
SQL 关系型数据库 MySQL
用 Python 连接数据库并进行查询。
【2月更文挑战第12天】【2月更文挑战第32篇】用 Python 连接数据库并进行查询。
|
1天前
|
安全 数据管理 数据库
数据管理DMS产品使用合集之要将某个DMS实例中的特定数据库授权给某个用户进行查询,操作步骤是怎样的
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
1天前
|
关系型数据库 数据库 开发者
关系型数据库查询避免SELECT *
有时候你可能会遇到需要选择表中的所有列的情况,但这应该是例外而不是常态。在大多数情况下,你应该尽量避免使用 `SELECT *`。
6 1