姓名: 戴希引
一、选择题(总分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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务