第三课:排序检索数据

3.1 排序数据

子句(clause): SQL语句由子句构成,有些子句是必须的,有些是可选的。一个子句通常是由一个关键字加上所提供的数据组成。子句的例子有我们前一课看到的SELECT语句的FROM子句。

我们使用ORDER BY对表的某一列进行排序:

SELECT
*
FROM
sorm.emp
ORDER BY
salary;

这里所指定的列是salary是数字类型,系统会按数字的从小到大的顺序来从上往下排列
如果所指定的为字符类型,会按照首字母的顺序排列。

注意: 在指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句。不然会报错。

3.2 按多个列排序

当你对图书的价格进行排序的同时,对于相同价格的书你又想对名称进行排序该怎么操作呢?
输入:

SELECT book_id, book_price, book_name
FROM book_store
ORDER BY book_price, book_name;

输出:

book_id   book_price   book_name
---------------------------------
  3            67           a
  2            67           b
  6            67           c
  1            88           x
  5            88           y
  4            99           d
              

对于ORDER BY后面的列名,靠前的先排序。

3.3 按列位置排序

对于上面的对书的双层排序,可以按列的相对位置来完成
输入:

SELECT book_id, book_price, book_name
FROM book_store
ORDER BY 2, 3;

输出:

book_id   book_price   book_name
---------------------------------
  3            67           a
  2            67           b
  6            67           c
  1            88           x
  5            88           y
  4            99           d

一样的结果。
这里的相对位置排序的相对位置并不是列名在表的第几个位置(位置从1开始,不是0),而是查询语句SELECT后面的列名的那个顺序的相对位置。

注:可混合使用按名和按相对位置的排序。

3.4 指定排序方向

数据的排列不限于升序排列(从AZ),这只是默认的排列顺序。要对其进行降序排列要借助DESC关键字。
输入:

SELECT book_id, book_price, book_name
FROM book_store
ORDER BY book_id DESC;

输出:

book_id   book_price   book_name
---------------------------------
  6            67           c
  5            88           y
  4            99           d
  3            67           a
  2            67           b
  1            88           x

警告: 如果想在多个列上进行降序排列,必须对每一列指定DESC关键字。

例如

SELECT book_id, book_price, book_name
FROM book_store
ORDER BY book_id DESC, book_name DESC;

book_id进行降序,对book_name进行升序排列:

SELECT book_id, book_price, book_name
FROM book_store
ORDER BY book_id DESC, book_name;

DESCdescending的缩写,与DESC相对的是ASCascending),在升序排列时可指定它,ASC没有多大的用处,因为升序是默认的。

descending [dɪ’sendɪŋ] adj 下降的
ascending [ə’sendɪŋ] adj 上升的

提示: 区分大小写和排列顺序,在对文本型数据排列时,Aa相同吗? a位于B之前,还是Z之后?
其答案取决于数据库的设计方式。在字典里A被视为与a相同,这是大多数数据管理系统的默认行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值