MySQL必知必会 学习笔记 第五章 排序检索数据

检索出的数据如果不排序,不是以纯粹的随机顺序显示的,一般以行在底层表中出现的顺序显示,这可以是数据最初添加到表中的顺序,但如果数据后来进行过更新或删除,则此顺序将会受到MySQL重用回收存储空间的影响,因此不能依赖不排序的顺序。关系数据库的设计理论认为,如不明确规定排序顺序,则不应假定检索出的数据顺序有意义。

SQL语句由子句构成,有些子句是必需的,有些是可选的。子句通常由一个关键字和所提供的数据组成。例子是SELECT语句的FROM子句。

ORDER BY子句对检索结果排序:

SELECT columnName1
FROM tableName
ORDER BY columnName2;    # colName2可以是colName1

可以根据非检索出的列对数据排序。

按多个列排序:

SELECT columnName
FROM tableName
ORDER BY columnName1, columnName2;

以上先按columnName1排序,colName1相同时按columnName2排序。

ORDER BY的默认排序是升序(从a到z),也可以降序排序:

SELECT columnName1
FROM tableName
ORDER BY columnName2 DESC;

DESC只作用于它之前的列:

SELECT columnName
FROM tableName
ORDER BY columnName1 DESC, columnName2;

先按columnName1的降序排序,colName1相同的按columnName2的升序排序。

如果想按多个列的降序排序,每个列都要指定DESC。

ASC是升序,由于升序是默认排序方式,所以加不加ASC都可以。

对文本类数据排序时A与a是否相同,a位于B之前还是Z之后,取决于数据库如何设置。MySQL(和大多DBMS一样)的字典排序顺序中,A与a相同。

选出某列中最大的值:

SELECT columnName
FROM tableName
ORDER BY columnName DESC
LIMIT 1

ORDER BY子句应在FROM之后,LIMIT子句应在ORDER BY之后。

posted @ 2021-01-29 22:11  epiphanyy  阅读(32)  评论(0)    收藏  举报  来源