💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# DBMS 关系演算 > 原文: [https://beginnersbook.com/2019/02/dbms-relational-calculus/](https://beginnersbook.com/2019/02/dbms-relational-calculus/) 在上一个教程中,我们讨论了[关系代数](https://beginnersbook.com/2019/02/dbms-relational-algebra/) ,这是一种过程查询语言。在本教程中,我们将讨论关系演算,它是一种非过程查询语言。 ## 什么是关系演算? 关系演算是一种非过程查询语言,它告诉系统要检索哪些数据但不告诉如何检索它。 ## 关系演算的类型 ![DBMS Relational Calculus](https://img.kancloud.cn/4d/3d/4d3de72e1360579cb18cf959c1ff538a_500x300.jpg) ## 1\. 元组关系演算(TRC) 元组关系演算用于选择满足给定条件的元组。 表:`Student` ``` First_Name Last_Name Age ---------- --------- ---- Ajeet Singh 30 Chaitanya Singh 31 Rajeev Bhatia 27 Carl Pratap 28 ``` 让我们编写查询的关系演算。 查询来显示年龄大于 30 岁的学生的姓氏。 ``` { t.Last_Name | Student(t) AND t.age > 30 } ``` 在上面的查询中,您可以看到由`|`符号分隔的两个部分。第二部分是我们定义条件的地方,在第一部分中我们为所选元组指定了要显示的字段。 上述查询的结果将是: ``` Last_Name --------- Singh ``` 查询来显示姓氏为`"Singh"`的学生的所有详细信息。 ``` { t | Student(t) AND t.Last_Name = 'Singh' } ``` **输出:** ``` First_Name Last_Name Age ---------- --------- ---- Ajeet Singh 30 Chaitanya Singh 31 ``` ## 2\. 域关系演算(DRC) 在域关系演算中,记录基于域进行过滤。 我们再次采用相同的表来了解 DRC 的工作原理。 表:`Student` ``` First_Name Last_Name Age ---------- --------- ---- Ajeet Singh 30 Chaitanya Singh 31 Rajeev Bhatia 27 Carl Pratap 28 ``` 查询来查找年龄大于 27 岁的学生的名字和年龄 ``` {< First_Name, Age > | ∈ Student ∧ Age > 27} ``` **注:** 用于逻辑运算符的符号为:`∧`表示 AND,`∨`表示 OR,`┓`表示 NOT。 **输出:** ``` First_Name Age ---------- ---- Ajeet 30 Chaitanya 31 Carl 28 ```