ORACLE试题01

更新时间:2023-11-26 01:10:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

ORACLE试题

一、单项选择题(每题2分,共20分)

1、假如不知道该变量的基础数据库列的数据类型,在PL/SQL块中如何定义一个变量?(表名是DBTABLE,列名是COLUMNX)

A、V_X NUMBER; B、V_X VARCHAR2

C、V_X DBTABLE.COLUMNX%TYPE; D、V_X COLUMNX.DBTABLE%TYPE; 2、下列代码中哪一行有错?

A、SELECT DNAME,ENAME B、FROM EMP E , DEPT D

C、WHERE EMP.DEPTNO=DEPT.DEPTNO D、ORDER BY 1,2

3、查询那一个数据字典视图,只能列出用户所拥有的表?

A、ALL_TABLES B、DBA_TABLES C、USER_TABLES D、USR_TABLES 4、在CREATE VIEW命令中哪个子句将阻止通过视图对基表进行更新?

A、WITH CHECK OPTION B、WITH READ ONLY C、WITH NO UPDATE

D、没有这样的选项;假如用户对基表有权限,用户可以更新视图

5、表中的一列具有这样的特性,其值的重复度很高,我们可以使用何种索引?

A、唯一索引 B、组合索引 C、反向建索引 D、位图索引

6、在出错处理部分中需要包含什么子句,以便处理前面没有指定的错误?

A、ELSE

B、WHEN ANYTHING ELSE C、WHEN ANY OTHER D、WHEN OTHERS THEN

7、在创建序列的过程中,下列()选项指定序列在达到最大值或最小值后,将继续从头开始生成值。

A、Cycle B、Nocycle C、Cache D、Nocache

8、在PL/SQL中,在执行任何DML语句前,SQL%NOTFOUND的值为()。

A、NOTFOUND B、TRUE C、NULL D、FALSE

9、在Oracle中,PL/SQL块中定义了一个带参数的游标:

1

CURSOR emp_cursor(dnum NUMBER) IS

SELECT sal, comm FROM emp WHERE deptno = dnum; 那么正确打开此游标的语句是()

A、OPEN emp_cursor(20); B、OPEN emp_cursor FOR 20; C、OPEN emp_cursor USING 20;

D、FOR emp_rec IN emp_cursor LOOP … END LOOP; 10、当两位用户中的每一位都对一个单独的对象进行了锁定,而他们又要获取对方对象的锁时,将会发生()。(选择一项) A、 共享锁 B、 死锁 C、 排他锁 D、 以上皆非

二、多项选择题(每题3分,共15分)(多选、少选、选错都不得分)

1、在Oracle中,通过命令()可以释放锁。

A、INSERT B、DELETE C、ROLLBACK D、UNLOCK E、COMMIT

2、PL/SQL块中可以使用下列()命令。

A、TRUNCATE B、DELETE C、SAVEPOINT D、ALTER TABLE

3、使用下列()将 Null 值转换为实际值。

A、NVL B、NVL2 C、NULLIF D、To_number

4、同义词有以下()用途。

A、简化 SQL 语句

B、隐藏对象的名称和所有者 C、提供对对象的公共访问 D、显示对象的名称和所有者

5、选择两个是TRUE的答案:一个变量被定义成%TYPE.

A、假如基表列的数据类型改变了,PL/SQL代码需要改变 B、用户不必了解列的数据类型和小数点精度 C、只有字符变量可以用%TYPE定义 D、用户不必关心列的定义上所作的改变

三、基本操作题(前5道为改错,每题3分)

2

员工信息表[员工号,姓名,性别] T_Worker[WorkerId,name,sex]

员工迟到表[员工号,迟到日期,迟到时长] T_Late[WorkerId,latetime,latelong] 1.在 日期1 (2005-5-1) 到日期2 (2005-5-31) 之间迟到的员工姓名

select name from T_Worker where T_Late.latetime between 2005-5-1 and 2005-5-3

1. select name from T_Worker,T_Late

where T_Worker.WorkerId=T_Late. WorkerId

