📅  最后修改于: 2021-01-11 06:17:00             🧑  作者: Mango
关系数据库系统应配备一种查询语言,该语言可以帮助其用户查询数据库实例。查询语言有两种-关系代数和关系演算。
关系代数是一种过程查询语言,它将关系实例作为输入,并产生关系实例作为输出。它使用运算符执行查询。运算符可以是一元或二进制。他们接受关系作为他们的投入,并接受产量关系作为他们的产出。关系代数是在关系上递归执行的,中间结果也被视为关系。
关系代数的基本运算如下-
我们将在以下各节中讨论所有这些操作。
它从一个关系中选择满足给定谓词的元组。
符号– σP(R)
其中σ代表选择谓词, r代表关系。 p是介词逻辑公式,可以使用and和or或not这样的连接符。这些术语可能使用关系运算符,例如-=,≠,≥,<,>,≤。
例如–
σsubject = "database"(Books)
输出-从主题为“数据库”的书中选择元组。
σsubject = "database" and price = "450"(Books)
输出-从主题为“数据库”且“价格”为450的书中选择元组。
σsubject = "database" and price = "450" or year > "2010"(Books)
输出-从主题为“数据库”且“价格”为450的书籍或2010年以后出版的书籍中选择元组。
它投影满足给定谓词的列。
表示法-∏ A 1 ,A 2 ,A n (r)
其中A 1 ,A 2 ,A n是关系r的属性名称。
由于关系是一个集合,因此会自动消除重复的行。
例如–
∏subject, author (Books)
从“关系书”中选择和投影名为主题和作者的列。
它在两个给定关系之间执行二进制联合,并定义为-
r ∪ s = { t | t ∈ r or t ∈ s}
符号-r U s
其中r和s是数据库关系或关系结果集(临时关系)。
为了使联合操作有效,必须满足以下条件:
∏ author (Books) ∪ ∏ author (Articles)
输出-投影写过书或文章或两者兼有的作者的姓名。
集差运算的结果是元组,元组以一种关系存在而在第二种关系中不存在。
符号-r – s
查找存在于r而不是s中的所有元组。
∏ author (Books) − ∏ author (Articles)
输出-提供撰写书籍但未撰写文章的作者姓名。
将两个不同关系的信息合并为一个。
记法− rΧs
其中r和s是关系,其输出将定义为-
r X s = {qt | q∈r和t∈s}
σauthor = 'tutorialspoint'(Books Χ Articles)
输出-产生一个关系,该关系显示了tutorialspoint编写的所有书籍和文章。
关系代数的结果也是关系,但没有任何名称。重命名操作使我们可以重命名输出关系。 “重命名”操作用小希腊字母rhρ表示。
符号– ρX(E)
其中表达式E的结果以x的名称保存。
附加操作是-
与关系代数相反,关系演算是一种非过程查询语言,也就是说,它告诉做什么,但从不解释如何做。
关系演算以两种形式存在-
在元组上过滤变量范围
表示法-{T |健康)状况}
返回所有满足条件的元组T。
例如–
{ T.name | Author(T) AND T.article = 'database' }
输出-返回在“数据库”上写过文章的作者的带有“名称”的元组。
TRC可以量化。我们可以使用现有(∃)和通用量词(∀)。
例如–
{ R| ∃T ∈ Authors(T.article='database' AND R.name=T.name)}
输出-上面的查询将产生与上一个相同的结果。
在DRC中,过滤变量使用属性域而不是整个元组值(如上述在TRC中所做的那样)。
表示法–
{a 1 ,a 2 ,a 3 ,…,a n | P(a 1 ,a 2 ,a 3 ,…,a n )}
其中a1,a2是属性, P代表由内部属性构建的公式。
例如–
{< article, page, subject > | ∈ TutorialsPoint ∧ subject = 'database'}
输出-从TutorialsPoint关系中产生文章,页面和主题,其中主题是数据库。
就像TRC一样,DRC也可以使用存在量词和通用量词来编写。刚果民主共和国还涉及关系运算符。
元组关系演算和域关系演算的表达能力等同于关系代数。