1、将abcd改变成大写

select upper('abcd') from dual;

2、查询姓名为smith的员工信息

select * from emp where ename = upper('smith');

3、使用字母'*'替换掉姓名中的所有字母's'

select replace(ename,'S','*') from emp;

4、将员工的姓名全部大写字母开头

select initcap(ename) from emp;

5、要求截取每个雇员姓名的后2个字母

select substr(ename, -2) from emp;
或
select substr(ename, length(ename)-1) from emp;

6、对工资是2000元以下的员工,如果没发奖金,每人奖金100元

select ename,sal, nvl(comm,0)+sal factsal from emp;

7、对EMP表中工资为2000元以下的员工,如果没有奖金,则奖金为200元,如果有奖金,则在原来的奖金基础上加100元

select ename , sal , nvl2(comm,sal+100,sal+200+comm) factsal from emp;

8、现在要求显示全部雇员的职位,但是这些职位要求替换为中文显示:

​ CLERK:办事员;

​ SALESMAN:销售;

​ MANAGER:经理;

​ ANALYST:分析员;

​ PRESIDENT:总裁;

select decode(job,'CLERK','办事员','SALESMAN','销售员','MANAGER','经理','ANALYST','分析员','PRESIDENT','总裁') from emp;

9、根据员工的部门编号查询员工所属的部门中文显示

select ename , job,
case deptno
when 10 then '财务部'
when 20 then '市场调研部'
when 30 then '销售部'
when 40 then '运营部'
else '其他部门'
end "所属部门"
from emp;

10、统计每一个员工的工资等级

SELECT  ENAME  ,sal,
    CASE   
    WHEN sal> 700 AND sal <= 1200  THEN '1'   
    WHEN sal > 1201 AND sal <= 1400  THEN '2'   
    WHEN sal > 1401 AND sal <= 2000 THEN '3'  
    WHEN sal > 2001 AND sal <= 3000 THEN '4'  
    WHEN sal > 3001 AND sal <= 9999 THEN '5'  
  ELSE '0'
  END grade 
FROM EMP

1、查询每个雇员的编号,姓名,职位,工资,部门名称,部门位置。

select empno,ename , job ,sal ,dname,loc from emp e,dept d
where e.deptno = d.deptno;

2、查询每个雇员的编号,姓名,职位,工资,工资等级。

select empno, ename,job,sal,grade from emp,salgrade
where sal between losal and hisal;
--where sal>losal and sal < hisal;

3、查询每个雇员的编号,姓名,职位,工资,工资等级,部门名称。

select empno,ename,job,sal,grade,dname from emp,dept,salgrade
where emp.deptno = dept.deptno and sal between losal and hisal;

4、查询员工信息以及对应的员工所在的部门信息

select * from emp,dept
where emp.deptno = dept.deptno;  --等值(内)连接

select * from emp join dept
on emp.deptno = dept.deptno;  --内连接

select * from emp join dept
using(deptno);      --用using时,结果只显示一列deptno

5、查询员工的编号,姓名,工资,以及工资所对应的级别

select empno,ename,sal,grade from emp,salgrade
where sal between losal and hisal;

6、查询员工的编号,姓名,工资,工资级别,所在部门的名称

select empno,ename,sal,grade,dname from emp,salgrade,dept
where emp.deptno = dept.deptno and sal between losal and hisal;

7、查询员工信息以及所对应的部门信息,显示所有的部门

select * from emp ,dept
where emp.deptno(+) = dept.deptno;  --右外连接(Oracle)

select * from emp right join dept  --右外连接(SQL)
on emp.deptno = dept.deptno;

select * from emp right join dept
using(deptno);

8、显示员工信息以及所对应的部门信息,显示没有员工部门的员工信息

select * from emp ,dept
where emp.deptno = dept.deptno(+); --左外连接(Oracle)

select * from emp left join dept  --(SQL)
on emp.deptno = dept.deptno;

select * from emp left join dept 
using(deptno);

9、查询员工编号,员工姓名,职位,部门编号,部门名称.要求显示没有部门的员工信息同时显示没有员工的部门

select empno ,ename ,job,deptno from emp full join dept  --全连接
using(deptno);

select empno ,ename ,job,emp.deptno from emp full outer join dept
on emp.deptno = dept.deptno;

10、查询员工信息以及对应的员工所在的部门信息

select * from emp ,dept    
where emp.deptno = dept.deptno;   --普通的写法

select * from emp natural join dept ;  --自然连接

11、显示雇员的编号,名称,以及该雇员的经理名称

select e.empno,e.ename,m.ename mgrname from emp e, emp m
where e.mgr = m.empno;    --自连接

results matching ""

    No results matching ""