基础查询(二)
5、排序
单一字段排序:#将薪水按照从小到大 的进行排序
1、select
ename, job ,sal, comm
from emp
order by sal asc;
注意:asc升序,默认asc不用写
#将薪水按照从大到小的进行排列-降序DESC
2、select
ename, job, sal, comm
from emp
order by sal desc;
#多字段进行排序
3、select
ename, job, sal, comm
from emp
order by job desc,sal desc;
6、函数
#将员工的名字全部转成小写
1、select lower(ename) ename, job, sal, comm from emp;
#转大写
#通过小写临时表 将员工的名字全部转成大写
2、select upper(temp.ename) ename, temp.sal, temp.job from (select lower(ename) ename, job,sal,comm from emp) as temp;
#字符串截取 substr
#查询员工姓名种第二个字母是M的所有员工
#substr(被截取字段名称, 起始位置, 截取长度)
3、select ename from emp where substr(ename, 2, 1)='M';
#取一个字符串的长度
#取得部门名称的长度
4、select deptno,dname, length(dname) 长度 from dept;
#去掉收尾的空格trim
MGR编号为7566的job字符串长度
5、select ename, length(trim(job)) 长度 from emp where mgr='7566';
#四舍五入(round)
6、select round(1.1) 舍去;
7、select round(1.5) 进位;
#生成随机数
#生成0-1的随机数
8、select rand();
#生成随机数0-100
select round(rand()*100);
#ifnull 空值处理函数
#如果查询字段是null 填充0
10、select ename,ifnull(comm, 0) comm from emp;
#匹配函数
-- case job
-- when 'xxx' then yyyy
-- when 'xxx' then yyyy
-- else zzz
-- END
#匹配工作岗位 当为manager时 薪水上调10% 当为salesman时,薪水上调50%其他岗位薪水不变
11、select ename, job, sal as odsal, (case job when 'MANAGER' then sal*1.1 when 'SALESMAN' then sal*1.5 else sal end) as newsal from emp;
#将结果种的重复行去掉、查询公司有哪些工作岗位
12、select distinct job from emp;
7、分组查询
#查出每个工作岗位的最高薪水和其他重要信息
select max(sal) sal, job from emp group by job order by sal desc;
8、分组查询-having数据筛选
#找出clerk工种除外的其他每个工种平均收入水平大于2000的工种信息
select job, avg(sal + ifnull(comm, 0)) 平均工资 from emp where job!='CLERK' group by job having avg(sal+ifnull(comm, 0))>2000;
9、简单查询语句顺序总结
select:查询 from: 从某张表检索数据 where:经过条件筛选 group by:分组 having:分组后再进行条件筛选 order by:排序