【推荐】常州电脑培训 常州网络营销|淘宝培训,常州软件开发Java|.NET|PHP培训,常州CAD|平面设计|PS培训,常州网页设计|网工培训,常州领新教育-东方博宜-常州IT技能培训网
扫一扫,加我们为好友有惊喜哦~
-->

核心课程
开班动态
专题服务

您当前所在位置:首页 > 中心动态 >>
【常州数据库培训】数据库练习

题目:  从人员表表中查询出各job的员工工资的最大值,最小值,平均值,总和。
题目:  从人员表表中查询出各个job的员工人数。
题目:  从人员表中查询出员工的最高工资和最低工资的差距。
题目:  从人员表中查询出工资比公司平均工资高的所有员工的员工号人员编号,姓名ename和工资sal。 

题目:  从人员表表中查询出和姓名中包含字母u的员工在相同部门的员工的员工号人员人员编号和姓名ename。
题目:  从人员表表中查询出管理者是KING的员工姓名ename和工资sal。
题目:  从人员表中查询出和SCOTT相同部门的员工姓名ename和雇用日期hiredate。
题目:  从人员表中查询出姓名中含有字母A和E的员工姓名。
题目:  从人员表表中查询出20号部门员工的岗位job。

use dfby
select max(sal),min(sal),avg(sal),sum(sal),count(*),job from emp group by job
select max(sal)-min(sal) from emp
select empno,ename,sal from emp where sal > (select avg(sal) from emp)

select empno,ename from emp where deptno in(select deptno from emp where ename like '%U%')

select ename,sal from emp where mgr = (select empno from emp where ename = 'KING')

select distinct job from emp where deptno = 20

--查询出比10号部门的平均薪水高的所有人的平均薪水(注意:10号部门薪水在1000以下的不列入统计范围)
select avg(sal) from emp where sal > (select avg(sal) from emp where deptno = 10 and sal >= 1000)

--多表查询:一定要指定查询条件
select * from emp
select * from dept
select * from emp,dept --笛卡尔集
--1、等值连接
select * from emp,dept where emp.deptno = dept.deptno --指定查询条件
select * from emp e,dept d where e.deptno = d.deptno --为表起别名,不能用as
select empno,ename,e.deptno,dname from emp e,dept d where e.deptno = d.deptno
--如果查询部分字段,一般要指定字段所在的表(一般所有字段都指定以提高查询效率)
select e.empno,e.ename,e.deptno,d.dname from emp e,dept d where e.deptno = d.deptno

--2、不等值连接
select * from emp e,salgrade s where e.sal between s.lowsal and s.hisal
select * from emp e,salgrade s where e.sal between s.lowsal and s.hisal and e.sal > 2000 order by e.sal

--查询出人员、部门及薪水级别信息
select * from emp,dept,salgrade where emp.deptno = dept.deptno and emp.sal between salgrade.lowsal and salgrade.hisal
select * from emp e,dept d,salgrade s where e.deptno = d.deptno and e.sal between s.lowsal and s.hisal

--3、自连接
--查询出员工编号,员工姓名,上级姓名
select * from emp
--e1为员工表,e2为上级表
select e1.empno as "员工编号",e1.ename as "员工姓名",e2.empno as "上级编号",e2.ename as "上级姓名" from emp e1,emp e2 where e1.mgr = e2.empno

--查询出员工编号,员工姓名,上级编号,上级姓名,员工所在部门名称,员工薪水级别
select e1.empno,e1.ename,e2.empno,e2.ename,d.dname,s.grade from emp e1,emp e2,dept d,salgrade s where e1.mgr = e2.empno and e1.deptno = e2.deptno and e1.sal between s.lowsal and s.hisal

--表 Join 表 on 条件
select * from emp e join dept d on e.deptno = d.deptno and e.sal > 2000
select * from emp e join dept d on e.deptno = d.deptno join salgrade s on e.sal between s.lowsal and s.hisal

select * from emp e cross join dept d --cross join产生笛卡尔集

--外连接
select * from emp
select * from emp e join dept d on e.deptno = d.deptno --只能显示出满足匹配条件的记录

--查询出所有的人和部门(没有部门的人也要显示)
select * from emp e left outer join dept d on e.deptno = d.deptno --left outer join:左外连接,查询左边所有的,以及跟左边匹配的右边

--查询出人和部门(没有人的部门也要显示)
select * from emp e right outer join dept d on e.deptno = d.deptno --right outer join:右外连接

--查询出所有的人和部门
select * from emp e full outer join dept d on e.deptno = d.deptno --full outer join:全连接

--题目:  查询部门在NEW YORK的所有员工姓名,员工号和部门名称。
select e.ename,e.empno,d.dname from emp e,dept d where e.deptno = d.deptno and d.loc = 'NEW YORK'
select * from dept

--题目:  查询每个部门中工资在2000元以上的员工姓名,工资及其所在部门名称,并以工资升序排序,如果工资相等则按员工姓名降序排序。
select e.ename,e.sal,d.dname from emp e,dept d where e.deptno = d.deptno and sal > 2000 order by sal,ename desc

--题目:  查询所有员工的员工编号和员工姓名及其主管编号和主管姓名(没有主管的员工信息也要查询出来)。
select * from emp
select e1.empno as "主管编号",e1.ename as "主管姓名",e2.empno as "员工编号",e2.ename as "员工姓名" from emp e1 join emp e2 on e1.empno = e2.mgr
select e1.empno as "员工编号",e1.ename as "员工姓名",e2.empno as "上级编号",e2.ename as "上级姓名" from emp e1 left outer join emp e2 on e1.mgr = e2.empno



返回顶部