第五章 排序检索数据

131 阅读2分钟

第五章 排序检索数据

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之后。否则,会报错