SQL学习笔记3 -排序检索数据

主要学习使用SELECT语句的ORDER BY字句,根据需要排序检索出的数据。

排序数据

笔者的上一篇笔记中,SELECT可以返回数据库表的单个列,但是没有特定的顺序。

SELECT prod_name
FROM Products;

输出的结果其实并不是随机显示的,如果不排序,数据一般以它在表中出现的顺序排序。但是,如果数据受到更新或删除,这个顺序就没有意义了,所以需要排序检索。

字句

为了明确的排序SELECT检索出的数据,可以使用ORDER BY字句。ORDER BY字句取一个或多个列的名字,据此对输出进行排序。

SELECT prod_name
FROM Products
ORDER BY prod_name;

注意:ORDER BY必须是SELECT语句中最后一条字句,否则会出错!! 

另外的,也可以使用非检索列的数据进行排序。

按多个列排序

按多个列排序,只需要指定列名,列名直接用逗号分开即可。

下面的代码检索3个列,并按其中两个列对结果进行排序——首先按价格,然后按名称排序。

SELECT prod_name,prod_id,prod_price
FROM Products
ORDER BY prod_price,prod_name;

注意:仅在多个行具有相同的price值时,才对name进行排序。如果每个price值不同,那么不会对name进行排序,可以理解为优先级顺序。 

按列位置排序

除了按列名进行排序外,ORDER BY还可以按照相对列位置进行排序。例如:

SELECT prod_name,prod_id,prod_price
FROM Products
ORDER BY 3,2;

 这个代码和上文的代码输出结果相同,不同之处在于ORDER BY语句,ORDER BY 3,2表示先按照第三列(price),再按照第二列(name)排序。这个技术方便之处在于不用重新输入列名,不足之处在于SELECT清单没有的数据不能排序。

指定排序方向

数据排序默认是升序排序,但是也可以进行降序排序。这时可以指定DESC关键字。例如:

SELECT prod_name,prod_id,prod_price
FROM Products
ORDER BY prod_price DESC;

 输出结果是价格的降序排序。

如果想对多个列排序,加上逗号即可。

SELECT prod_name,prod_id,prod_price
FROM Products
ORDER BY prod_price DESC,prod_name;

输出结果是按照价格排序,贵的在前面,跟上产品名。注意: DESC关键字只直接作用于跟在前面的列名,对于后面的(prod_name)没有任何影响,仍按照升序排列。如果想在多个列上进行降序排序,必须每一个都在后面跟上DESC关键字!例如:

SELECT prod_name,prod_id,prod_price
FROM Products
ORDER BY prod_price DESC,prod_name DESC;

实际上,还有升序排序的关键字——ASC, 但是由于SQL语言默认的顺序是升序,所以意义不大。

区分大小写顺序

默认的,A与a的顺序相同,如果确实需要改变这种顺序,用简单的ORDER BY语句做不到,需要和管理员沟通。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值