精品文档
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表的权限
精品文档
相关推荐: