A.显示给定日期后100天以内雇佣的雇员信息
B.显示给定日期前100天以内雇佣的雇员信息
C.显示给定日期100天以后雇佣的雇员信息
D.显示给定日期100天以前雇佣的雇员信息
7.执行以下语句出错的行是:
D
SELECTdeptno,max(sal)FROMemp
WHEREjobIN('CLERK','SALEMAN','ANALYST')
GROUPBYdeptno
HAVINGsal>1500;
A.第一行B.第二行
C.第三行D.第四行
8.执行以下语句出错的行是:
A
SELECTdeptno,max(avg(sal))
FROMemp
WHEREsal>1000
Groupbydeptno;
A.第一行B.第二行
C.第三行D.第四行
9.执行以下语句出错的行是:
A
SELECTdeptno,dname,ename,sal
FROMemp,dept
WHEREemp.deptno=dept.deptno
ANDsal>1000;
A.第一行B.第二行
C.第三行D.第四行
10.以下语句出错,哪种改动能够正确执行:
D
SELECTdeptno,max(sal)
FROMemp
GROUPBYdeptno
WHEREmax(sal)>2500;
A.将WHERE和GROUPBY语句顺序调换一下
B.将WHEREmax(sal)>2500语句改成HAVINGmax(sal)>2500
C.将WHEREmax(sal)>2500语句改成WHEREsal>2500
D.将WHEREmax(sal)>2500语句改成HAVINGsal>2500
11.以下语句的作用是:
D
SELECTename,salFROMemp
WHEREsal<(SELECTmin(sal)FROMemp)+1000;
A.显示工资低于1000元的雇员信息
B.将雇员工资小于1000元的工资增加1000后显示
C.显示超过最低工资1000元的雇员信息
D.显示不超过最低工资1000元的雇员信息
12.以下语句的作用是:
D
SELECTjobFROMempWHEREdeptno=10
MINUS
SELECTjobFROMempWHEREdeptno=20;
A.显示部门10的雇员职务和20的雇员职务
B.显示部门10和部门20共同的雇员职务
C.显示部门10和部门20不同的雇员职务
D.显示在部门10中出现,在部门20中不出现的雇员职务
第3章数据操作阶段练习
1.参照本章的emp表,以下正确的插入语句是:
D
A.INSERTINTOempVALUES(1000,'小李',1500);
B.INSERTINTOemp(ename,empno,sal)VALUES(1000,'小李',1500);
C.INSERTINTOemp(empno,ename,job)VALUES('小李',1000,1500);
D.INSERTINTOemp(ename,empno,sal)VALUES('小李',1000,1500);
2.删除emp表的全部数据,但不提交,以下正确的语句是:
B/C
A.DELETE*FROM EMP
B.DELETEFROM EMP
C.TRUNCATETABLE EMP
D.DELETETABLE EMP
3.以下不需要进行提交或回退的操作是:
D
A.显式的锁定一张表
B.使用UPDATE修改表的记录
C.使用DELETE删除表的记录
D.使用SELECT查询表的记录
4.当一个用户修改了表的数据,那么:
D
A.第二个用户立即能够看到数据的变化
B.第二个用户必须执行ROLLBACK命令后才能看到数据的变化
C.第二个用户必须执行COMMIT命令后才能看到数据的变化
D.第二个用户因为会话不同,暂时不能看到数据的变化
5.对于ROLLBACK命令,以下准确的说法是:
C
A.撤销刚刚进行的数据修改操作
B.撤销本次登录以来所有的数据修改
C.撤销到上次执行提交或回退操作的点
D.撤销上一个COMMIT命令
第4章表和视图阶段练习
1.创建表时,用来说明字段默认值的是:
C
A.CHECKB.CONSTRAINT
C.DEFAULTD.UNIQUE
2.表的主键特点中,说法错误的是:
D
A.一个表只能定义一个主键B.主键可以定义在表级或列级
C.主键的每一列都必须非空D.主键的每一列都必须惟一
3.建立外键时添加ONDELETECASCADE从句的作用是:
B
A.删除子表的记录,主表相关记录一同删除B.删除主表的记录,子表相关记录一同删除
C.子表相关记录存在,不能删除主表记录D.主表相关记录存在,不能删除子表记录
4.下面有关表和视图的叙述中错误的是:
C
A.视图的数据可以来自多个表B.对视图的数据修改最终传递到基表
C.基表不存在,不能创建视图D.删除视图不会影响基表的数据
5.以下类型的视图中,有可能进行数据修改的视图是:
C/D
A.带WITHREADONLY选项的视图B.子查询中包含分组统计查询的视图
C.子查询中包含计算列的视图D.带WITHCHECKOPTION选项的视图
第5章其他数据库对象阶段练习
1.以下关键字中表示序列的是:
A
A.SEQUENCEB.SYNONYM
C.LUSTERD.DATABASELINK
2.关于索引,说法错误的是:
A
A.索引总是可以提高检索的效率B.索引由系统自动管理和使用
C.创建表的主键会自动创建索引D.删除索引对拥有索引的表的数据没有影响
3.语句CREATEINDEXABCONemp(ename)创建的序列类型是:
B
A.B*树惟一索引B.B*树非惟一索引
C.B*树惟一复合索引D.B*树非惟一复合索引
4.关于序列,说法错误的是:
D
A.序列产生的值的类型为数值型
B.序列产生的值的间隔总是相等的
C.引用序列的当前值可以用CURRVAL
D.序列一旦生成便不能修改,只能重建
5.关于同义词,说法错误的是:
A
A.同义词只能由创建同义词的用户使用
B.可以为存储过程创建同义词
C.同义词可以和表重名
D.公有同义词和私有同义词创建的权限不同
第6章PL/SQL基础阶段练习
1.用来存放可变长度字符串的函数是:
B
A.CHARB.VARCHAR2
C.NUMBERD.BOOLEAN
2.在程序中必须书写的语句是:
C
A.SETSERVEROUTPUTONB.DECLARE
C.BEGIND.EXCEPTION
3.在程序中正确的变量定义语句是:
B
A.emp_recordemp.ename%ROWTYPE
B.emp_recordemp%ROWTYPE
C.v_enameemp%TYPE
D.v_enameename%TYPE
4.在程序中最有可能发生错误的语句是:
A
A.INSERTINTOemp(empno,ename)VALUES(8888,'Jone')
B.UPDATEempSETsal=sal+100
C.DELETEFROMemp
D.SELECT*FROMemp
5.关于以下分支结构,如果i的初值是15,环循结束后j的值是:
D
IFi>20THEN
j:
=i*2;
ELSIFi>15THEN
j:
=i*3;
ELSE
j:
=i*4;
ENDIF;
A.15B.30C.45D.60
6.关于以下循环,如果I的初值是3,则循环的次数是:
A
WHILEI<6LOOP
I:
=I+1;
ENDLOOP;
A.3B.4C.5D.6
7.以下表达式的结果非空的是:
B
A.NULL||NULLB.'NULL'||NULL
C.3+NULLD.(5>NULL)
第7章游标和异常处理阶段练习
1.关于显式游标的错误说法是:
D
A.使用显式游标必须先定义
B.游标是一个内存区域
C.游标对应一个SELECT语句
D.FETCH语句用来从数据库中读出一行数据到游标
2.有4条与游标有关的语句,它们在程序中出现的正确顺序是:
B
1)OPENabc
2)CURSORabcISSELECTenameFROMemp
3)FETCHabcINTOvname
4)CLOSEabc
A.1、2、3、4B.2、1、3、4
C.2、3、1、4D.1、3、2、4
3.用来判断FETCH语句是否成功,并且在FETCH语句失败时返回逻辑真的属性是:
B
A.%ROWCOUNTB.%NOTFOUND
C.%FOUNDD.%ISOPEN
4.在程序中执行语句SELECTenameFROMempWHEREjob='CLERK'可能引发的异常类型A
A.NO_DATA_FOUND
B.TOO_MANY_ROWS
C.INVALID_CURSOR
D.OTHERS
5.有关游标的论述,正确的是:
A
A.隐式游标属性%FOUND代表操作成功
B.显式游标的名称为SQL
C.隐式游标也能返回多行查询结果
D.可以为UPDATE语句定义一个显式游标
第8章存储过程、函数和包阶段练习
1.如果存储过程的参数类型为OUT,那么调用时传递的参数应该为:
C
A.常量B.表达式C.变量D.都可以
2.下列有关存储过程的特点说法错误的是:
A
A.存储过程不能将值传回调用的主程序
B.存储过程是一个命名的模块
C.编译的存储过程存放在数据库中
D.一个存储过程可以调用另一个存储过程
3.下列有关函数的特点说法错误的是:
D
A.函数必须定义返回类型
B.函数参数的类型只能是IN
C.在函数体内可以多次使用RETURN语句
D.函数的调用应使用EXECUTE命令
4.包中不能包含的元素为:
D
A.存储过程B.存储函数
C.游标D.表
5.下列有关包的使用说法错误的是:
C
A.在不同的包内模块可以重名
B.包的私有过程不能被外部程序调用
C.包体中的过程和函数必须在包头部分说明
D.必须先创建包头,然后创建包体
第9章触发器阶段练习
1.下列有关触发器和存储过程的描述,正确的是:
D
A.两者都可以传递参数
B.两者都可以被其他程序调用
C.两种模块中都可以包含数据库事务语句
D.两者创建的系统权限不同
2.下列事件,属于DDL事件的是:
C
A.INSERTB.LOGON
C.DROPD.SERVERERROR
3.假定在一个表上同时定义了行级和语句级触发器,在一次触发当中,下列说法正确的A
A.语句级触发器只执行一次
B.语句级触发器先于行级触发器执行
C.行级触发器先于语句级触发器执行
D.行级触发器对表的每一行都会执行一次
4.有关行级触发器的伪记录,下列说法正确的是:
D
A.INSERT事件触发器中,可以使用:
old伪记录
B.DELETE事件触发器中,可以使用:
new伪记录
C.UPDATA事件触发器中,只能使用:
new伪记录
D.UPDATA事件触发器中,可以使用:
old伪记录
5.下列有关替代触发器的描述,正确的是:
D
A.替代触发器创建在表上
B.替代触发器创建在数据库上
C.通过替代触发器可以向基表插入数据
D.通过替代触发器可以向视图插入数据
复习题一
1.关系模型允许定义三类完整性约束;实体完整性、参照完整性和用户定义的完整性
2.Oracle数据库是主要由三种类型的文件组成:
数据文件、日志文件和控制文件,另外还包括一些参数文件。
其中:
数据文件的扩展名为.DBF;日志文件的扩展名为.LOG;控制文件的扩展名为.CTL。
3.Oracle的逻辑存储凌单元从小到大依次为:
数据块(DATABLOCKS)、盘区(EXTENT)、段(SEGMENTS)和表空间(TABLESPACES)。
4.段不再是存储空间的分配单位,而是一个独立的逻辑存储结构,按照段中据存数据的特征,可以将段分为四种类型:
数据段、索引段、回退段、LOB段和临时段。
通过dba_segments数据字典表查看
5.TEMP用于存储临时表等信息
UNDO用于保存回滚段(RollbackSegment)
USERS用于存放用户私有信息
6.Oracle的内存结构由两个内存区组成:
系统全局区(SGA)程序全局区(PGA
7.标准SQL语句分类:
DMLDDLDCL
8.求:
12+32+52+...+152的值。
输入并执行以下程序:
SETSERVEROUTPUTON
DECLARE
v_totalNUMBER(5):
=0;
v_countNUMBER(5):
=1;
BEGIN
LOOP
v_total:
=v_total+v_count**2;
EXITWHENv_count=15;--条件退出
v_count:
=v_count+2;
ENDLOOP;
DBMS_OUTPUT.PUT_LINE(v_total);
END;
9.用FOR循环输出图形。
SETSERVEROUTPUTON
BEGIN
FORIIN1..8
LOOP
DBMS_OUTPUT.PUT_LINE(to_char(i)||rpad('*',I,'*'));
ENDLOOP;
END;
10.输出一个空心三角形。
BEGIN
FORIIN1..9
LOOP
IFI=1ORI=9THEN
DBMS_OUTPUT.PUT_LINE(to_char(I)||rpad('',12-I,'')||rpad('*',2*i-1,'*'));
ELSE
DBMS_OUTPUT.PUT_LINE(to_char(I)||rpad('',12-I,'')||'*'||rpad('',I*2-3,'')||'*');
ENDIF;
ENDLOOP;
END;
11.使用二重循环求1!
+2!
+...+10!
的值。
SETSERVEROUTPUTON
DECLARE
v_totalNUMBER(8):
=0;
v_niNUMBER(8):
=0;
JNUMBER(5);
BEGIN
FORIIN1..10
LOOP
J:
=1;
v_ni:
=1;
WHILEJ<=I
LOOP
v_ni:
=v_ni*J;
J:
=J+1;
ENDLOOP;
v_total:
=v_total+v_ni;
ENDLOOP;--外循环求总和
DBMS_OUTPUT.PUT_LINE(v_total)
END;
12.使用标量变量。
标量变量时最简单的标量,它只能存储单个值,它的数据类型
也是系统预定义的
setserverouputon
declarevar_scorenumber;
beginvar_score:
=89;
updategrade
setscore=var_score
whereend;
13.使用%type类型的变量。
使用%type类型的变量后,如果用户随后修改数据库中该列的结构,则该数据变量的值也随之改变
declarevar_namestudent.sname%type;
begin
selectsname
intovar-name
fromstudent
wheresid='';dbms_output.put_line(var_name);
end;
14.使用记录变量。
declaretypestudent_infoisrecord(
stu_idstudent.sid%type,
sty_namestudent.sname%type
);
rec_studentstudent_into;
begin
selectsid,sname
intorec_student
fromstudent
wheresid='';dbms_output.put_line(rec_student.stu_id);
dbms_output.put_line(var_student.sclass);
15.使用隐式游标
setserveroutputon
beginforstudenttablein(selectsid,sname,sbirthfromstudent)
loopdbms_output.put(studenttable.sid);
dbms_output.put(studenttable.sname);
dbms_output.put(studenttable.sbirth);
endloop;
end;
16.使用显式游标
declarecursorstudent_curisselect*fromstudent;
student_rowstudent%rowtype;
begin
openstudent_cur;
loop
fetchstudent_curinostudent_row;
exitwhenstudent_cur%notfound;
dbms_output.put_line(student_row.sid);
dbms_output.put_line(student_row.sname);
17.使用游标变量
declare
typestudentisrefcusor;
v_rcstudent_rc;
student_rowstudent%rowtype;
begin
openv_rcforselect*fromstudent;
loop
fetchv_rcintostudent_row;
exitwhenv_rc%notfound;
dbms_output.put_line(student_row.sid);
dbms_output.put_line(student_row.sname);
end;
18.创建一个过程,从student表中查询信息,这个过程将显示student表中所有学生信息
createorreplaceproceure[rintstudentinfois
begin
forstudent_curin(select*fromstudent)loop
dbms_output.put(student_cur.sid||'\');
dbms_output.put(student_cur.sname||'\');
dbms_output.put(student_cur.saddress||'\');
endloop;
endprintstudentinfo;
调用该过程
execprintstudentinfo;
19.创建程序包规范,并在其中生命一个过程和函数头,以及一个工友的记录类型
createorreplacepackageuser_pkgis
typestudent_infoisrecord(
idstudent.sid%type,
namestudent.sname%type,
birthstudent.sbirth%type;
addrstudent.saddress%type
);procedureprintstudentinfo;
functiongetstudentinfo(idinvarchar2)returnstudent_info;
enduser_pkg;
20.创建程序包主题,在程序表主体中声明一个私有游标
createorreplacepackagebodyuser_pkgis
cursostudent_curisselectsid,sname,sbirth,saddressfromstudent;
procedureprintstudentinfois
studentintostudent_info;
begin
openstudent_cur;
fetchstudent_curintostudentinfo;
whilestudent_cur%foundloop
dbms_output.put(studentinfo.id||'\');
dbms_output.put(st