排序查询
语法:
order by 排序字段 【asc(升序)|desc(降序)】ps:默认为升序排序
例 查询姓名和成绩按照成绩降序排列
SELECT
name,grades
FROM
schoollists
ORDER BY grades DESC;
例 按年薪的高低显示员工的信息和年薪(年薪计算salary*12*(1+奖金率))
SELECT *,salary*12*(1+IFNULL(奖金率,0))
/*IFNULL(int,int)判断是否为NULL 如果为NULL返回第二个函数值*/
FROM employees
ORDER BY salary*12*(IFNULL(奖金率,0))
DESC;
ORDER BY的参数可以是表达式来排序也可以用别名来排序
SELECT *,salary*12*(1+IFNULL(奖金率,0)) 年薪
/*IFNULL(int,int)判断是否为NULL 如果为NULL返回第二个函数值*/
FROM employees
ORDER BY 年薪
DESC;
例 查询员工信息(按多个字段排序),先按照工资排序,再按照员工编号排序(ps:排序的时候先按照工资排序,然后剩下工资相同的员工,再按照他们的员工编号排序)
SELECT
*
FROM
employees
ORDER BY
salary ASC, employee_id DESC;
PS:一般ORDER BY 子句放在语句的最后。
常见函数介绍
单行函数
①length() //获取参数值的字节个数
②concat(参数1,参数2) //拼接字符串
③upper() //将小写转化为大写
④lower() //将大写转化为小写
⑤substr(' ',x) //截取从x向后的所有字符串
⑥substr(' ',x,y) //截取从x开始长度为y的字符长度
⑦instr('子串1',‘子串2’) //返回子串2在子串1中的一次出现的第一个字符的索引
⑧trim('子串1',符号) //去掉子串1中左右两边的`符号`中间保留
⑨rpad('子串',int x,‘y’) //右填充,指定x为长度,如果子串的长度不够在子串的右边填充y,lpad和rpad相同,只不过为左填充