oracle基础

jxb7568188

贡献于2013-06-30

字数:5406 关键词: Oracle 数据库服务器

条件查询: 1. 查询出工资大于1500的所有有雇员的信息 select * from emp where sal>1500; 2. 查询每月可以拿到奖金的雇员的信息(不为空 IS NOT NULL) select * from emp where comm is not null; 3. 查询工资大于1500,并且可以拿到奖金的雇员的信息 select * from emp where comm is not null and sal>1500; 4. 查询工资不大于1500,并且不能拿到奖金的雇员的信息(使用NOT 取反) select * from emp where comm is null and sal<=1500; 或 select * from emp where not (comm is not null or sal>1500); 5. 查询基本工资大于1500,小于3000的雇员信息(使用between and 包含了等于的内容) select * from emp where comm>1500 or comm<3000; 6. 查询出1981年出生的雇员的信息(BETWEEN ‘1-1月 -81’ AND ‘31-12月 -81’) select * from emp where hiredate between '1-1月 -81' and '31-12月 -81'; 7. 查询出雇员编号是7369、7449、7521的雇员的详细信息 select * from emp where empno in(7369,7449,7521); 8. 查询名字中第二个字母是M的雇员信息(LIKE ‘_M%’) select * from emp where ename like '_M%'; 9. 查询出名字中包含字母M的雇员信息 select * from emp where ename like '%M%'; 10. 查询81年出生的所有员工的信息(LIKE ‘%81%’) select * from emp where hiredate like '%81%'; 11. 查询工资中带6的员工的信息(证明LIKE可以应用在数字上) select * from emp where sal like '%6%'; 12. 查询编号不是7369的员工信息(<> 和 !=) select * from emp where empno!=7369; 或 select * from emp where empno not in(7369); 13. 工资有低到高进行排序(默认为ASC 升序排列) select * from emp order by sal; 14. 要求查询出员工的信息,查询的信息按照工资又高到低进行排序,如果工资相等,则按照雇佣日期由早到晚进行排序 select * from emp order by sal,hiredate; 15、查出部门30中所有员工 select * from emp where deptno=30; 16、列出所有办事员的姓名,编号和部门编号 select ename,empno,deptno from emp ; 17、找出奖金高于工资的员工 select * from emp where comm>=sal; 18、找出奖金高于工资60%的员工 select * from emp where comm>=sal*0.6; 19、找出部门10中所有经理和部门20中所有办事员的详细资料 select * from emp where job like 'MANAGER' and deptno=10 or deptno=20; 20、找出部门10中所有经理和部门20中所有办事员,即不是经理又不是办事员但工资大于或等于2000的员工的详细资料 select * from emp where not(job like 'MANAGER' and deptno=10 or deptno=20 or deptno=30)and sal>=2000; 21、找出所有拿奖金的员工的不同工作 select distinct job from emp where comm is not null; 22、找出不拿奖金或者奖金低于100的员工的所有信息 select * from emp where comm is null or comm<100; 23、找出每个月倒数第3天受雇的所有员工 select * from emp where hiredate=last_day(hiredate)-2; 24、找出14年前受雇的员工 select * from emp where months_between(sysdate,hiredate)/12 >=14; 25、以首字母大写的方式显示员工姓名 select initcap(ename) from emp; 26、显示正好为5个字符的员工姓名 select ename from emp where ename like '_____'; 或 select ename from emp where length(ename)=5; 27、显示姓名中不带R字母的员工姓名 select ename from emp where ename not like '%R%'; 28、显示所有员工姓名的前三个字符 select substr(ename,1,3) from emp; 29、显示所有员工姓名,把A全部换成a select replace(ename,'A','a') from emp; 30、显示服务满10年的员工和受雇日期 select ename,hiredate from emp where months_between(sysdate,hiredate)/12 >=10; 31、显示员工的详细资料按,姓名排序 elect * from emp order by ename; 32、显示员工的姓名和受雇日期,资格最老的排在前面 select ename,hiredate from emp order by months_between(sysdate,hiredate)/12 desc; 33、显示所有工作的姓名,工作和薪金,按工作降序排序,若工作相同按薪金升序排序 select ename,job,sal from emp order by job desc,sal; 34、显示所有员工的姓名,加入公司的年份和月份,按受雇日期所在月排序,若月份相同,则最早的年份的员工排在前面 select ename,to_char(hiredate,'yyyy'),to_char(hiredate,'mm') from emp order by to_char(hiredate,'mm'),to_char(hiredate,'yyyy'); 35、显示在一个月为30天的情况所有员工的日薪金,忽略余数 select ename,trunc(sal/30) from emp; 36、找出每年2月份受雇的员工 select * from emp where to_char(hiredate,'mm')=2; 37、显示每个员工加入公司的天数 select ename,round(sysdate-hiredate) from emp; 38、显示名字中有A的所有员工的姓名 select ename from emp where ename like '%A%'; 39、以年月日的形式显示所有员工的服务年限 select ename,to_char(hiredate,'yyyy-mm-dd') from emp; 40. 要求查出员工的编号,员工的姓名,部门的编号,部门名称和部门位置 select empno,ename,d.deptno,d.dname,loc from emp e,dept d where e.deptno=d.deptno; 41. 要求查出每个员工的姓名,工作,雇员的直接上级领导的姓名 select e.ename,e.job,m.ename from emp e,emp m where e.mgr=m.empno; 42. 要求查出每个员工的姓名,工作,雇员的直接上级领导的姓名及所在部门名称 select e.ename,e.job,m.ename,d.dname from emp e,emp m,dept d where e.mgr=m.empno and m.deptno=d.deptno; 43. 要求查询出每个员工的姓名、工资、部门名称、工资在公司的等级和领导的姓名及领导的工资在公司的等级。 select e.ename,e.sal,d.dname,es.grade,m.ename,m.sal,ms.grade from emp e, emp m, dept d, salgrade es, salgrade ms where e.mgr=m.empno and e.deptno=d.deptno and e.sal between es.losal and es.hisal and m.sal between ms.losal and ms.hisal; 44. 查询至少有以个员工的部门信息 select deptno,dname,loc from dept where deptno in (select deptno from emp); 45. 列出所有工资比SMITH高的所有员工 select * from emp where sal>(select sal from emp where ename='SMITH'); 46. 列出所有员工的姓名和直接上级的姓名 select e.ename,m.ename from emp e,emp m where e.mgr=m.empno; 47. 列出受雇比直接上级要早的员工的编号,姓名,和所在部门名称 select e.empno,e.ename,dname from emp e,emp m,dept d where e.deptno=d.deptno and e.mgr=m.empno and e.hiredate(select avg(sal) from emp) and m.sal between s.losal and s.hisal; 53. 列出与SCOTT从事相同工作的所有员工及部门名称 select e.*,dname from emp e,dept d where e.deptno=d.deptno and job in (select job from emp where ename='SCOTT'); 54. 列出每个部门的员工数,平均工资和平均服务期限 select deptno,count(*),round(avg(sal+nvl(comm,0)))avgsal,round(avg(sysdate-hiredate))avgday from emp group by deptno; 55. 列出所有员工的姓名,部门名称和工资 select ename,dname,(sal+nvl(comm,0)) as sum from emp e,dept d where e.deptno=d.deptno; 56. 列出所有部门的详细信息和人数 select d.*,(select count(*) from emp where deptno=d.deptno) as sum from dept d; 57. 列出每种工作的最低工资和员工姓名 select m.ename,m.job,m.sal from emp m,(select job j,min(sal+nvl(comm,0)) as min from emp group by job) where m.sal=min(+) and m.job=j; 58. 列出每个部门的经理的最低工资 select deptno,min(sal) from emp where job='MANAGER' group by deptno; 59. 列出所有员工的年薪,从低到高排序 select empno,ename,(sal+nvl(comm,0))*12 as sumsal from emp order by sumsal; 60. 列出带‘S’的部门的工资总和和部门人数 select d.deptno,nvl(sum(sal),0),count(empno) from emp e,dept d where e.deptno(+)=d.deptno and d.dname like '%S%' group by d.deptno; 61. 给服务年限超过10年的员工加薪10% update emp set sal = sal + sal * 0.1 where (months_between(sysdate,hiredate)/12) > 10;

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 金币 [ 分享文档获得金币 ]
0 人已下载

下载文档

相关文档