代数关系sql GROUP BY SORT BY ORDER BY

Cyb*_*low 7 sql group-by relational-algebra sql-order-by relational-database

我想知道代数关系中GROUP BY,SORT BY和ORDER BY的等价物是什么?

Sim*_*stö 15

在关系代数中也不可能,但是人们已经为这些操作创建了一些"扩展"(注意:在原始文本中,部分文本被写为下标).

GROUP BY,根据数据库系统基础(Elmasri,Navathe 2011第6版):

在基本关系代数中无法表达的另一种类型的请求是在数据库的值集合上指定数学聚合函数.
...
我们可以使用符号ℑ(发音为脚本F)7来定义AGGREGATE FUNCTION操作,以指定这些类型的请求,如下所示:

<分组属性>ℑ<功能列表>(R)

其中<grouping attributes>是R中指定的关系的属性列表,<function list>是(<function> <attribute>)对的列表.在每个这样的对中,<function>是允许的函数之一 - 例如SUM,AVERAGE,MAXIMUM,MINIMUM,COUNT-和<attribute>是由R指定的关系的属性.结果关系具有分组属性加1函数列表中每个元素的属性.

ORDER BY(SORT BY),另一个来源:

由于关系是集合(或包),因此没有为关系定义排序.也就是说,如果它们包含相同的元组,则两个关系是相同的,无论顺序如何.但是,用户经常希望以某种特定顺序列出查询的输出.如果我们愿意允许输出不是关系的运算符,而是有序的元组列表,我们可以定义一个额外的运算符τ来对关系进行排序.

例如,表达式

τLastName,名字(学生)

生成所有学生元组的列表,按LastName(作为主要排序键)排序,然后按FirstName(作为辅助排序键)排序.(仅当两个元组同意主排序键时才使用辅助排序键.排序操作可以列出任意数量的排序键,从最重要到最不重要.)