600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > oracle用scott编写包头包体 最新《Oracle数据库应用》-练习题2资料

oracle用scott编写包头包体 最新《Oracle数据库应用》-练习题2资料

时间:2021-08-02 11:15:57

相关推荐

oracle用scott编写包头包体 最新《Oracle数据库应用》-练习题2资料

精品文档

1. 索引的主要目标是提高访问的速度。(Y) 2. 包头没有包体是可以独立存在的。(Y) 3. OUT不是PL/SQL过程和函数的参数模式。(N)

4. 存储过程与触发器的主要区别就是,存储过程是由用户或应用程序显示

调用,而触发器是被事件自动触发。(Y)

5. 提供对对象的公共访问不是同义词具有的用途(N) 6. Trancate table 学生,该语句表示删除学生表。(N)

7. 创建视图的参数with read only,规定视图中不能执行插入、修改、删

除和查询操作。(N)

8. 创建对象类型使用create type语句(Y) 9. PL/SQL程序块最终由关键字end结束。(Y)

10. For循环中,每循环一次,循环变量自动增加一个步长的值。(Y)

四、 简答题(15分)

1. 列出oracle中索引的类型(5分)列出oracle中索引的类型(5分)

答:按照数据存储方式,可以分为B*树、反向索引、位图索引;

按照索引列的个数分类,可以分为单列索引、复合索引; 按照索引列值的唯一性,可以分为唯一索引和非唯一索引。 此外还有函数索引,全局索引,分区索引...

2. 简单列出几种当前流行的关系数据库系统?(5分)

答:Oracle,MySql,MsSql,DB2,Sybase.

3. 简单介绍表空间,并写出一种建立表空间的方法。(5分)

答:表空间是Oracle逻辑存储结构的最高层,一个数据库就是若干个表空间组成的。每个表空间对应操作系统中的一个或多个数据文件,但每个数据文件只能属于一个表空间。

Create tablespace表空间名datafile数据文件名;

五、 程序题(35分)

Scott用户下有表emp (EMPNO, ENAME, JOB, MGR, HIREDATE,

SAL,COMM ,DEPTNO)和表dept(DEPTNO ,DNAME,LOC),其中emp表为雇员表,各字段的中文含义为:雇员表(雇员号,雇员名,职位,上级编号,入职时间,月工资,奖金,部门号);dept表为部门表,各字段的中文含义为:部门表(部门编号,部门名,部门所在地点)。

精品文档

精品文档

1. 创建表空间mysp1,文件大小5M,文件名可以复用,数据文件放在

‘c:\\mysp1.dbf’。

创建表空间mysp1,文件大小5M,文件名可以复用,数据文件放在‘c:\\mysp1.dbf’。

createtablespace mysp1 datafile 'c:\\mysp1.dbf' size 5m reuse uniform size 128k;

2. 在mysp1表空间创建表 myemp,字段名及类型内容同scott用户下的emp。

在mysp1表空间创建表 myemp,字段名及类型内容同scott用户下

的emp。

Create table myemp as select * from scott.emp default tablespace mysp1

3. 修改myemp表将所有销售人员(即职位job为销售salesman)的奖金comm

加100

修改myemp表将所有销售人员(即职位(job)为销售salesman)

的奖金(comm)加100

Update myemp set comm=comm +100 where job=‘salesman’

4. 创建用户fox,密码f123,授予fox连接数据库,完全访问emp表和dept

表的权限。

创建用户fox,密码f123,授予fox连接数据库,完全访问emp

表和dept表的权限。

create user fox2 identified by f123; grant create session to fox;

grant select on scott.emp to fox;

5. 使用emp表查询工资高于500或者是岗位为MANAGER的雇员,同时还要满

足他们的姓名首字母为大写的J?

使用emp表查询工资高于500或者是岗位为MANAGER的雇员,同

时还要满足他们的姓名首字母为大写的J?

select * from scott.emp where (sal>500 or job='MANAGER') and ename like 'J%';

6. 使用emp表显示每个部门的每种岗位的员工的平均工资和最低工资?

使用emp表显示每个部门的每种岗位的员工的平均工资和最低工

精品文档

精品文档

资?

select deptno,job ,avg(sal) as 平均工资,min(sal) as 最低工资 from emp group by deptno,job;

7. 编写PL/SQL程序块,实现查询某个雇员的岗位,用中文显示岗位名称。

CLERK 普员工,SALESMAN 销售,MANAGER 经理,ANALYST 分析师,PRESIDENT 总裁(使用case语句)

编写PL/SQL程序块,实现查询某个雇员的岗位,用中文显示岗位名称。CLERK 普员工,SALESMAN 销售,MANAGER 经理,ANALYST 分析师,PRESIDENT 总裁(使用case语句)

setserverout on declare

v_jobscott.emp.job%type; v_shuchu varchar2(30); V_empno varchar2(20); begin

V_empno:=&empno;

select job into v_job from scott.emp where empno=v_empno; casev_job

when 'CLERK' then v_shuchu:='得职位是:普通员工'; when 'SALESMAN' then v_shuchu:='得职位是:销售员'; when 'MANAGER' then v_shuchu:='得职位是:经理'; when 'ANALYST' then v_shuchu:='得职位是:分析师'; else v_shuchu:='总裁'; end case;

dbms_output.put_line(v_empno || v_shuchu); exception

whenno_data_found then

dbms_output.put_line('您输入的员工不存在!'); end;

8. 编写程序块,用PL/sql实现输出7369号员工的姓名。

编写程序块,用PL/sql实现输出7369号员工的姓名。 Declare

V_name emp.ename%type; Begin

Select ename into v_name from emp where empno=’7369’; Dbms_output.put_line(v_name) End;

精品文档

精品文档

9. 编写函数annual_incomec,实现输入雇员的姓名,返回该雇员的年薪

编写函数annual_incomec,实现输入雇员的姓名,返回该雇员的年薪

create function annual_incomec(name varchar2) return number is

annual_salazy number(7,2); begin

--执行部分

selectsal*12+nvl(comm, 0) into annual_salazy from emp where ename=name;

returnannual_salazy; end; /

10. 编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就

给该员工工资增加10%。

编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%。

create or replace procedure sp_pro6(spName varchar2) is --定义

v_salemp.sal%type; begin

--执行

selectsal into v_sal from emp where ename=spName; --判断

ifv_sal<2000 then

updateemp set sal=sal+sal*10% where ename=spName; end if; end;

11. 创建角色myrole,将连接数据库,创建表,创建用户,创建角色,在任

何模式修改表,完全访问emp表的权限赋予myrole。

创建角色myrole,将连接数据库,创建表,创建用户,创建角色,在任何模式修改表,完全访问emp表的权限赋予myrole。

create role myrole; grant create session,createtable,createuser,createrole,alter any table to myrole;

grant all on scott.emp to myrole;

12. 回收myrole角色中完全访问emp表的权限

精品文档

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。