Mysql基础(三)
进阶三:
排序查询:
语法:
select 查询列表
from 表
【where 筛选条件】
order by 排序的字段|表达式|函数|别名 【asc|desc】
特点:
? 1、asc代表的是升序,desc代表的是降序,如果不写,默认是升序
? 2、order by 子句中可以支持多个字段,多个字段、表达式、函数、别名
? 3、order by 子句一般是放在查询语句的最后面,limit子句除外
语句执行顺序是:
? 1、from 表 2、where 筛选条件、3、select 查询、4、order by 排序
#案例一:查询员工信息,要求工从高到低排序
SELECT * FROM employees ORDER BY salary DESC;
#如果不写 ASC 或DESC,默认是升序
SELECT * FROM employees ORDER BY salary;
#案例二【添加筛选条件】:查询部门编号>=90的员工信息,按入职时间的先后排序
SELECT * FROM employees
WHERE department_id>=90
ORDER BY hiredate ASC;
#案例三【按表达式排序】:按年薪的高低显示员工的信息和年薪
SELECT *,salary*12*(1 IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY salary*12*(1 IFNULL(commission_pct,0)) DESC;
#案例四【按别名排序】:按年薪的高低显示员工的信息和年薪
SELECT *,salary*12*(1 IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 DESC;
#案例五【按函数排序】:按姓名的长度显示员工的姓名和工资
SELECT LENGTH(last_name) 字节长度,last_name,salary
FROM employees ORDER BY LENGTH(last_name) DESC;
#案例六【按多个字段排序】:查询员工信息,要求先按工资升序排序,再按员工编号降序排序
SELECT * FROM employees
ORDER BY salary ASC,employee_id DESC;
进阶四
常见函数
函数分类:
? 字符函数
? 数学函数
? 日期函数
? 其他函数【补充】
? 流程控制函数【补充】
字符函数
# 进阶四
# 常见函数
/*
功能类似于java中的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处:1、隐藏了实现细节 2、提高的代码的重用性
调用:selec 函数名(实参列表) 【from 表】;
特点:
1、方法名
2、功能
分类:
1、单行函数
如:concat 、length、ifnull等
2、分组函数
功能:做统计使用,有称为统计函数,聚合函数,组函数
*/
#一、字符函数
#1、length 获取参数值的字节(返回字节数,汉字占三个字节,字母占1个字节)
SELECT LENGTH('中国');
#2、cancat 拼接字符串
SELECT CONCAT(first_name,'_',last_name) 姓名 FROM employees;
#3、upper(字符变大写)、lower(字符变小写)
SELECT UPPER('json');
SELECT LOWER('JSON');
#案例:将姓变大写,名变小写,然后拼接
SELECT CONCAT(UPPER(first_name),LOWER(last_name)) 姓名 FROM employees;
#substr,substring
#注意在sql语言中,索引都是从1开始
#截取从索引开始到最后,指定索引
SELECT SUBSTR('好好学习,天天向上',6) 截取索引后所有;
#截取一段字符,指定开始索引和字符个数
SELECT SUBSTR('好好学习,天天向上',1,4) 截取一段结果;
#案例:姓名中首字符大写,其他字符小写 然后用'_' 拼接,显示出来
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) 结果
FROM employees;
#5、instr : 返回子串第一次出现的索引,如果你找不到返回0
SELECT INSTR('好好学习,天天向上','天天' ) AS 插入结果 ;
#6、trim:去除前后指定字符,不指定字符时,去除前后空格
SELECT TRIM(' 天天向上 ') 出去空格的结果;
SELECT TRIM('a' FROM 'aaaaa天天aaaaa向上aaaa') 去掉a;
#7、Lpad :用指定的字符实现左填充指定长度
SELECT LPAD('好好学习',10,'*') AS 结果;
#9、replace 替换函数
SELECT REPLACE('好好学习,天天向上','向上','努力') AS 替换结果;
数学函数
#数学函数
#round 四舍无入
SELECT ROUND(-1.54);
SELECT ROUND(1.456,2); #小数点后保留两位
#ceil 向上取整,返回大于等于参数的最小整数
SELECT CEIL(-1.02);
#floor 向下取整,返回 <= 该参数的最大整数
SELECT FLOOR(-0.99);
#truncate 截断,保留小数端后几位
SELECT TRUNCATE(1.68989,1);
#mod 取余
SELECT MOD(100,-98);
SELECT 100