数据库查询与视图

--1.    列出工资在1000到2000之间的所有员工的ENAME,DEPTNO,SAL

select ename,deptno,sal from emp where sal>1000 and sal<2000;
select ename,deptno,sal from emp where sal between 1000 and 2000;

--2.    显示DEPT表中的部门号和部门名称,并按部门名称排序

select dname ,deptno
from dept
order by dname;

--3.    显示所有不同的工作类型。

select distinct job from emp;

--4.    查询名字只有4个字符的所有职工;

select ename from emp
where ename like'____';


--5.    查询有7902,7566,7788三个MGR号之一的所有职工

select job ,mgr from  emp
where mgr=7902 or mgr= 7566 or mgr=7788;

--6.    列出部门号在10到20之间的所有员工,并按名字的字母排序

select ename , deptno
from emp  
where deptno  between 10 and 20
order by ename;


-- 7.    列出部门号是20,工作是职员的员工。

select * from emp
where job=  'CLERK' and deptno = 20;


---8.    显示名字中包含TH和LL的员工名字。

select ename from emp
where ename like '%TH%' or ename like '%LL%';

--9.    显示所有员工的名字和报酬

select ename ,comm
from emp;

--10.    显示在1982年中雇佣的员工
 
select ename from emp
where to_char(hiredate,'yyyy')=1982;

--11.    查询每个部门的平均工资、最低工资、最高工资。

select deptno 部门号,avg(sal),min(sal),max(sal) from emp
group by deptno;

--12.    查询出每个部门中工资最高的职工

select dname 部门名称,ename 员工 from emp e1 inner join dept on dept.deptno=e1.deptno
where sal=( select max(sal) from emp e2 where e1.deptno = e2.deptno );

--13.    查询出每个部门比全部员工平均工资高的职工人数

select deptno 部门编号,count(deptno) 人数 from emp
where sal>(select avg(sal) from emp e2 )

group by deptno;

--14.    在SCOTT模式下,使用all关键字过滤工资(sal)同时不等于3000、950和800的员工记录。
select * from emp e1
where sal <> all(select sal from emp e2 where

        sal in (3000,950,800));


-15.    使用LIKE关键字,在emp表中,要显示在1981年雇佣的所有员工的信息。

select * from emp where to_char(hiredate,'yyyy')like 1981;

--16.    在emp表中,查询工作时TURNER的员工姓名,但是不记得TURNER的准确拼写,
--但还记得它的第1个字符是T,第3个字符是R,第5个字符为E。

select * from emp where ename like 'T%R%E%';


--17.    查询工资大于3000的雇员姓名、工资、雇佣时间及所在部门名称。

select ename 姓名, sal 工资,hiredate 雇用时间, dname 部门名称 from
emp inner join dept on emp.deptno = dept.deptno
where sal>3000;

--18.    查询出每个部门比本部门员工平均工资高的职工人数。(5分)
--结果显示:“部门号 ” ,“比平均工资高的人数”

select deptno 部门号, count(deptno)比平均工资高的人数 from  emp
where sal>(select avg(sal) from emp)
group by deptno;

--19.    在SCOTT模式下,创建一个dept表与emp表相互关联的视图

create or replace view emp_view_complex as
select empno 员工编号, ename 员工姓名 ,dname 部门名称,sal 工资 ,emp.deptno 部门编号
from emp inner join dept on emp.deptno = dept.deptno;


--20.    通过emp_view_complex视图查询20号部门员工的姓名、工资信息及所在部门名和部门所在位置

select * from emp_view_complex where 部门编号 = 20;

    --删除视图emp_view_complex
    drop view emp_view_complex;
    
--21.    查询员工的姓名、编号、所在部门、工资(sal)、
--工资等级,并显示查询结果中的前6条记录(提示:使用伪列rownum

select ename,empno,dname,sal,grade from emp
inner join dept on emp.deptno = dept.deptno inner join
salgrade on sal between losal and hisal
where rownum <=6;

--22.    使用“关联子查询”检索emp表中工资小于同职位平均工资的员工信息

select * from emp  e1 where sal<
(select avg(sal) from emp e2 where e2.job=e1.job);


--23.    从EMP中查询出工资最低的职工。查询结果包括雇员姓名、职务及所在部门名称

select ename ,job ,dname from emp inner join dept
on emp.deptno=dept.deptno
where sal=(select min(sal) from emp);

--24.    从EMP中查询出每个部门工资最低的职工

select * from emp e1 where sal
=(select min(sal) from emp e2 where e1.deptno=e2.deptno);






















猜你喜欢

转载自blog.csdn.net/qq_36570464/article/details/80555994