基础查询(二)

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、函数

#将员工的名字全部转成小写

1select 
lower(ename) ename, job, sal, comm 
from emp;

 

#转大写

#通过小写临时表 将员工的名字全部转成大写

2select 
upper(temp.ename) ename, temp.sal, temp.job
from (select
lower(ename) ename, job,sal,comm 
from emp) as temp;

 

#字符串截取  substr

#查询员工姓名种第二个字母是M的所有员工

#substr(被截取字段名称, 起始位置, 截取长度)

3select 
ename 
from emp 
where substr(ename, 2, 1)='M';

 

#取一个字符串的长度

#取得部门名称的长度

4select 
deptno,dname, length(dname) 长度
from dept;

 

#去掉收尾的空格trim

MGR编号为7566的job字符串长度

5select 
ename, length(trim(job)) 长度 
from emp 
where mgr='7566';

 

#四舍五入(round)

6select round(1.1) 舍去;

 

7select round(1.5) 进位;

 

 

#生成随机数

#生成0-1的随机数

8select rand();

 #生成随机数0-100

select round(rand()*100);

 

#ifnull 空值处理函数

#如果查询字段是null 填充0

10select 
ename,ifnull(comm, 0) comm
from emp;

 

#匹配函数

-- case job

-- when 'xxx' then yyyy

-- when 'xxx' then yyyy

-- else zzz

-- END

#匹配工作岗位 当为manager时 薪水上调10% 当为salesman时,薪水上调50%其他岗位薪水不变

11select 
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;

 

#将结果种的重复行去掉、查询公司有哪些工作岗位

12select 
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:排序

 

posted @ 2020-08-22 14:43  上天安排的最大嘛!  阅读(131)  评论(0编辑  收藏  举报