oracle表操作和数据库对象(视图,序列,索引)的相关练习

oracle表操作和数据库对象(视图,序列,索引)的相关练习

--1.列出所有雇员的姓名及其直接上级的姓名
  select e1.ename,e2.ename from emp e1
  inner join emp e2
  on e1.mgr=e2.empno
--2.列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门;
  select * from emp e
  right join dept d
  on e.deptno=d.deptno
--3.显示所有部门在"洛阳"(dept表 loc字段)的员工姓名
  select * from emp e
  inner join dept d
  on e.deptno=d.deptno
  inner join city c
  on d.loc=c.cid
  where c.cname='洛阳'
--4.显示员工"WARD"的姓名,部门名称
select e.ename,d.dname from emp e
inner join dept  d
on e.deptno=d.deptno
where e.ename='WARD'
--5.显示员工姓名,部门名称,工资,工资级别(salgrade表 grade字段),要求工资级别大于4级
select * from emp e 
inner join dept d
on e.deptno=d.deptno
inner join salgrade s
on e.sal> =s.losal and e.sal<=s.hisal
where s.grade>4
--6.显示员工"KING"和"FORD"管理的员工姓名及其经理姓名
  select * from emp e1
  full join emp e2
  on e1.mgr=e2.empno
  inner join emp e3
  on e1.empno=e3.mgr
  where e1.ename='KING' or e1.ename='FORD'
--7.显示员工名,参加工作时间,经理名,参加工作时间:参加工作时间比他的经理早
select e1.ename,e1.hiredate,e2.ename,e2.hiredate from emp e1
inner join emp e2
on e1.mgr=e2.empno
where e1.hiredate<e2.hiredate
--8、求出部门名称中,带'S'字符的部门员工的工资总和 、部门人数
select d.dname, sum(e.sal),count(*) from emp e
inner join dept d
on e.deptno=d.deptno
where d.dname like '%S%'
group by d.dname

--9、列出所有员工的年工资,按年薪从低到高排序
select ename,(sal+nvl(comm,0))*12 年薪 from emp order by 年薪
--10、列出各种工作的最低工资以及从事此工作的雇员姓名
select * from emp e ,(select min(sal) msal,job from emp group by job) s where e.job=s.job and e.sal=s.msal
--11、列出所有部门的详细信息和部门人数
select * from dept d ,(select d.deptno, count(empno) from emp e,dept d where e.deptno(+)=d.deptno group by d.deptno) s
where d.deptno=s.deptno
--12、列出所有员工的姓名、部门名称和工资
select e.ename,d.dname,e.sal from emp e
inner join dept d
on e.deptno=d.deptno
--13、查询员工信息: 员工的名字 老板的名字  
select e.ename,m.ename from emp e,(select * from emp where mgr is null) m
--14、要求查询出每一个雇员的编号、姓名、工资、部门名称、工资在所在公司的工资等级 
--15、按照职位分组,求出每个职位的最高工资、最低工资以及平均工资 
select job,max(sal),min(sal),avg(sal) from emp group by job
--16、统计平均工资大于2000的部门的详细信息
select * from dept d,(select deptno, avg(sal) asal from emp group by deptno) s
where d.deptno=s.deptno and s.asal>2000
 

上一篇:Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器


下一篇:Oracle-DQL 1- select基础