第五章 排序检索数据
5.1 排序数据
SELECT prod_name FROM products;
检索的数据并不是以纯粹的随即顺序显示的。如果不排序,数据一般将以他在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据不断更新或者删除,则此顺序就会受到MySQl重用回收存储空间的影响
子句: SQL语句由必需或者可选的子句组成。子句则由一个关键字和所提供的数据组成
ORDER BY:排序SELECT语句检索出的数据,可以使用 ORDER BY 子句取一个或者多个列的名字,据此对输出进行排列
SELECT prod_name,prod_price FROM products ORDER BY prod_price
5.2 按多个列排序
为了按多个列排序,只要指定列名,列名之间用逗号分开即可
SELECT id,prod_name,prod_price FROM products ORDER BY prod_price,prod_name;
如上代码,检索三列数据,并对其中两列进行排序:首先按照价格,然后按照名字排序
重要的是理解在按多个列排序时,排序完全按所规定的顺序进行。对于上例,仅在多个行具有相同的prod_price时,才按prod_name排序。如果prod_price列中的值都是唯一的,则不会按照prod_name排序。
5.3 指定排序方向
ORDER BY排序时,默认升序(关键字 ASC,指定升序排序),可以使用关键字DESC实现降序
SELECT id,prod_name,prod_price FROM products ORDER BY prod_price DESC;
注意: DESC关键字只应用到直接位于其前面的列名,要想多列实现降序排序,只能对每个列指定DESC关键字
拓展: 使用ORDER BY 和 LIMIT 的组合,能够找出一个列中最高或最低的值。
SELECT id,prod_name,prod_price FROM products ORDER BY prod_price DESC LIMIT 2 ;
注意,ORDER BY子句的位置: ORDER BY子句位于FROM子句之后,如果使用LIMIT,必须位于ORDER BY之后。否则,会报错