一、排列数据
SELECT 列名
FROM 表名
ORDER BY 列名;
这句的意思是用于对检索出的数据按照指定的列进行排序。
例如,假设有一个“students”表,包含“student_id”(学生学号)、“student_name”(学生姓名)等列。如果想要按照学生姓名进行升序排列,可以使用:
SELECT student_name
FROM students
ORDER BY student_name;
数据库会将提取出的所有学生姓名按照字母顺序(默认升序排列)进行重新排列
二、按多个列排列
SELECT 列名1,列名2,列名3
FROM 表名
ORDER BY 列名2,列名3;
当需要按照多个列进行排序时,可以在 ORDER BY 子句中列出这些列。先按照第一个列进行排序,如果该列的值相同,再按照第二个列进行排序,以此类推。
比如在一个“orders”表中,包含“order_id”(订单编号)、“customer_id”(客户编号)、“order_date”(订单日期)等列。如果想要先按照客户编号升序排列,对于相同客户编号的订单再按照订单日期升序排列,可以使用:
SELECT order_id,customer_id,order_date
FROM orders
ORDER BY customer_id, order_date;
三、按列位置排序
SELECT 列名1,列名2,列名3
FROM 表名
ORDER BY 2,3;
这里是按照列的位置进行排序,数字代表在 SELECT 语句中列的顺序。先按照第二个列进行排序,再按照第三个列进行排序。
例如,有一个“products”表,包含“product_id”(产品编号)、“product_name”(产品名称)、“product_price”(产品价格)等列。如果想要先按照产品名称排序,再按照产品价格排序,可以使用:
SELECT product_id, product_name, product_price
FROM products
ORDER BY 2,3;
四、指定排列方向
SELECT 列名1,列名2,列名3
FROM 表名
ORDER BY 列名2
DESC,列名3;
可以通过在列名后面添加 DESC(降序)或 ASC(升序,默认情况下如果不指定即为升序)来指定排序的方向。
在这个例子中,先按照列名 2 进行降序排列,对于列名 2 相同的值,再按照列名 3 进行升序排列(因为没有指定列名 3 的排序方向,默认为升序)。
比如在一个“scores”表中,包含“student_id”(学生学号)、“math_score”(数学成绩)、“english_score”(英语成绩)等列。如果想要先按照数学成绩降序排列,对于数学成绩相同的学生再按照英语成绩升序排列,可以使用:
SELECT student_id, math_score, english_score
FROM scores
ORDER BY math_score DESC, english_score;
练习题:
1.编写SQL语句,从Customers中检索所有的顾客名称(cust_names),并按从Z到A的顺序显示结果。
2.编写SQL语句,从Orders表中检索顾客ID(cust_id)和订单号(order_num),并先按顾客ID对结果进行排序,再按订单日期倒序排列。
3.显然,我们的虚拟商店更喜欢出售比较贵的物品,而且这类物品有很多。编写SQL语句,显示OrderItems表中的数量和价格(item_price),并按数量由多到少、价格由高到低排序。
4.下面的SQL语句有问题吗?(尝试在不运行的情况下指出。)
SELECT vend_name,
FROM Vendors
ORDER vend_name DESC;