您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页oracle数据库试题

oracle数据库试题

来源:欧得旅游网
ORACLE数据库试题 74

姓名: 戴希引

一、选择题(总分50分,每题1分,*为多选)42

1. 下列不属于ORACLE的逻辑结构的是(C)

A 区 B 段 C 数据文件 D表空间 2. 下面哪个用户不是ORACLE缺省安装后就存在的用户( A )

A . SYSDBA B. SYSTEM C. SCOTT D. SYS 3 下面哪个操作会导致用户连接到ORACLE数据库,但不能创建表(A )

A 授予了CONNECT的角色,但没有授予RESOURCE的角色 B没有授予用户系统管理员的角色 C数据库实例没有启动 D数据库监听没有启动 4. 在Oracle中,当FETCH语句从游标获得数据时,下面叙述正确的是( C )

A 游标打开 B游标关闭 C当前记录的数据加载到变量中 D创建变量保存当前记录的数据 5. 在Oracle中,下面关于函数描述正确的是( A D) *

A SYSDATE函数返回Oracle服务器的日期和时间

B ROUND数字函数按四舍五入原则返回指定十进制数最靠近的整数 C ADD_MONTHS日期函数返回指定两个月份天数的和 D SUBSTR函数从字符串指定的位置返回指定长度的子串

6. 阅读下面的PL/SQL程序块:

BEGIN INSERT INTO

employee(salary,last_name,first_name)VALUES(35000,’Wang’,'Fred’); SAVEPOINT save_a; INSERT INTO employee(salary,last_name,first_name) VALUES(40000,’Woo’,'David’);

SAVEPOINT save_b; DELETE FROM employee WHERE dept_no=10; SAVEPOINT save_c; INSERT INTO employee(salary,last_name,first_name)

