基礎查詢(二)
阿新 • • 發佈:2020-08-22
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 empwhere 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:排序