前面我们讨论了关系代数 ,这是一种过程查询语言。在本文中,我们将讨论关系演算,它是一种非过程查询语言。
什么是关系演算?
关系演算是一种非过程查询语言,它告诉系统要检索哪些数据但不告诉如何检索它。
关系演算的类型
元组关系演算(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
域关系演算(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