在oracle 中自己所做的作业。。

查询出工资大于1500的所有有雇员的信息
select * from emp where sal>1500;

查询每月可以拿到奖金的雇员的信息(不为空 IS NOT NULL)
select * from emp where comm is not null;

查询工资大于1500,并且可以拿到奖金的雇员的信息
select * from emp where sal>1500 and comm is not null;

查询工资不大于1500,并且不能拿到奖金的雇员的信息(使用NOT 取反)
select * from emp where not sal>1500 and comm is null;

查询基本工资大于1500,小于3000的雇员信息(使用between and 包含了等于的内容)
select * from emp where sal between 1500 and 3000;

查询出1981年出生的雇员的信息(BETWEEN ‘1-1月 -81’ AND ‘31-12月 -81’)
select * from emp where hiredate between '01-1月-81' and '31-12月-81';

查询出雇员编号是7369、7499、7521的雇员的详细信息(IN表示在什么范围,相反为NOT IN)
select * from emp where empno in (7369,7499,7521);

查询名字中第二个字母是M的雇员信息(LIKE ‘_M%’)
select * from emp where ename like '_M%';

查询出名字中包含字母M的雇员信息
select * from emp where ename like '%M%';

查询81年出生的所有员工的信息(LIKE ‘%81%’)
select * from emp where hiredate like '%81%';

工资有低到高进行排序(默认为ASC 升序排列)
select * from emp order by sal asc;

要求查询出员工的信息,查询的信息按照工资又高到低进行排序,如果工资相等,则按照雇佣日期由早到晚进行排序
select * from (select * from emp order by hiredate asc) order by sal desc;

显示10部门雇员进入公司的星期数
select round(months_between(sysdate,hiredate)) from emp where deptno=10;

查出部门30中所有员工
select * from emp where deptno=30;

列出所有办事员的姓名,编号和部门编号
select empno,ename,deptno from emp where job like 'SALESMAN';

找出奖金高于工资的员工
select * from emp where comm>sal;

找出奖金高于工资60%的员工
select * from emp where comm>sal*0.6;

找出部门10中所有经理和部门20中所有办事员的详细资料
select * from emp where job='CLERK' and deptno=20 or job='MANAGER' and deptno=10;

找出所有拿奖金的员工的不同工作
select job from emp where comm is not null;

找出不拿奖金或者奖金低于100的员工的所有信息
select * from emp where comm is null or comm<100;

找出每个月倒数第3天受雇的所有员工
select * from emp where last_day(hiredate)-2=hiredate;

找出32年前受雇的员工
select * from emp where to_char(hiredate,'yyyy')+32=to_char(sysdate,'yyyy');

以首字母大写的方式显示员工姓名
select initcap(lower(ename)) from emp;

显示正好为5个字符的员工姓名
select * from emp where ename like '_____';

显示不姓名中带R字母的员工姓名
select * from emp where ename like '%R%';

显示所有员工姓名的前三个字符
select substr(ename,3) from emp;

显示所有员工姓名,把A全部换成a
select replace(ename,'A','a') from emp;

显示服务满10年的员工和受雇日期
select * from emp where to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy')>10;

显示员工的详细资料按,姓名排序
select * from emp e,dept d where e.deptno=d.deptno order by ename;

显示员工的姓名和受雇日期,资格最老的排在前面
select ename,hiredate from emp order by hiredate asc;

显示所有工作的姓名,工作和薪金,按工作降序排序,若工作相同按薪金升序排序
select ename,job,sal from emp order by job desc,sal asc;

显示所有员工的姓名,加入公司的年份和月份,按受雇日期所在月排序,若月份相同,则最早的年份的员工排在前面
select ename,to_char(hiredate,'fmyyyy-mm') from emp order by to_char(hiredate,'mm') asc,to_char(hiredate,'yyyy') asc;

显示在一个月为30天的情况所有员工的日薪金,忽略余数
select round(sal/30,0) from emp;

找出每年2月份受雇的员工
select * from emp where to_char(hiredate,'mm')=2;

显示每个员工加入公司的天数
select round(months_between(sysdate,hiredate))*30 from emp;

显示名字中有A的所有员工的姓名
select ename from emp where ename like '%A%';

以年月日的形式显示所有员工的服务年限
select to_char(hiredate,'fmyyyy-mm-dd') from emp;

要求查出员工的编号,员工的姓名,部门的编号,部门名称和部门位置
select e.empno,e.ename,e.deptno,d.dname,d.loc from emp e,dept d where e.deptno=d.deptno;

要求查出每个员工的姓名,工作,雇员的直接上级领导的姓名
select e.ename,e.job,m.ename from emp e,emp m where e.mgr=m.empno;

要求查出每个员工的姓名,工作,雇员的直接上级领导的姓名及所在部门名称
select e.ename,e.job,m.ename,d.dname from emp e,emp m,dept d where e.mgr=m.empno and e.deptno=d.deptno;

要求查询出每个员工的姓名、工资、部门名称、工资在公司的等级和领导的姓名及领导的工资在公司的等级。
select e.ename,e.sal,d.dname,m.ename,g.grade from emp e,emp m,dept d,salgrade g where e.mgr=m.empno and e.deptno=d.deptno and e.sal between g.losal and g.hisal;

 

posted @ 2013-03-02 22:32  bod08daijianwei  阅读(237)  评论(0编辑  收藏  举报