VALUES(25000,’Lee’,'Bert’);

ROLLBACK TO SAVEPOINT save_c;

INSERT INTO employee(salary,last_name,first_name)

VALUES(32000,’Chung’,'Mike’); ROLLBACK TO SAVEPOINT save_b; COMMIT; END;

运行上面的程序,哪两个更改永久保存到数据库( CD )。 *

A DELETE FROM employee WHERE dept_no=10; B INSERT INTO

employee(salary,last_name,first_name)VALUES(32000,’Chung’,'Mike

’); C INSERT INTO employee(salary,last_name,first_name)

VALUES(35000,’Wang’,'Fred’); D INSERT INTO employee(salary,last_name,first_name) VALUES(40000,’Woo’,'David’);

7. 在Oracle中,表VENDOR包含以下列:

VENDOR_ID NUMBER Primary Key NAME VARCHAR2(30) LOCATION_ID NUMBER ORDER_DT DATE

ORDER_AMOUNT NUMBER(8,2)

下面对表VENDOR运用分组函数的子句合法的是( C)。 A FROM MAX(order_dt) B SELECT SUM(order_dt) C SELECT SUM(order_amount) D WHERE MAX(order_dt) = order_d

8. 在Oracle中,表EMP包含以下列: NAME VARCHAR2(20) ADDR VARCHAR2(60)

要以NAME’s address is ADDR格式返回数据,以下SQL语句正确的是( B )。

A SELECT NAME + ’’’s address is ‘ + ADDR FROM EMP; B SELECT NAME || ’’’s address is ‘ || ADDR FROM EMP; C SELECT NAME + ’\\’s address is ‘ + ADDR FROM EMP; D SELECT NAME || ’\\’s address is ‘ || ADDR FROM EMP; 9. 在Oracle中,以下不属于集合操作符的是( B )。 A UNION B SUM C MINUS D INTERSECT

10. 在Oracle中,关于锁,下列描述不正确的是( D )。

A 锁用于在用户之间控制对数据的并发访问 B 可以将锁归类为行级锁和表级锁 C insert、update、delete语句自动获得行级锁 D 同一时间只能有一个用户锁定一个特定的表

11. 在Oracle中,序列venseq使用下面的语句创建:

CREATE SEQUENCE venseq INCREMENT BY 1 START WITH 10 MAXVALUE 100 MINVALUE 10 CYCLE CACHE 5; 下面对序列venseq修改的语句,错误的是( A )。 A ALTER SEQUENCE venseq START WITH 1; B ALTER SEQUENCE venseq MAXVALUE 90; C ALTER SEQUENCE venseq NOMINVALUE; D ALTER SEQUENCE venseq NOCACHE;

12.在Oracle中,使用以下语句创建视图:

CREATE OR REPLACE VIEW pen_view AS SELECT * FROM order_master WHERE ostatus = ‘p’ WITH CHECK OPTION CONSTRAINT penv; 当用户试图执行以下语句: UPDATE pen_view SET ostatus = ‘d’ WHERE

ostatus=’p’;下列描述正确的是( B )。 A Oracle将ostatus修改为d,不提示任何错误 B Oracle不执行更新操作,并返回错误信息 C Oracle将ostatus修改为d,同时返回错误信息 D Oracle不执行更新操作,也不提示任何错误

13. 在Oracle中,在以下情形建立位图索引可以获得较好的性能( C )。

A 在列值唯一的列上建立 B 在列值相差很小的列上建立 C 在列值频繁重复的列上建立 D 在用于保存位图的列上建立 14. 在Oracle中,通过命令( D )可以释放锁。

A INSERT B DELETE C ROLLBACK D UNLOCK 15. 在Oracle中,关于PL/SQL下列描述正确的是( C )。

A PL/SQL代表Power Language/SQL B PL/SQL不支持面向对象编程 C PL/SQL块包括声明部分、可执行部分和异常处理部分 D PL/SQL提供的四种内置数据类型是character,integer,float,boolean 16. 在Oracle中,阅读下列PL/SQL块:

DECLARE v_lower NUMBER:=2; v_upper NUMBER:=100;

v_count NUMBER:=1; BEGIN I = 2; I <= 2; i++

FOR i IN v_lower..v_lower LOOP INSERT INTO test(results) VALUES (v_count); v_count := v_count +1; ENDLOOP; END;

请问FOR LOOP循环体执行了( A )次。 A 1 B 98 C 100 D 235

17. 在Oracle中,关于子程序的描述不正确的是( C )。子程序就是存储过程

和函数. A 子程序是已命名的PL/SQL块,可带参数并可在需要时随时调用 B 子程序可以具有声明部分、可执行部分和异常处理部分 C 子程序参数的模式只有IN和OUT两种模式 D 子程序可分为过程和函数两种类型

18. 在Oracle中,关于触发器的描述正确的是(D )。 A 触发器可以删除,但不能禁用 B 触发器只能用于表 C 触发器可以分为行级和语句级两种 D 触发器是一个对关联表发出insert、update、delete或select … for update语句时触发的存储过程

19. 在Oracle中,你需要创建索引提高薪水审查的性能,该审查要对员工薪水提高12个百分点后进行分析处理,下面哪个create index命令能解决此问题

( A )。 A CREATE INDEX my_idx_1 ON employee(salary*1.12);

B CREATE UNIQUE INDEX my_idx_1 ON employee(salary); C CREATE BITMAP INDEX my_idx_1 ON employee(salary); D CREATE INDEX my_idx_1 ON employee(salary) REVERSE;

20. 在Oracle中,执行下面的语句:

SELECT ceil(-97.342),floor(-97.342), round(-97.342),trunc(-97.342)

FROM dual; 哪个函数的返回值不等于-97( B )。 A ceil() B floor() C round(0) D trunc()

21. 在Oracle中,用以下SQL命令创建了一个序列:

CREATE SEQUENCE my_seq START WITH 394 INCREMENT BY 12

NOMINVALUE NOMAXVALUE NOCYCLE NOCACHE; 用户执行包含my_seq.NEXTVAL的SQL语句三次,然后执行包含

my_seq.CURRVAL的SQL语句四次,请问序列my_seq的当前值是( B )。 A 406 B 418 C 430 D 442 E 242 22. 在Oracle中,下列哪种标量类型不能保存到数据库表中( B )。

A CHAR B RAW C DATE D BOOLEAN 23. 在Oracle中,不属于游标属性的是( C )。

A %NOTFOUND B %FOUND C %ISCLOSE D %ISOPEN

24. 在Oracle中,在SQL提示符下调用PL/SQL过程的方法是( ABC )。*

A 使用CALL语句 B 使用EXECUTE语句 C 使用RUN语句 D 直接使用过程名

25. 在Oracle中,用下列语句定义了一个过程:

CREATE OR REPLACE PROCEDURE test(a IN VARCHAR2,b IN OUT NUMBER, c OUT VARCHAR2) IS BEGIN

…… END;/ 假定使用的变量都已定义,下面对过程test的调用语法正确的是( C)。

A test(‘String1’,50,v_str2) B test(v_str1,v_num1,’String2’) C test(‘String1’,v_num1,v_str2) D test(v_str1,20,v_str2)

26. 在Oracle中,关于程序包的描述不正确的是(B )。 A 程序包是一种数据库对象,它是对相关PL/SQL类型、子程序、游标、异常、变量和常量的封装 B 程序包中私有对象是通过PRIVATE关键字来标识的 程序包体可以包括没

有在程序包规范中列出的对象,这些是私有对象,程序包的用户不能使用 C PL/SQL允许两个或多个打包的子程序具有同一名称,只要子程序接受的参数数据类型不同 D 程序包具有模块化、信息隐藏、新增功能及性能更佳等优点 27.在Oracle中,用户( A)拥有所有内置的程序包。

A SYS B SYSTEM C PUBLIC D DEFAULT 28.在Oracle中,通过命令( C D)可以释放锁。 * A INSERT B DELETE C ROLLBACK D COMMIT

29.在Oracle中,事务中使用下列SQL语句不会引起锁定( A)。 A SELECT B INSERT C UPDATE D DELETE 30. 在Windows操作系统中,Oracle的( A )服务器监听并接受来自客户端应用程序的连接请求。

A OracleHOME_NAMETNSListener B OracleServiceSID C OracleHOME_NAMEAgent D OracleHOME_NAMEHTTPServer

31 .在Oracle中,有一个名为seq的序列对象,以下语句能返回序列值但不会

引起序列值增加的是(C )。

A select seq.ROWNUM from dual; B select seq.ROWIDfrom dual; C select seq.CURRVALfrom dual; D select seq.NEXTVALfrom dual;

32.ORACLE中,执行语句:SELECT

address1||’,'||address2||’,'||address2 ”Address” FROM employ;将会

返回( B )列。 A 0 B 1 C 2 D 3

33.在Oracle中,INSTEAD OF触发器主要用于( D )。 A 表 B 表和视图 C 基于单个表的视图 D 基于多个表的视图 34. Oracle数据库中,通过( B )访问能够以最快的方式访问表中的一行。

A 主键 B Rowid C 唯一索引 D 整表扫描 35.Oracle数据库中,以下( C )命令可以删除整个表中的数据,并且无法回滚。A drop B delete C truncate D cascade 36. Oralce数据库中,以下( A )函数可以针对任意数据类型进行操作。

A TO_CHAR B LOWER C MAX D CEIL 37.在Oracle中,以下是STUDENTS表的结构:

SID NUMBER NOT NULL,Primary Key SNAME VARCHAR2(30) COURSE_ID VARCHAR2(10) NOT NULL MARKS NUMBER 你需要查询参加了课程ID为C10的考试,并且分数排在前10名的学生,以下( D )语句能够实现此功能。 A. SELECT SID,marks,ROWNUM “Rank”FORM students WHERE ROWNUM<=10 AND course_id=’C10′ORDER BY marks DESC; B.SELECT SID,marks,ROWNUM”Rank”FORM students HERE ROWNUM<=10 AND course_id=’C10′ORDER BY marks; C.SELECT SID,marks,ROWNUM”Rank” FORM (SELECT SID ,marks FORM students WHERE ROWNUM<=10 AND course_id=’C10′ORDER BY marks DESC;

D.SELECT SID,marks,ROWNUM”Rank”FORM (SELECT SID ,marks FORM students WHERE course_id=’C10′ ORDER BY marks DESC) WHERE ROWNUM<=10;

38. 在Oracle中,用于PL/SQL程序输出调试信息的内置程序包是(D ) A DBMS_STANDARD B DBMS_ALERT C DBMS_LOB D DBMS_OUTPUT

39. 在Oracle中,下列( B)语句不能用于控制游标。

A Open B Create C Fetch D Close 40.在Oracle中有表”cd”,它包含属性”cdcode”,”category”和”cdname”,要查询category取值为”CLASSIC”或”ROCK”的行,应采用语

句( AD)。* A SELECT * FROM cd WHERE category IN (‘CLASEIC’,'ROCK’); B SELECT * FROM cd WHERE category BETWEEN ‘CLASSIC’ AND ‘ROCK’;

C SELECT * FROM cd WHERE category=’CLASSIC’ AND category=’ROCK’; D SELECT * FROM cd WHERE category=’CLASSIC’ OR category=’ROCK’; 41. 在Oracle中,在执行SQL语句时,你不小心使用Update命令将所有的ID

值设置成了11111,那么使用( C)命令可以取消这一操作。 A EXIT B COMMIT C ROLLBACK D UNDO

42.在Oracle 中,使用了如下的语句创建用户TOM,则对于该用户而言,以下说

法错误的是( D )。 CREATE USER TOM IDENTIFIED BY TOMSYS; A 该用户的口令为TOMSYS B TOM默认为表空间为SYSTEM C TOM 的临时表空间为TEMP D 使ORANT UPDATE 命令可以修改TOM的口令 43.游标变量的类型是( B ) A 隐式游标 B 显示游标 C REF游标 D 循环游标 44. 使用(B )命令可查看在创建触发器时发生的编译错误

A View errors B Show errors C Display errors D Check errors 45. (A )触发器允许触发操作的语句访问行的列值 A 行级 :old :new B 语句级 C 模式 D 数据库级

46. Oracle内置程序包由( A )用户所有

A sys B system C scott D Pub lic

47、数据完整性实质,存储在数据库中的数据正确无误并且相关数据具有一致性,根据完整性机制所作用的数据库对象和范围不同,可以分为: ( B ),( A ),

( C ),( D ),其中外键可以实现( C ) 。主键可以实现( A )。 A 实体完整性 B 域完整性 C参照完整性 D自定义完整性

48. 在数据库的表中,( A )是指表中的某一列(或某些列),该列的值唯一标

识 一行。 A 主键 B 外键 C 唯一键 D 次键

49. 在T-SQL语言中,若要修改某张表的结构,应该使用的修改关键字是

( D );若要创建一个表,应该使用的语句是( B )。 A alter database B create table C create database D alter table 50. 在以下( B )情况下使用主键约束而不使用唯一约束:

A 列的值允许为空值 B 列有外键引用 C 列的值不允许为空值 D 以上都不对

二、编写SQL语句(总分12分,每题3分)6

1.创建一张学生表,包含以下信息:学号,姓名,年龄,性别,学历,联系电话。

CREATE TABLE STUDENT(

STUNO VARCHAR2(10) PRIMARY KEY, NAME VARCHAR2(20) NOT NULL, AGE NUMBER NOT NULL, SEX CHAR(10) ,

EDU VARCHAR2(20) NOT NULL, IPHONE NUMBER(11) NOT NULL );

2.向学生表添加如下信息:

1 A 22 男 123456 小学 2 B 21 男 119 中学

3 C 23 男 110 高中 4 D 18 女 114 大学 INSERT INTO STUDENT VLAUSE(1,‘A’,22,’男’,123456,’小学’); INSERT INTO STUDENT VLAUSE(2,‘B’,21,’男’,119,’中学’); INSERT INYO STUDENT VLAUSE(3,‘C’,23,’男’,110,’高中’); INSERT INTO STUDENT VLAUSE(4,‘D’,18,’女’,114,’大学’);

3. 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专” Update stu set degree = ‘大专’where phone like ‘11%’ 4. 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除 Delete from stu where name like ‘C%’ and sex = ‘男’

三、编写SQL语句(总分30分,每题5分)20

有一个“学生-课程”数据库,数据库中包括三个表:

(1) “学生”表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年

龄(Sage)、 所在系(Sdept)五个属性组成。 可记为: Student(Sno,Sname,Ssex,Sage,Sdept) Sno 为关键字。 (2) “课程”表Course由课程号(Cno)、课程名(Cname)、选修课号(Cpno)、学分 (Ccredit)四个属性组成。 可记为: Course(Cno,Cname,Cpno,Ccredit) Cno 为关键字。 (3)“学生选课”表SC由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成。 可记为: SC(Sno,Cno,Grade) (SNO, CNO) 为关键字。 完成下列操作: 1. 在以上三个表中查询Ccredit为5并且Grade大于60的学生的学号、姓名和性别

select student.Sno,Sname,Ssex from student, course, sc where (student.Sno=sc.Sno) and (course.Cno=sc.Cno) and (course.Ccredit=5) and (sc.Grade>60)

答案:select s.sno,s.sname,s.ssex from student s,course c,sc sc

where s.sno=sc.sno and c.cno=sc.cno and c.ccredit=5 and sc.grade>60

2 查询出“C语言”课程成绩前5名的学生的学号、姓名和所在系(含并列情况)。 Select top5 Sno,Sname,Ssex,Grade from student join SC C语言 on Cno =Sno order by Grade desc

答案select a.sno,a.sname,a.sdept,a.grade,rownum as 排名

from (select s.sno as sno,s.sname as sname,s.sdept as

dept,sc.grade as grade from student s,course c,sc sc where s.sno=sc.sno and c.cno=sc.cno and c.cname='C语言' order by sc. grade desc) a where a.rownum < 6

3 查询出各系学生人数。

Select Grade,count(*) as 人数 from student

答案select sdept as 系别,count(*) as 人数from student group by sdept

4 查询出“计算机应用基础”课程成绩高于张三同学此门课程成绩的学生的学号和姓名。

Select (select grade from sc where sname=’张三’and cname=’计算机应用基础’ jsj) student.Sno,Sname from SC where sc.grade>jsj;

答案select sc.grade from student s,course c,sc sc where s.sno=sc.sno

and c.cno=sc.cno and c.cname='计算机应用基础' and

sc.grade > (select sc.grade as a from student s,course c,sc sc where s.sno=sc.sno and c.cno=sc.cno and c.cname='计算机应用基础' and s.sname='张三')

5、查询学过编号为\"01\"但是没有学过编号为\"02\"的课程的同学的信息 Sleclt student from where found cno=1 and cno<>2;

答案select distinct sno from sc where cno='01' and sno not in

(select distinct sno from sc where cno='02')

6、按每位学生的总分划分成绩类别,90以上为A,80-90为B,70-80为C,60-70为D,其它为E。

答案

select s.sno,s.sname,sum(sc.grade) as 总分,

case when sum(sc.grade)>90 then 'A' when sum(sc.grade) between 80 and then 'B' when sum(sc.grade) between 70 and 79 then 'C' else 'E'

end from student s,course c,sc sc

where s.sno=sc.sno and c.cno=sc.cno group by s.sno,s.sname

四、 建立存储过程(8分)

输入参数为课程号SN,返回本门课程的学号,姓名,课程号,分数结果集。

输入参数为课程号SN,返回本门课程的学号,姓名,课程号,分数

结果集。 答案参考课件

一、 建包

Create package 包名 as Type 游标名 is ref cursor; End; 二、 建存储过程

Create 过程名(游标参数名 out包名. 游标名) as

Begin Open游标参数名 for select * from xxxx; end;

三、通过块调用存储过程

Declare 四个变量声明

游标参数名 out包名. 游标名; Begin

过程名; Loop Fetch游标参数名 into 四个变量; Exit when游标参数名%notfound; 输出记录; End loop; end

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务