and T_Late.latetime between ‘2005-5-1’ and ‘2005-5-31’; 评分标准:写连接条件给2分,日期型加引号给1分。

2.查询员工姓名含有’张’的员工信息

select * from T_Worker where name like ‘张’;

.2 select * from T_Worker where name like ‘%张%’; 评分标准:只写一个’%’给1分。

3.更改员工号为00001的员工的姓名为Jack

replace name=Jack from T_Worker where Workerld=00001;

3. update name=’Jack’ from T_Worker where Workerld=’00001’; 评分标准:写update给2分,写引号给1分。

4.迟到两次以上的员工号

select Workerld from T_Late where count(latetime)>2;

4. select Workerld from T_Late group by Workerld having count(latetime)>2; 评分标准:写having子句给1.5分,写group by子句给1.5分。

5.没有迟到的员工信息

select * as join from T_Worker where T_Late.Workerld is null;

5select * from T_Worker where WorkId not in (select WorkId from T_Late); 或:select * from T_Worker where not exists

(select * from T_Late where T_Worker.WorkerId=T_Late. WorkerId); 评分标准:只要能够实现都可得分,改卷老师自己斟酌

6.编写触发器,当删除员工信息时,同时删除对应的迟到记录(PL/SQL实现)(10分)

6. create trigger trig_delworker after delete on T_Worker begin

delete from T_Late where WorkID=:OLD.WorkID; end; /

3

四、上机综合题(共40分)

某数据库有4张表,是关于学生资料、选修课程、系以及选课信息情况的,它们分别是student学生表、dep系表、course课程表、sc选课表,4张表的结构如下:

student (sno学号,sname姓名,sex性别,age年龄,dno系号); dep (dno系号,dname系名,tel电话);

course(cno课程号,cname课程名,credit学分); sc(sno学号,cno课程号,grade成绩); 试用SQL/PLSQL语句完成如下功能:(10分) 1、 建表,在定义中要求声明: (1)、每个表的主外建。

(2)、学生的年龄介于17 到 25 岁之间。 (3)、学生姓名不能为空。

2、以上4张表中插入数据已经完成,试完成以下查询功能(15分)

(1)、查询系名为计算机系的学生信息,要求输出学生的学号、姓名和性别。 (2)、查询各系c01课程号男生、女生的最高成绩和最低成绩。

(3)、查询各系年龄最小的同学名单,输出学生姓名、年龄及所在系的系号。

3、创建一个用户函数,其功能是指定一个学号,函数返回该学生目前已获得的学分(选课并考试通过方可得到学分)。如果该生没有选课(选课表中没有该学号),函数返回-1;请填写部分代码(PL/SQL)(15分)

上机综合题答案:

1.评分标准:基本建表语句3分,完整定义各表主外键得3分,学生年龄的检查约束2分、学生姓名非空(not null)1分,表定义的顺序(考虑主外键关系,dep要先于student,sc要后于student、course)1分

2.(1)select sno, sname, sex from student,dep

where student.dno = dep.dno and dname=’计算机系’; 评分标准:连接条件3分,其他酌情。 (2)select dno,sex,max(grade),min(grade)

from sc,student

where sc.sno=student.sno and sc.cno='c01' group by dno,sex;

评分标准:group by子句3分,连接条件1分,聚合函数1分。 (3)select sname, age, student.dno from student,

(select dno,min(age) as minage from student group by dno) T where age=minage and student.dno=T.dno;

评分标准:自查询4分,连接1分。其它实现方式酌情得分。 3. create or replace function fun_course(sno1 sc.sno%type) return number as

amount integer; score number(6,2);

4

begin

select count(*) into amount from sc where sno=sno1; if (amount=0) then return -1;

select sum(credit,0) into score

from sc join course on sc.sno=course.sno and sc.sno=sno1 and grade>=60 group by sc.sno; return score; end; /

评分标准:能写出函数定义框架可得3分,有return子句可得2分,求学生所得学分的SQL语句5分,其它5分酌情。

5

本文来源:https://www.bwwdw.com/article/lgkt.html

Top