加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle和Mysql数据库技术

发布时间:2020-12-31 05:45:51 所属栏目:百科 来源:网络整理
导读:副标题#e# 1.查资料,回答下面问题: a.Oracle公司的诞生和发展 (1)1977年程序员埃里森和另外两名程序员创建了软件开发实验室(Software Development Laboratories)。 (2)1970年IBM的一名研究人员写了一篇名为《大型共享数据库的关系数据模型》的论文,埃里


计算emp表中的所有人员的平均薪水
select avg(sal) from as 平均薪水 emp;
计算emp表中最高薪水
select max(sal) from emp;
计算emp表中最低薪水
select min(sal) from emp;
计算emp表中薪水大于1000的人员的个数
select count(*) from emp where sal>1000;
计算emp表中薪水的总和
select sum(sal) as 薪水总和 from emp;
计算emp表中薪水和津贴的总和
(1)select sum(sal+nvl(comm,0)) from emp;
(2)select sum(sal)+sum(nvl(comm,0)) from emp;

?

14.【上机】完成下面的sql语句,练习分组查询,groupby和having子句,并截图表示出结果。


1.求各部门最高薪水
分析:“各部门“,就是按部门分组;
select max(sal) from emp group by deptno;
select deptno,max(sal) from emp group by deptno;
2.按照部门和职位分组,分别求最高薪水,该组人员个数
(1)按部门分组:select deptno,max(sal),count(*) from emp group by deptno;
(2)按职位分组:select job,count(*) from emp group by job;
3.求薪水最高的员工姓名
select ename from emp where sal=(select max(sal) from emp);
4.求平均薪水是2000以上的部门
select deptno from emp group by deptno having avg(sal)>2000;
5.求每个部门的平均薪水,并按照薪水降序排列
select deptno,avg(sal) 平均薪水 from emp group by deptno order by 平均薪水;
6.求每个部门薪水在1200以上的雇员的平均薪水、最高薪水,并且分组结果中只包含平均薪水大于1500的部门,排序按照部门平均薪水倒序排列
select deptno,avg(sal),max(sal) from emp where sal>1200 group bydeptno having avg(sal)>2500 order by avg(sal) desc;
7.把雇员按部门分组, 求最高薪水, 部门号, 过滤掉名字中第二个字母是‘A‘的, 要求分组后的平均薪水>1500, 按照部门编号倒序排列
select deptno,count(*) from emp where ename not like ‘_A%‘group by deptno having avg(sal)>1500 order by deptno desc;

15.下面的sql语句为什么不行?说出你的理由。


select ename,deptno,avg(sal) from emp group by deptno;
要查询的字段必须是单组分组函数和被分组的字段。此题中的”ename”既不是单组分组函数,也不是被分组的字段,所以报错。


16.说出:where、groupby、having、order by的执行顺序


执行顺序:where>group by>having>order by。


17.【上机】完成下面的sql语句,练习子查询,并截图表示出结果。


1.求平均薪水最高的部门的部门编号
select max(平均薪水) from (select deptno,avg(sal) 平均薪水 from emp group by deptno);
2.求出emp表中哪些人是经理人,打印出名字和编号
select ename,empnofrom emp where job=‘MANAGER‘;
3.求比普通员工的最高薪水还要高的经理人名称
select ename,sal from emp where job in (‘MANAGER‘,‘PRESIDENT‘) and sal> (select max(sal) from emp where job not in(‘MANAGER‘,‘PRESIDENT‘));
4.每个部门平均薪水的等级(需要用到表的连接)
select deptno,部门平均薪水,grade from (select deptno,avg(sal) 部门平均薪水 from emp group by deptno),salgrade where 部门平均薪水 between losal and hisal ;

?

18.为什么需要对查询出的数据做分页处理?


在列表查询时由于数据量非常多,一次性查出来会非常慢;就算一次性查出来了,也不能一次性显示给客户端。所以要把数据分批查询出来,每页显示一定量的数据,这就是数据分页。
我们经常会碰到要取某次查询结果的n到m条纪录,这里也用到了分页思想。

?

19.说明Oracle数据库如何实现分页。


20.Oracle中的分页处理依赖于哪个字段? mysql中分页处理使用什么来实现?


Oracle : rownum;
Mysql : limit;


21.【上机】完成下面的sql语句,并截图表示出结果。


1.查询薪水最高的前5个人
select * from (select ename,sal from emp order by sal desc) where rownum<=5;
2.查询薪水排名(从高到低)在5-10之间的员工
select ename,sal,rn,rownum from (select t.*,rownum as rn from (select rownum,sal from emp order by sal desc) t) ab where rn>5 and rn<=10;

?

22.为什么需要表连接? 常用的表连接查询有哪几种?分别适用于哪种情况?


数据库是由多张表组成的存储结构,并通过多张表之间的关系建立起完整有效的数据存储形式。为了获得多张表之间的完整有效的数据联系,数据库查询语言SQL提供了强大的表连接查询功能。表连接就是将多个表中的数据连接到一起的查询,即连接操作可以在一个select语句中完成从多个表中查询和处理数据的功能。


23.为什么需要笛卡尔积?笛卡尔积的作用是?

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读