在我正在阅读的一本书(Querying SQL Server 2012)中,作者谈到了数据库如何工作的理论。他提到了关系、属性和元组等。
他经常强调 T-SQL 的某些方面不是关系的事实。就像下面的摘录一样:
与之前的结果是关系的阶段不同,此阶段的输出不是关系的,因为它有保证的顺序。这个阶段的结果就是标准 SQL 所称的游标。请注意,此处使用术语光标是概念性的。T-SQL 还支持称为游标的对象,该对象基于查询结果定义,并且允许以指定顺序一次获取一个行。您可能关心以特定顺序返回查询结果以用于演示目的,或者调用者是否需要通过某种游标机制以这种方式使用结果,该机制一次获取一个行。但请记住,这样的处理不是相关的. 如果您需要以关系方式处理查询结果——例如,定义一个表表达式,如基于查询的视图(第 4 章后面的详细信息)——结果将需要是关系的。此外,对数据进行排序会增加查询处理的成本。如果您不关心返回结果行的顺序,则可以通过不添加 ORDER BY 子句来避免这种不必要的成本。
我想知道,由于几乎所有的实现SQL
都有一个ORDER BY
使它成为非关系的子句,为什么它(使用后面的集合ORDER BY
)它不再是关系的,因为它在任何地方都是如此?
如果他说它是非标准的,我可以理解,例如使用!=
而不是<>
不平等,因为这会影响可移植性等,但我不明白为什么某些东西最好是相关的。
请赐教。