oracle期末考试参考答案
刚刚考完,参考答案,欢迎斧正!
A,B相同的准备工作
准备工作: 开两个cmd
其中一个: sqlplus sys/123456 as sysdba;
alter user scott account unlock;
另一个:
sqlplus scott/tiger;
A卷题解
1.请完成以下sqlplus的设置并按要求保存代码和截图(20分,每小题4分)
scott用户下
(1)设置sql的提示符为你的姓名,如张三>>set sqlprompt 张三>>;
(2)设置每行100个字符,每页18行
set linesize 100 set pagesize 18
(3)查看scott用户的dept表,并将该内容存入my_1.sql;
select * from dept; save my_1
默认在主目录下,不用写路径
(4)执行my_1.sql文件
@my_1
(5)查看emp表对象的结构信息
desc emp;
2.请完成以下基本操作,并按要求保存代码和截图(此题50分,前4小题每小题5分,第5小题30分)
--sys用户窗口下 方便分辨sys还是普通用户,下面管理员的SQL>提示就不改了
(1)创建一个普通用户,要求以自己的姓名的全拼命名,如:zhangsan,密码为123create user zhangsan identified by 123;
(2)创建角色student_role,并使之具备创建表、创建视图、创建存储过程、创建触发器的权限
create role student_role; grant create table,create view,create procedure,create trigger to student_role;
(3)将用户角色student_role和创建会话权限授权给刚建立的用户zhangsan,将查询scott用户下的emp权限授给zhangsan
grant student_role,create session to zhangsan; grant select on scott.emp to zhangsan;
(4)修改zhangsan用户,让其默认表空间为users,并且表空间配额20m
alter user zhangsandefault tablespace usersquota 20m on users;
(5)连接到zhangsan用户,并解锁。并在该用户下完成:
conn zhangsan/123;
①建立数据表stu_emp,stu_dept,要求该表为scott用户下的emp表、dept表的备份
--先要授予对dept表的select权限grant select on scott.dept to zhangsan;
--复制表 回到zhangsan用户窗口
create table stu_emp as select * from scott.emp; create table stu_dept as select * from scott.dept;
②查询每位员工的实际工资(工资+津贴)
select ename 姓名,sal+nvl(comm,0) 实际工资 from stu_emp;
③查询比部门号为10号的平均工资高的人数
select count(empno) from stu_emp where sal>(select avg(sal) from stu_emp where deptno=10);
④创建视图view_detaliled,用于查看每个员工的编号,姓名以及所在城市
create view view_detaliled as select empno,ename,loc from stu_emp,stu_dept where stu_emp.deptno=stu_dept.deptno;
⑤对视图view_detaliled插入一条数据(1010,jack,北京).若能成功请查询相关数据,若不能成功,说明原因。
insert into view_detaliled values(1010,'jack','北京');
不能插入成功,因为视图一般由多个基表组成的逻辑结构,一般不允许直接进行dml(update,insert,delete)操作。
因为对视图的操作其实是对组成视图的好多个基本表的操作,直接dml操作视图可能破坏表与表之间的完整性约束等。
比如上面的例子,其实是分别向stu_emp插入(1010)和向表stu_dept插入('jack','北京')。很明显,dept表的新插入
记录缺少主键数据,不可能让你插入成功的。
此时想要直接对视图进行dml操作,需要写一个关于该视图的替换触发器,在触发器内实现对各个基本表的dml操作3.创建一个存储过程stu_proc并执行。要求:以员工编号为参数,返回该员工的姓名和工资,若工资低于3000,则报错,
说明工资低于国家最低工资水平create procedure stu_proc(var_empno in stu_emp.empno%type,var_ename out stu_emp.ename%type,var_sal out stu_emp.sal%type) as beginselect ename,sal into var_ename,var_sal from stu_emp where empno=var_empno;if var_sal<3000 thendbms_output.put_line('工资低于国家最低工资水平');end if; end; /
--执行
set serveroutput on; declarevar_empno stu_emp.empno%type;var_ename stu_emp.ename%type;var_sal stu_emp.sal%type; beginvar_empno:=&no;stu_proc(var_empno,var_ename,var_sal);dbms_output.put_line('姓名:'||var_ename||' 工资:'||var_sal); end; /
4.声明一个带输入参数(部门号)的显式游标cur_sel,根据参数传递来查询每位员工的姓名和所在城市
declarecursor cur_sel(var_deptno stu_dept.deptno%type) isselect ename,loc from stu_dept,stu_emp where stu_dept.deptno=stu_emp.deptno and stu_dept.deptno=var_deptno;var_no stu_dept.deptno%type; beginvar_no:=&no;dbms_output.put_line(var_no||'号员工的相关信息如下');for emp_record in cur_sel(var_no) loopdbms_output.put_line(emp_record.ename||'住在'||emp_record.loc);end loop; end; /
考试时不知道时间。。总感觉我们时间分配少了。。做这题时就剩下10min了,急的要死。。然后多写了一个cursor前create,卡住了,竟然当时方的不会改。。差点没完卷,考试提交版本如下:
declarecursor cur_sel(var_deptno stu_dept.deptno%type) isselect ename,loc from stu_dept,stu_emp where stu_dept.deptno=stu_emp.deptno and stu_dept.deptno=var_deptno; beginfor emp_record in cur_sel(10) loopdbms_output.put_line(emp_record.ename||'住在'||emp_record.loc);end loop; end; /
5.详细阐述oracle的体系结构(10分)
略
B卷题解
1.sqlplus环境设置(20分,每小题4分)
(1)设置每行120个字符,设置每页20行set linesize 120 set pagesize 20
(2)设置sql的提示符为你的名字,如李四>>
set sqlprompt 李四>>
(3)查看scott用户下emp表信息
select * from emp;
(4)my.sql文件,实现在scott用户下emp表中查询工作是SALESMAN的所有职工的姓名
工资,要求姓名,工资字段分别格式化成a10,$999,999.00
在D盘根目录下新建文件my.sql 写下如下代码:
--my.sqlcol ename for a10 col sal for $999,999.00 select ename,sal from emp where job='SALESMAN';
(5)执行my.sql
@ D:\my
2.请完成以下基本操作,并按要求保存代码和截图(此题50分,每小题5分)
--管理员窗口
(1)创建一个普通用户,要求以自己的姓名的全拼写命名,如:lisi,密码:abccreate user lisi identified by abc;
(2)创建角色myrole,并使之具备创建表,创建视图,创建触发器,存储过程的权限
create role myrole; grant create table,create view,create trigger,create procedure to myrole;
(3)将用户角色myrole和连接权限授给刚建立的用户lisi
grant myrole,connect to lisi;
(4)将访问scott用户下的emp的权限授权给lisi
grant select on scott.emp to lisi;
(5)修改lisi用户,让其默认表空间为users,并且表空间配额5m
alter user lisi default tablespace usersquota 5m on users;
(6)连接到lisi用户,并且在该用户下完成
--普通用户窗口切换到 lisi用户conn lisi/abc
①建立数据表my_emp/my_dept,分别为scott用户下的emp,dept表的备份
--先要授予对dept表的select权限 sys窗口grant select on scott.dept to lisi;
--复制表 回到lisi用户窗口
create table my_emp as select * from scott.emp; create table my_dept as select * from scott.dept;
②列出所有"CLERK"(办事员)的姓名及其部门名称
select ename,dname from my_emp,my_dept where my_emp.deptno=my_dept.deptno and job='CLERK';
③列出薪水比"SMITH"多的所有员工
select * from my_emp where sal>(select sal from my_emp where ename='SMITH');
④找出在(任何年份的)2月受聘的所有员工
select * from my_emp where to_char(hiredate,'mm')=2;
⑤查询各种工作的最低工资
select job 工作,min(sal) 最低工资 from my_emp group by job;
3.scott模式中使用隐式游标for循环,用于实现根据部门号查询员工姓名和工作(10分)
conn scott/tiger;
set serveroutput on; declarevar_deptno emp.deptno%type; beginvar_deptno:=&no;dbms_output.put_line(var_deptno||'号部门的相关信息如下');for emp_record in (select ename,job from emp where deptno=var_deptno) loopdbms_output.put_line('姓名:'||emp_record.ename||' 工作:'||emp_record.job);end loop; end; /
4.写一个pl/sql存储过程。根据scott模式下的emp表,写一个带参数的存储过程proc(deptno in number,sum_sal out number),
输入部门编号,输出该部门的总工资信息,并写一个pl/sql程序块,测试该存储过程(10分)--过程
create or replace procedure proc(var_deptno in number,sum_sal out number) as beginselect sum(sal) into sum_sal from emp where deptno=var_deptno; end; /
--执行
declarevar_deptno number;var_sumSal number; beginvar_deptno:=&no;proc(var_deptno,var_sumSal);dbms_output.put_line(var_deptno||'号部门的总工资为:'||var_sumSal); end; /
5.说明oracle逻辑结构和物理结构的构成
略
(安工程,依芸芸&李臣龙oracle班)
总的来说。。一如既往。。简单 。。就是有些题意可能有歧义,A卷存储过程那题"以员工编号为参数,返回该员工的姓名和工资,若工资低于3000,"姓名和工资要写成输出参数。。亲口问老师的。。
还有就是时间。。。考完前10分钟才知道总时长只有。。。。。
参考答案,欢迎斧正,给下届乘凉!
还有,以后打死不写学校考试有关的博客了。。。。后辈子弟也不要写了。。太无耻!
oracle期末考试参考答案相关推荐
- 工程职业伦理_Mooc_2019_期末考试参考答案
单选题 当工程风险产生的不利后果比较严重,又无其他策略可用时,通过变更工程项目计划,从而消除风险本身或消除风险产生的条件,达到规避风险的目的.这种做法属于意外风险应对的哪种措施?() 风险转移 风险遏 ...
- 2017年哈工大数理逻辑期末考试参考答案
求公式((p→r)∧¬r)→(q∧r)((p\to r)\land \neg r)\to (q\land r)((p→r)∧¬r)→(q∧r)的主合取范式,主析取范式. 此公式真值表如下 ppp qq ...
- 2017年哈工大数理逻辑B期末考试参考答案(1)
一.求公式(¬p→q)→(q→r)的主合取范式和主析取范式.(10分)一.求公式(\neg p \to q )\to (q \to r )的主合取范式和主析取范式.(10分)一.求公式(¬p→q)→( ...
- 2015年哈工大数理逻辑A期末考试参考答案(2)
五.在命题演算系统PC中证明:(20分)五.在命题演算系统 PC 中证明:(20 分)五.在命题演算系统PC中证明:(20分) (1)⊢((A→B)→(A→C))→(A→(B→C))(1)⊢ ((A ...
- 2020工程伦理(清华版)期末考试参考答案
1.工程伦理讨论的"工程概念"主要是 2.下列哪项不属于罗斯提出的直觉主义义务论的道德原则 3.当某项工程出现质量事故时,下列处理程序错误的是 4.由于工程可以服务于多个方面的目的 ...
- 2015年哈工大数理逻辑A期末考试参考答案(1)
一.求公式(r∧(q→p))→((q→r)→¬p)的主合取范式和主析取范式.(10分)一.求公式(r∧(q→p))→((q→r)→¬p)的主合取范式和主析取范式.(10分)一.求公式(r∧(q→p)) ...
- 2017年哈工大数理逻辑B期末考试参考答案(3)
七 . 在 F C 中 证 明 : ( 20 分 ) 七.在FC中证明:(20分) 七.在FC中证明:(20分) ( 1 ) ⊢ ( ∃ x P ( x ) → ∀ x Q ( x ) ) → ∀ x ...
- 大一下学期C++期末模拟考试参考答案
期末模拟考试参考答案 中国传媒大学2020春季学期,C++程序设计期末模拟答案 说在前面:以下并不是官方给出的答案,而是学生自制版,提交结果AC,但不能保证绝对的正确性,仅供大家参考.我在程序中以注释 ...
- 知道PHP期末答案,PHP期末练习(参考答案).doc
PHP期末练习(参考答案) 练习题 单选 以下控制选项与错误控制无关的是:( ) error_reporting display_errors log_errors date.timezone 下面不 ...
最新文章
- kibana6.2.2安装
- Oracle优化07-分析及动态采样-直方图
- onclick 调用php,AJAX调用PHP简单应用
- SpringCloud工作笔记082---自动化部署Jenkins_Windows下安装使用Jekins
- 一点一点学习Ubuntu
- snmp是什么层协议_计算机网络基础:TCP/IP协议相关知识笔记?
- 【GitHub Desktop】(GitHub Windows桌面版) 中文汉化,(GitHub客户端汉化,非网页端插件)
- Flutter 调用百度地图APP实现位置搜索、路线规划
- 【iOS】—— ARC学习
- 2021年最新最全面的Java视频教程!!!
- C# 原子操作 Interlocked
- 中国知网 万方 维普下载文献说明
- error processing condition on org.autoconfigure.transaction.TransactionAutoConfiguration$Transaction
- DEM的分析相关操作
- delphi 数字转字符串补全
- 让Windows 2003支持红外线通信
- 守旧的互联网企业VS创新的传统企业:微软站哪端?
- FloTHERM 热分析PDF资料大全
- batch size 代码
- 考公专业科目计算机,2019国家公务员考试专业科目考试大纲(计算机类)