3.1 排序数据
正如前一章所述,下面的SQL语句返回某个数据库表的单个列。但请看其输出,并没有特定的顺序。
500)this.width=500}" height=24 alt="" hspace=12 src="/upload/old/allimg/101019/1259106334-0.gif" width=46 align=left>500)this.width=500}" height=23 alt="" src="/upload/old/allimg/101019/1259101938-1.jpg" width=95>
500)this.width=500}" height=24 alt="" hspace=12 src="/upload/old/allimg/101019/1259105158-2.gif" width=46 align=left>500)this.width=500}" height=141 alt="" src="/upload/old/allimg/101019/125910KO-3.jpg" width=119>
其实,检索出的数据并不是以纯粹的随机方式显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺序将会受到DBMS重用回收存储空间的影响。因此,如果不明确控制的话,不能(也不应该)依赖该排序顺序。关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有意义。
500)this.width=500}" height=32 alt="" hspace=12 src="/upload/old/allimg/101019/1259105232-4.jpg" width=38 align=left>子句(clause) SQL语句由子句构成,有些子句是必需的,而有的可选。一个子句通常由一个关键字加上所提供的数据组成。子句的例子有Select语句的FROM子句,我们在前一章看到过这个子句。
为了明确地排序用Select语句检索出的数据,可使用ORDER BY子句。ORDER BY子句取一个或多个列的名字,据此对输出进行排序。请看下面的例子:
500)this.width=500}" height=24 alt="" hspace=12 src="/upload/old/allimg/101019/1259106334-0.gif" width=46 align=left>500)this.width=500}" height=37 alt="" src="/upload/old/allimg/101019/1259104939-6.jpg" width=112>
500)this.width=500}" height=24 alt="" hspace=12 src="/upload/old/allimg/101019/12591012H-7.gif" width=46 align=left>这条语句除了指示DBMS软件对prod_name列以字母顺序排序数据的ORDER BY子句外,与前面的语句相同。结果如下:
500)this.width=500}" height=24 alt="" hspace=12 src="/upload/old/allimg/101019/1259105158-2.gif" width=46 align=left>500)this.width=500}" height=143 alt="" src="/upload/old/allimg/101019/1259105H5-9.jpg" width=119>
500)this.width=500}" height=41 alt="" src="/upload/old/allimg/101019/1259105094-10.jpg" width=44> |
ORDER BY子句的位置 在指定一条ORDER BY子句时,应保证它是Select语句中最后一条子句。该子句的次序不对将会出现错误消息。 |
500)this.width=500}" height=43 alt="" src="/upload/old/allimg/101019/1259105158-11.jpg" width=39> |
通过非选择列进行排序 通常,ORDER BY子句中使用的列将是为显示所选择的列。但是,实际上并不一定要这样,用非检索的列排序数据是完全合法 |