在SQL中使用SELECT查询的ORDER BY子句(上)

日期: 2009-05-05 作者:John L. ViescasMichael J. Hernandez翻译:曾少宁 来源:TechTarget中国 英文

排序信息   在本章开头,我们就谈到SELECT操作可以分成三个较小的操作:SELECT语句、SELECT表达式和SELECT查询。同时,我们还谈到可以用不同的方式组合这些操作来实现复杂的请求。然而,我们也需要组合这些操作来实现结果集中记录行的排序。   一般情况下,SELECT语句返回的结果集的记录行是无序的。

它们的顺序一般是基于它们在表中的物理位置的。(实际的顺序往往是由我们的数据库系统动态确定的,而这个系统则自己决定如何最有效地满足我们的要求。)排序结果集的唯一方法是在SELECT查询中嵌入另一个SELECT查询,如图4-10所示。我们使用一个有ORDER BY子句的SELECT语句定义……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

排序信息

  在本章开头,我们就谈到SELECT操作可以分成三个较小的操作:SELECT语句、SELECT表达式和SELECT查询。同时,我们还谈到可以用不同的方式组合这些操作来实现复杂的请求。然而,我们也需要组合这些操作来实现结果集中记录行的排序。

  一般情况下,SELECT语句返回的结果集的记录行是无序的。它们的顺序一般是基于它们在表中的物理位置的。(实际的顺序往往是由我们的数据库系统动态确定的,而这个系统则自己决定如何最有效地满足我们的要求。)排序结果集的唯一方法是在SELECT查询中嵌入另一个SELECT查询,如图4-10所示。我们使用一个有ORDER BY子句的SELECT语句定义SELECT查询。SELECT查询的ORDER BY子句可以让我们指定最终结果集中记录行的顺序。在后面的文章中,我们将学习到如果在实际中将另一个SELECT语句或SELECT表达式嵌入到一个SELECT语句来回答非常复杂的问题。然而, SELECT查询并不是可以随便嵌套的。

  SELECT查询的语法图

  图4-10 SELECT查询的语法图

  注意:在本书中,我们使用的术语是SQL Standard或者大多数数据库系统中常见的术语。然而,2003 SQL Standard将RDER BY子句定义为游标( cursor,一个可以定义在应用程序内部的对象)的一部分, 数组(array,一系列组成一个逻辑表的值,如 子查询<subquery>,将在第11章“子查询”中探讨)的一部分,或者标量子查询( scalar subquery,只返回一个值的子查询)的一部分。此书并不涉及游标和数组的全面探讨。因为几乎所有SQL的执行都允许我们在SELEC语句后面加上一个ORDER BY子句,我们可以将它保存在视图中,所以我们用 SELECT query 这个词汇来描述这种类型的语句。我们也会对用于联机显示或者报表用途的查询最终输出的排序进行探讨。我们都知道2007/2008标准草案允许在更多的地方使用ORDER BY,但是在本书中我们将用单独的章节对此主题进行探讨。

  ORDER BY子句可以以一个或多字段对指定的SELECT语句的结果集进行排序,同时为每个字段指定升序或降序排序顺序。在ORDER BY子句中我们可以使用的字段是那些已经在SELECT子句中列出的。(虽然这些要求都在SQL Standard中规定了,但是有些供应商的实现允许我们完全忽略它。然而,在本书中我们的所有例子都是遵从这个要求的。)当我们在ORDER BY子句中使用两个或多字段时,要用逗号将每个字段分开。当排序完成后,SELECT查询就返回一个最终的结果集。

  注意:ORDER BY子句并不影响表中行的物理顺序。如果我们确实需要修改记录行的物理顺序,那么请参照数据库软件文档中的正确操作流程。

  首要事情:排序序列

  在我们列举一些使用SELECT查询的例子之前,排序序列其实就是顺序。ORDER BY子句排序信息的方式是取决于数据库软件中所使用的排序序列的。排序序列确定了我们的操作系统中所指定的语言字符集中列出的每个字符的先后顺序。比如,它定义了小写字母是否存储在大写字母之前,或者是否大小写敏感。检查数据库软件的文档,或者咨询数据库管理员来确定数据库的默认排序序列。关于排序序列的更多信息,可以阅读Comparing String Values: A Caution in Chapter 6。

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