--基础题
 1.查询20号部门的员工姓名、岗位、薪资
 SELECT ENAME,JOB,SAL/*,DEPTNO*/
   FROM EMP
  WHERE DEPTNO = 20;
 2.查询工资超过3000的员工的姓名、薪资
 SELECT ENAME,SAL
   FROM EMP
  WHERE SAL >3000;
 3.查询10号部门以外的员工的所有信息
 SELECT * FROM EMP
  WHERE DEPTNO <>10;
 4.查询员工姓名为SMITH的员工的所有信息
 SELECT * FROM EMP WHERE ENAME = 'SMITH';
 SELECT * FROM EMP WHERE ENAME LIKE 'SMITH'; --模糊查询  效率偏低 不建议
 5.查询1981年2月20号入职的员工的姓名和薪资
 SELECT ENAME,SAL,HIREDATE FROM EMP WHERE HIREDATE = TO_DATE('19810220','YYYYMMDD'); --统一成日期类型
 SELECT ENAME,SAL FROM EMP WHERE TO_CHAR(HIREDATE,'YYYYMMDD') = '19810220'; --统一成字符型
 6.查询入职日期早于1982年1月1日的所有员工的姓名、入职日期
 SELECT  ENAME,HIREDATE 
   FROM EMP
  WHERE TO_CHAR(HIREDATE,'YYYYMMDD') < '19820101';
 SELECT ENAME,HIREDATE
   FROM EMP 
  WHERE HIREDATE < TO_DATE('19820101','YYYYMMDD');
 SELECT ENAME,HIREDATE
   FROM EMP
  WHERE TO_CHAR(HIREDATE,'YYYY') < '1982';
 7.找出奖金(COMM字段)大于0的员工信息
 /*SELECT * FROM EMP WHERE  COMM IS NOT NULL;*/
 SELECT * FROM EMP WHERE NVL(COMM,0)>0;
 SELECT * FROM EMP WHERE COMM >0 /*AND COMM IS NOT NULL*/;
 8.查询姓名中包含S的员工的姓名、岗位
 SELECT ENAME,JOB
   FROM EMP
  WHERE ENAME LIKE '%S%';
 9.查询员工姓名以S开头,且姓名总长度为5位的员工的所有信息
 SELECT * FROM EMP WHERE ENAME LIKE 'S____';
10.查询员工姓名前两位是SM,后两位是TH,中间一位不清楚具体字母的员工的所有信息
 SELECT * FROM EMP WHERE ENAME LIKE 'SM_TH'; 
 11.查询员工姓名至少有四位,且倒数第三位是I的员工的所有信息
 SELECT * FROM EMP WHERE ENAME LIKE '%_I__';
 12.查询岗位是MANAGER或SALESMAN的员工信息
 SELECT * FROM EMP WHERE JOB IN('MANAGER','SALESMAN');
 SELECT * FROM EMP WHERE JOB ='MANAGER' OR JOB = 'SALESMAN';
 13.查询SMITH和SCOTT的详细信息
 SELECT * FROM EMP WHERE ENAME IN('SMITH','SCOTT');
 SELECT * FROM EMP WHERE ENAME = 'SMITH' OR ENAME = 'SCOTT';
 14.查询10号或20号部门的员工信息
 SELECT * FROM EMP WHERE DEPTNO IN(10,20);
 15.查找工资在1000-3000之间的员工姓名、工作、工资(包含1000和3000)
 SELECT ENAME,JOB,SAL
   FROM EMP
  WHERE SAL BETWEEN 1000 AND 3000;
  SELECT ENAME,JOB,SAL
   FROM EMP
  WHERE SAL >= 1000 AND SAL <= 3000;
 16.查询入职时间在1980年或1981年的员工信息
 SELECT * 
   FROM EMP
  WHERE TO_CHAR(HIREDATE,'YYYY') IN ('1980','1981');
 SELECT * 
   FROM EMP
  WHERE TO_CHAR(HIREDATE,'YYYY') = '1980'
     OR TO_CHAR(HIREDATE,'YYYY') = '1981';
 SELECT * 
   FROM EMP
  WHERE HIREDATE BETWEEN TO_DATE('19800101','YYYYMMDD') AND TO_DATE('19811231','YYYYMMDD');
 17.查询员工姓名,员工薪资,薪资等级(1000以下为低级,1000-3000为中级,3000以上为高级)
 SELECT ENAME,SAL,
        CASE WHEN  SAL <1000 THEN '低级'
             WHEN  SAL BETWEEN 1000 AND 3000 THEN '中级'
             WHEN  SAL > 3000 THEN '高级'
         END 薪资等级
    FROM EMP;
 --综合题
 1.统计未按要求录入大写名字的员工
 SELECT * FROM EMP;
 UPDATE EMP SET ENAME='SMiTH' WHERE ENAME = 'SMITH'; 
 SELECT  * FROM EMP WHERE ENAME <> UPPER(ENAME);
 SELECT ENAME,UPPER(ENAME) FROM EMP;
 2.查找姓名总共有5位、且不是以A开头的员工信息
 SELECT * 
   FROM EMP
  WHERE ENAME LIKE '_____' AND ENAME NOT LIKE 'A%';
 3.查出10号部门的办事员和30号部门的经理
 SELECT * FROM EMP WHERE DEPTNO = 10 AND JOB = 'CLERK' OR DEPTNO = 30 AND JOB = 'MANAGER';
 SELECT  *  
   FROM  EMP
  WHERE(DEPTNO,JOB) IN ((10,'CLERK'),(30,'MANAGER'));
 4.查出10号部门的所有人、30号部门的部门经理以及所有岗位是分析师的员工
 SELECT * 
   FROM EMP
  WHERE DEPTNO = 10 OR (DEPTNO = 30 AND JOB = 'MANAGER') OR JOB = 'ANALYST';
 5.查出10号及30号部门的办事员及经理
 SELECT * 
   FROM EMP
  WHERE DEPTNO IN (10,30) AND JOB IN ('CLERK','MANAGER');
 6.找出奖金(COMM)高于工资的员工
 SELECT  * FROM EMP WHERE COMM > SAL;
 7.查询姓名中只有一个A字母的员工(有别的字符,但A只有一个)
 SELECT * 
   FROM EMP
  WHERE ENAME LIKE '%A%'    --查到含有A字母的
       AND ENAME NOT LIKE '%A%A%';  --直到没有两个A字母的    3个同样不满足
 8.年终时:有佣金的员工佣金翻倍,无佣金的员工获得薪资的10%作为佣金奖励,
 现查询员工姓名,薪资、佣金调整信息,按员工编号升序排列,其中调整信息包括:
 有佣金的以:“原佣金为:,调整后佣金为:”格式展示
 无佣金的以:“新增佣金:”格式展示
SELECT  ENAME 姓名,
         SAL   薪资,
         COMM,
         CASE WHEN COMM IS NOT NULL THEN '原佣金为:'||COMM||',调整后佣金为:' ||COMM*2
           ELSE '新增佣金为:'||SAL *0.1
         END 佣金调整信息
   FROM  EMP
  ORDER  BY EMPNO ASC;










