第五章 排序检索数据
5.1排序数据
检索出来的顺序不是纯粹随机显示的,而是按照底层表中出现的顺序显示。这个一般来说是添加到表中的顺序,但是并不包括数据进行更新和删除。这种顺序是没有意义的。
SQL语句是有子句构成的,有些子句是必须的,而有些却是可选的。
排序使用ORDER BY子句。
mysql> select branch_name from ACCOUNT088 order by branch_name;
+-------------+
| branch_name |
+-------------+
| Brighton |
| Brighton |
| Downtown |
| Mianus |
| Perryridge |
| Redwood |
| Round Hill |
+-------------+
7 rows in set (0.00 sec)
实际上使用非选择的列进行排序也是正确的。
5.2多个列的排序
有时候可能不是一个列的排序,可能是多个列的排序。
mysql> select * from ACCOUNT088 order by account_number,branch_name;
+----------------+-------------+---------+
| account_number | branch_name | balance |
+----------------+-------------+---------+
| A-101 | Downtown | 500 |
| A-102 | Perryridge | 400 |
| A-201 | Brighton | 900 |
| A-215 | Mianus | 700 |
| A-217 | Brighton | 750 |
| A-222 | Redwood | 700 |
| A-305 | Round Hill | 350 |
+----------------+-------------+---------+
7 rows in set (0.00 sec)
5.3指定排序方向
使用DESC指定逆向排序。
mysql> select * from ACCOUNT088 order by account_number DESC;
+----------------+-------------+---------+
| account_number | branch_name | balance |
+----------------+-------------+---------+
| A-305 | Round Hill | 350 |
| A-222 | Redwood | 700 |
| A-217 | Brighton | 750 |
| A-215 | Mianus | 700 |
| A-201 | Brighton | 900 |
| A-102 | Perryridge | 400 |
| A-101 | Downtown | 500 |
+----------------+-------------+---------+
7 rows in set (0.00 sec)
DESC只应用到前面的列名,所以可以一个列逆序排序,一个正序排序。
相反,如果你想要对多个列逆序排序,则需要在每一个列中添加DESC关键词。
MySQL并不区分大小写,所以如果你想要根据大小写排序,你必须请求数据库管理员的帮助。
使用ORDER BY 和 LIMIT 来筛选出最大最小值。