MySQL必知必会-第五章(笔记)

目录

第五章:排序检索数据

5.1:排序数据

5.2 :按多个列排序


第五章:排序检索数据

如何使用select语句的order、by子句,根据需要排序检索出的数据;


5.1:排序数据

没有特定的顺序,且仅返回某个数据库表的单个列。

select prod_name from products;

关于检索出来的数据并不是存粹的随机顺序显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示。可以是数据最初添加到表中的顺序。如果数据后来进行过更新或删除,则此顺序将会受到MySQL重用回收存储空间的影响。

关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有意义;

句子(clause):

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

Order by 子句:取一个或多个列的名字,据此对输出进行排序;

select prod_name from products order by prod_name;

        这条语句除了指示MySQL对prod_name列以字母顺序排序数据的order by子句外,与前面的语句相同;

通过非选择列进行排序:

  • order by子句中使用的列将是为显示所选的列。但是实际上并不一定要这样,用非检索的列排序数据是完全合法的。


5.2 :按多个列排序

为了按多个列排序,只要指定列名,列名之间用逗号分开即可。

  • 例子:下面代码检索3个列,并按其中两个列对结果进行排序,首先按价格,然后再按名称排序;
select prod_id, prod_price, prod_name from products 
order by prod_price, prod_name;

注意:在按多个列排序时,排序完全按所规定的顺序进行。上述例子输出中,仅在多个行具有相同的prod_price值时才对产品按prod_name进行排序。换句话说,如果prod_price列中所有的值都是唯一的,那么则不回按prod_name排序;


5.3 : 指定排序方向

数据排序可从A到Z(默认排序), 也可以使用order by句子降序从Z到A进行排序;进行降序,必须指定desc关键字;

  • 例子:按价格以降序排序产品(最贵的排在最前面):
select prod_id, prod_price, prod_name from products
order by prod_price desc;

例子: 以降序排序产品(最贵的在前面),然后再对产品名排序;

select prod_id, prod_price, prod_name from products
order by prod_price desc, prod_name ;

注意:

  • desc关键字智能应用到直接位于其前面的列名;因此,prod_price列以降序排序,而prod_name列(在每个价格内)仍然按标准的生序排序;

在多个列上降序排序: 

  • 如果想在多个列进行降序排序,必须对每个列指定desc关键字;

ASC :

  • 与desc相反的关键字是ASC (ascending),在生序排序时可以指定它。

             (生序是默认的,所以asc没有多大用处)

区分大小写和排序顺序:

  • 在字典(dictionary)排序顺序中,A被视为与a相同(默认的行为),必要时候如果数据库包含大量外语字符,可能必须要改变这种默认的行为;改变此行为,必须请求数据库管理员帮助;

使用order by 和limit组合,找出一个列中最高或最低的值:

  • 例子:演示如何找出最昂贵物品的值;
select prod_price from products 
order by prod_price desc
limit 1;

prod_price desc 保证行是按照以降序排列,即最贵的到最便宜的。而limit 1则返回第一行;

order by 子句位置:

  • order by子句,应该保证位于from子句后。 而limit ,它必须位于order by之后。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值