加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网_ASP源码网 (https://www.1asp.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle和Mysql数据库技术

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


i.求10这个部门的所有员工
分析:查员工信息;但只是查部分员工而不是全部员工的信息。那是哪部分员工呢?条件是:部门编号为10的员工。用where子句。员工表包含部门信息,所以还是单表查询。
select * from emp where deptno=10;
ii.求名字是KING的这个人的信息
select * from emp where ename=’KING’;
iii.求薪水大于2000的员工信息
select * from emp where sal>2000;
iv.求部门不是10的员工信息
(1)select * from emp where deptno<>10;
(2)select * from emp where deptno!=10;
v.求薪水在800和1500之间的员工信息(包含800和1500)
select * from emp where sal between 800 and 1500;
vi.列出deptno为10或者30,并且工资>2000的所有人
select * from emp where deptno in(10,30) and sal>2000;
vii.利用in操作符,列出部门10和20的人员
select * from emp where deptno in (10,20);
viii.利用like操作符,查询名字中含有"H"的人员
select * from emp where ename like ‘%H%‘;
ix.分别利用like操作符和正则表达式,查询名字中含有"S"或者"M"的人员
select * from emp where ename like ‘%H%’or ename like‘%S%’;

10.下面两句话是否结果相同:相同。


select * from Emp where not ( deptno in(10,20));
select * from Emp where deptno not in(10,20);


11.数据库查询时,哪些内容区分大小写?哪些不区分?


sql语句关键字,如:select,from等不区分大小写;
表名和字段名:不区分大小写;
字段中的内容:区分大小写。


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


--把所有姓名变成小写
select lower(ename) from emp;
--把所有姓名变成大写
select upper(ename) from emp;
--求所有人名中包含‘a‘的员工信息不区分大小写
select ename from emp where lower(ename) like ‘%a%‘;
--截取子字符串,比如求Hello的一部分
select substr(‘Hello‘,2) from dual;
--求Hello的一部分,并指明长度
select substr(‘Hello‘,2,3) from dual;
--求ascii码对应的字符
select chr(65) from dual;
--求字符对应的ascii码
select ascii(‘中‘) from dual;
--四舍五入
select round(23.652) from dual;
--四舍五入小数点后面多少位
select round(23.652,1) from dual;
--四舍五入小数点前面多少位
select round(23.652,-1) from dual;
--------------------------------------------------------
--important!日期转换函数
--------------------------------------------------------
--将当前日期转换成1981-03-12 12:00:00这种形式的字符串
select to_char(sysdate,‘YYYY-MM-DD HH24:MI:SS‘) from dual;
--将1981-03-12 12:00:00字符串转换成日期
select to_date(‘1981-03-12 12:00:00‘,‘YYYY-MM-DD HH24:MI:SS‘) from dual;
--将每个人的薪水转换成固定格式的字符串
select to_char(sal,‘L00,000.9999‘) from emp;
--将固定格式的字符串转换成数值
select to_number(‘$1,250.00‘,‘$9,999.99‘) from dual;
--null当null参与计算时候,需要要nvl这个函数
select ename,sal*12+comm from emp;
select ename,sal*12+ nvl(comm,0) from emp;

?

13.【上机】完成下面的sql语句,练习分组函数的使用,并截图表示出结果。


计算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.为什么需要笛卡尔积?笛卡尔积的作用是?


所谓笛卡尔积,通俗点说就是指两个集合中任意取出两个元素所构成的组合的集合。假设R中有元组M个,S中有元组N个,则R和S的笛卡尔积中包含的元组数量就是M*N.这个规则可以向多个关系扩展。
所有表连接方式都会先生成临时笛卡尔积表,表示两个表中的每一行数据任意组合。在实际应用中,笛卡尔积本身大多没有实际用处,只有在两个表连接时加上限制条件,才会有实际意义。


24.【上机】完成下面的sql语句,练习表连接,并截图表示出结果。


1.求部门平均薪水的等级
select deptno,salgradewhere 部门平均薪水 between losal and hisal;
2.求平均薪水的等级最低的部门名称
select * from (select deptno,salgrade
where 部门平均薪水 between losal and hisal) t where grade=(select min(grade) from (select deptno,salgrade
where 部门平均薪水 between losal and hisal) );
3.求部门经理人中平均薪水最低的部门名称
select t.* from (select t.*,avg(sal) 经理人平均薪水 from emp where job=‘MANAGER‘ group by deptno) t,salgrade where 经理人平均薪水 between losal and hisal) t where grade=(select min(grade) from (select deptno,avg(sal) 经理人平均薪水 from emp where job=‘MANAGER‘ group by deptno));
4.求薪水最高的前5名雇员
select t.*,rownum from (select rownum,sal from emp order by sal desc) t where rownum<=5;
5.求薪水最高的第6到第10名雇员
select ename,sal from emp order by sal desc) t) ab where rn>5 and rn<=10;


25.Oracle中, union和minus的作用。

(编辑:安卓应用网_ASP源码网)

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

推荐文章
    热点阅读