相关文章推荐
酷酷的熊猫  ·  Django ORM ...·  2 周前    · 
慷慨大方的烤红薯  ·  Android ...·  1 周前    · 
满身肌肉的熊猫  ·  blob转json-掘金·  1 年前    · 
ORDER BY salary ASC;

在这里插入图片描述
这里其实就多了一句 ORDER BY salary ASC; 然后salary就能升序排列了,猜得出来,salary是控制的栏目,ASC应该是升序有关的指令。那么把 ASC 改成 DASC 呢?
在这里插入图片描述
明显变成降序了。如果不写 ASC 也ok,默认升序排列。
这里我们顺便学两个六级单词得了( 别想了,六级逃不掉的

单词 音标 含义 缩写 巧记 前缀
ascend 英[əˈsend] 升高; 爬上坡 ASC a-scend a前缀 往上 增多
descend 英[dɪˈsend] 下降; 走下坡 DESC de-scend de前缀 往下 否定 下降

另外,为啥我鼠标一点就能解决的事情还需要敲代码搞定?
在这里插入图片描述 在这里插入图片描述
你可以尝试,跟老板或者客户说:“诶boss,用的时候记得打开SQLyog点一下哈”。

其实这里我们已经发现,学的都是SELECT语句附加的一个个成分:
在这里插入图片描述
FROM 缩小搜索范围到具体哪张表
WHERE 筛选 需要具体哪些数据 (之前我们提到的 行-类的实例 列-类的属性)

对属性的组合进行排序

有没有想过,我们目前能针对 什么项目 进行排序?就是表的 栏目
如果把每一行看做 类的实例 ,那列就是 类的属性 ,而在表中,属性就是 变量 ,比如salary是一个整形变量。
既然变量可以排序,那含有变量的表达式也可以咯?没错!

案例 我们想对中产阶级 也就是表中工资在4000~8000的人,进行年终奖的计算,并且还要降序排序一波再输出。
年终奖就是(1+commission_pct)*salary — 你懂的
提示:没有年终奖的人,commission_pct为 NULL
在这里插入图片描述
代码:

USE data1;
SELECT 
  CONCAT_WS('-',
    `last_name`,
    `first_name`
  ) AS 姓名,
  `salary` * (1+IFNULL(`commission_pct`,0)) AS 年终工资
  employees
WHERE
  salary BETWEEN 4000 AND 8000
ORDER BY 年终工资 DESC;  

这里有两个槽点:
1 不仅salary能够排序,salary * (1+IFNULL(commission_pct,0)),也能够排序
2 可以用别名(AS,而且支持中文!)当做一个组合变量排序。这样代码更加简洁直观
3 别名也就是这里能用 别的还是不行 如下,试着把上面代码的where部分改成下面的样子:

WHERE
  年终工资 BETWEEN 4000 AND 8000

所以正确写法还是挺苟且的:
在这里插入图片描述

对函数输出排序

案例
尝试利用获取字符串长度的LENGTH()函数 输出的结果进行筛选+排序
last_name 字母数在1~5之间,并且升序输出:
在这里插入图片描述

USE data1;
SELECT 
  last_name,
  CONCAT_WS('-',
    `last_name`,
    `first_name`
  ) AS 姓名,
  `salary` * (1+IFNULL(`commission_pct`,0)) AS 年终工资
  employees
WHERE
  LENGTH(last_name) BETWEEN 1 AND 5
ORDER BY LENGTH(last_name) ASC;  

多个排序规则

之前在ORDER BY后面添加的就是一个排序的规则
案例都是2500的工资,其顺序咋确定呢?
在这里插入图片描述
我们可以再加一个排序规则
在这里插入图片描述
代码:ORDER BY 年终工资 ASC, LENGTH(last_name) DESC;
这样,年终工资升序,如果同样工资,按次级排序顺序,即,last_name字符串长度的降序
注意:第一个排序规则(年终工资 ASC)是老大,后面跟着的(LENGTH(last_name) DESC)都是小弟,次级的,作为补充的

下一站:数据库学习之MySQL (九)—— 数学函数与字符串函数

作用: 通过哪个或哪些字段进行排序 含义: 排序采用 order by 子句,order by 后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by默认采用升序(asc),如果存在 where 子句,那么 order by 必须放到where 语句后面。 (1)、按照薪水由小到大排序(系统默认由小到大) 例如: select ename,sal from emp order by sal; (2)、取得job 为 MANAGER 的员工,按照薪水由小到大排序(系统默 认由小到大) 了解 ——对不同数据类型的数据进行排序的规则。 在一条SELECT语句中,如果不使用ORDER BY子句,结果中行的顺序是不可预料的。使用ORDER BY子句后可以保证结果中的行按一定顺序排列。 语法格式: ORDER BY {列名 | 表达式 | 列编号} [ASC | DESC] , ... 说明:ORDER BY子句后可以是一个列名、一个表达式或一个正整数。正整数表示按结果表中该位置上的列排序。 关键字ASC表示升序排列,DESC表示降序排列,系统默认值为ASC。 简单排序 【例】 将book表中的书按单价降序排序 SELECT * from book ORDER BY 单价 DESC; ORDER BY 列名 ORDER BY 列编号 注意:编号表示列所在结果集中的位置 【例】 将book表中的书按数量升序排序 SELECT 图书编号,书名,单价,数量 from book ORDER BY 4 ASC; 说明:4表示数量在结果中的位置 【例】 将book表中的书按单价降序排序 create [unique|fulltext|spatial] index 索引名 on 表名(字段名 [长度] [asc|desc]); MySQL也能利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作。 通过索引优化来实现MySQLORDER BY语句优化: 1、ORDER BY的索引优化 如果一个SQL语句形如: SELECT 需要排序的字段跟在order by之后; asc|desc表示排序的规则,asc:升序,desc:降序,默认为asc; 支持多个字段进行排序,多字段排序之间用逗号隔开。 单字段排序 mysql> create table test2(a int,b varchar(10)); Query OK, 0 rows
文章目录1. 语法2. 案例(1)按照工资升序,找出员工名和薪资。(2)按照工资降序,找出员工名和薪资。(3)按照工资的降序排列,当工资相同的时候在按照名字的升序排列。(4)找出员工岗位是SALESMAN 的员工,并按照工资的降序排列(5)另一种升序降序的写法3. 总结sql语句的执行顺序3.1 简单的查询语句3.2 带有where,order by 的查询语句 1. 语法 order by 语句用于根据指定的列对结果集进行排序order by 语句默认按照升序对记录进行排序。 如果希望按照升序对记录进
1、单一字段排序order by 字段名称 作用: 通过哪个或哪些字段进行排序 含义: 排序采用 order by 子句,order by 后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by默认采用升序(asc),如果存在 where 子句,那么 order by 必须放到where 语句后面。 (1)、按照薪水由小到大排序(系统默认由小到... MySQLorder by语句可以用于对查询结果集进行排序,常常需要使用多个字段来进行排序。在多字段排序时,遵循以下规则: 1. 排序字段的顺序按照order by语句中的先后顺序进行,先根据第一个排序字段排序,如果有相同的值,则根据第二个排序字段排序,以此类推。 2. 对于数字类型的字段,排序是根据数值大小进行的。对于文本类型的字段,排序则根据字面的字符顺序进行,即按照字典顺序排序。 3. 对于字符串类型的字段,如果希望进行不区分大小写的排序,则可以使用lower或upper函数进行转换,例如:order by lower(name)。 4. 可以在排序规则中指定升序(asc)或降序(desc),默认是升序。如果需要使用降序排序,则需要在字段后加上desc。 5. 如果存在NULL值,排序结果可能不稳定。可以使用order by字段1,字段2,coalesce(字段3,0)来指定NULL值排序规则。 总之,MySQLorder by语句可以很灵活地进行多字段排序,并且可以指定不同字段的排序规则,需要根据实际情况进行灵活运用。 ### 回答2: 在MySQL中,ORDER BY多字段的排序规则分为以下三种: 1. 升序排序ASC):使用ASC排序,将会按照指定的字段按照从小到大的顺序进行排列。例如: ```mysql SELECT * FROM `mysql_demo` ORDER BY `age` ASC, `name` ASC; 2. 降序排序(DESC):使用DESC来排序,将会按照指定的字段按照从大到小的顺序进行排列。例如: ```mysql SELECT * FROM `mysql_demo` ORDER BY `age` DESC, `name` DESC; 3. 混合排序:在使用多个字段进行排序时,有时需要将一个字段按照升序排序,另一个字段按照降序排序。这时需要使用升序排序和降序排序的组合。例如: ```mysql SELECT * FROM `mysql_demo` ORDER BY `age` ASC, `name` DESC; 在混合排序中,将按照`age`字段进行升序排序,如果`age`相同则按照`name`字段进行降序排序。 需要注意的是,当使用多个字段进行排序时,排序字段的顺序将会影响结果。例如: ```mysql SELECT * FROM `mysql_demo` ORDER BY `name` ASC, `age` DESC; 在这个例子中,首先将按照`name`进行升序排序,如果`name`相同则按照`age`进行降序排序。如果将`name`和`age`的顺序颠倒,则会按照`age`进行降序排序,如果`age`相同则按照`name`进行升序排序。因此,在使用多个字段进行排序时,需要根据实际需求确定排序字段的顺序。 ### 回答3: 在 MySQL 中,ORDER BY 子句用于指定排序的规则。对于多字段排序,可以使用多个排序字段来定义排序规则。一般来说,多字段排序是根据所需的字段中的第一个字段进行排序,并且在第一个字段具有相同值的记录中,使用第二个字段进行排序,以此类推。 例如,假设有一个包含以下字段的表: id | name | age | gender 如果我们想按照年龄和性别来对记录进行排序,我们可以使用以下SQL语句: SELECT * FROM table_name ORDER BY age DESC, gender ASC; 在上面的SQL语句中,我们首先根据年龄字段进行降序排序,这意味着年龄最大的记录将会排在前面。如果某些记录拥有相同的年龄值,则这些记录将按照性别字段进行升序排序,这意味着男性记录将排在女性记录之前。 此外,还可以使用 ORDER BY 子句中的一个特殊关键字,即 NULLS FIRST 或 NULLS LAST,来控制空值的排序。例如,我们可以使用以下 SQL 语句来将空值排在最前面: SELECT * FROM table_name ORDER BY age DESC NULLS FIRST; 总之,在 MySQL 中,ORDER BY 子句可用于根据一个或多个字段对记录排序。多字段排序时,第一个排序字段是最重要的,随后的字段是副要素,可以用来细化排序规则。同时,还可以使用 NULLS FIRST 或 NULLS LAST 来控制空值在排序中的位置。