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; --自连接