数据库课后练习题

更新时间:2023-12-03 19:50:01 阅读量: 教育文库 文档下载

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

ORACLE数据库课程习题 1

通过SQL*PLUS等数据库访问工具登录数据库服务器时, 所需的数据库连接串是在以下哪个文件中定义的( )A (A) tnsnames.ora (B) sqlnet.ora (C) listener.ora (D) init.ora

(E) 以上所述都不正确 2

以下关于数据库连接串的叙述正确的是( )E (A) 数据库连接串必须与数据库名一致 (B) 数据库连接串必须与全局数据库名一致

(C) 数据库连接串必须与数据库的实例名(INSTANCE)一致 (D) 数据库连接串必须与数据库的SID一致 (E) 以上所述都不正确 3

关于SQL*PLUS的叙述正确的是( )A

(A) SQL*PLUS是ORACLE数据库的专用访问工具

(B) SQL*PLUS是标准的SQL访问工具,可以访问各类关系型数据库 (C) SQL*PLUS是所有ORACLE应用程序的底层API (D) SQL*PLUS是访问ORACLE数据库的唯一对外接口 (E) 以上所述都不正确 4

SQL*PLUS在ORACLE数据库系统中的作用,以下叙述正确的是( )C

(A) 是ORACLE数据库服务器的主要组成部分,是服务器运行的基础构件.

(B) 是ORACLE数据库系统底层网络通信协议,为所有的ORACLE应用程序提供一个公共的通信平台

(C) 是ORACLE客户端访问服务器的一个工具,通过它可以向服务器发送SQL命令 (D) 是ORACLE客户端到客户端的点对点的通信工具,用来传递各个客户端的数据

(E) 以上所述都不正确 5

命令sqlplus /nolog的作用是( )C

(A) 仅创建一个ORACLE实例,但并不打开数据库. (B) 仅创建一个ORACLE实例,但并不登录数据库. (C) 启动sqlplus,但并不登录数据库 (D) 以nolog用户身份启动sqlplus (E) 以上所述都不正确

6

在SQL*PLUS中显示EMP表结构的命令是( )B (A) LIST EMP (B) DESC EMP

(C) SHOW DESC EMP (D) STRUCTURE EMP

(E) SHOW STRUCTURE EMP 7

在SQL*PLUS环境中可以利用DBMS_OUTPUT包中的PUT_LINE方法来回显服务器端变量的值

但在此之前要利用一个命令打开服务器的回显功能,这一命令是( )D (A) set server on (B) set serverecho on (C) set servershow on (D) set serveroutput on (E) set serverdisplay on 8

将SQL*PLUS的显示结果输出到d:\\data1.txt文件中的命令是( )E (A) write to d:\\data1.txt (B) output to d:\\data1.txt (C) spool to d:\\data1.txt (D) spool on d:\\data1.txt (E) spool d:\\data1.txt 9

在SQL*PLUS中,显示执行时长的命令是( )B (A) set time on (B) set timing on (C) set long

(D) set timelong on (E) set sqlprompt 10

在SQL*PLUS中执行刚输入的一条命令用( )A (A) 正斜杠(/) (B) 反斜杠(\\) (C) 感叹号(!) (D) 句号(.)

(E) 以上所述都不正确 11

在SQL*PLUS版本9中,可以通过以下哪条命令更改当前的用户口令( )B (A) pass (B) passw (C) passwd (D) pass word

(E) 以上所述都不正确 12

在SQL*PLUS中显示当前用户的命令是( )C (A) show account (B) show accountname (C) show user (D) show username (E) 以上所述都不正确 13

在SQL*PLUS中显示数据库例程的内存分配情况,可用命令( )D (A) show all (B) show mem (C) show memory (D) show sga (E) show rel 14

假定某非本机数据库的全局数据库名为ORCL.COM,数据库实例的SID为ORCL, 定义的这个数据库的连接串为ORCLDB,数据库的用户名为scott,口令为tiger.那么以下哪个命令可以登录这个数据库( )D (A) sqlplus scott/tiger

(B) sqlplus scott/tiger@ORCL.COM (C) sqlplus scott/tiger@ORCL (D) sqlplus scott/tiger@ORCLDB (E) 以上所述都不正确 15

如何设置SQL*PLUS操作界面的行宽可以容纳1000个字符( )B (A) set long 1000 (B) set line 1000

(C) set numformat 1000 (D) set page 1000 (E) set size 1000 16

当用SQL*PLUS已经登录到某一数据库,此时想登录到另一数据库,应该用命令( )A

(A) CONN (B) DISC (C) GOTO (D) LOGIN (E) LOGON 17

以下哪个命令是DDL命令( )A (A) CREATE (B) INSERT (C) COMMIT (D) SELECT

(E) 以上所述都不正确 18

第一步执行了DELETE命令,删除了某表中的一条记录.第二步执行了COMMIT命令.

最后又执行了ROLLBACK命令.请问以下叙述正确的是( )B (A) 被删除的记录又被恢复回来,仍然存放在数据库的表中 (B) 被删除的记录彻底从数据库中被删除掉了

(C) 被删除的记录只是当前用户看不到了,而其它用户还能看到 (D) 被删除的记录当前用户可以看到,而其它用户却看不到了 (E) 以上所述都不正确 19

第一步用DELETE命令删除了表A中的数据(但并没有提交),第二步成功创建了一个表B,

第三步执行了一个ROLLBACK回滚操作.请问以下叙述正确的是( )D

(A) 表A中的数据被恢复回来,创建的表B被从数据库中被删除,恢复为未建表之前的状态

(B) 表A中的数据被恢复回来,表B被创建在数据库中.

(C) 表A中的数据被彻底从数据库中删除,但表B被从数据库中被删除,恢复为未建表之前的状态

(D) 表A中的数据被彻底从数据库中删除,表B被创建在数据库中. (E) 以上所述都不正确 20

第一步用DELETE命令删除了表A中的数据(但并没有提交),

第二步试图创建了一个表B,但由于权限不足,表B并没有创建成功. 第三步执行了一个ROLLBACK回滚操作.请问以下叙述正确的是( )B (A) 表A中的数据被恢复回来

(B) 表A中的数据被彻底从数据库中删除 (C) 表A中的数据被移至一个临时的表中 (D) 表A中的数据将处于一个不确定的状态

(E) 以上所述都不正确 21

某个表的创建语句如下: CREATE TABLE USER_TAB01 (COL1, COL2, COL3) TABLESPACE USER01

STORAGE(INITIAL 64K NEXT 128K PCTINCREASE 100);

ORACLE为该表的数据段分配的前3个区的大小依次为多大?( )D (A) 64KB, 128KB, 128KB (B) 64KB, 128KB, 192KB (C) 64KB, 128KB, 64KB (D) 64KB, 128KB, 256KB (E) 64KB, 128KB, 100KB 22

下面哪项信息不保存在控制文件中( )B (A) 当前的重做日志序列号 (B) 数据库的名称

(C) 初始化参数文件的位置 (D) 数据文件和名称和位置 (E) 重做日志文件的名称和位置 23

下列哪一个后台进程和对应的数据库组件能够保证即使用户对数据库所做的修改没有写入数据文件,

也不会发生修改内容丢失的情况( )B (A) DBWn与数据库缓冲区 (B) LGWR与重做日志文件 (C) CKPT与控制文件 (D) ARCn与归档日志文件 24

数据字典在SGA中的哪一个组件中进行缓存( )B (A) DATABASE BUFFER

(B) DATA DICTIONARY BUFFER (C) LIBRARY BUFFER (D) LARGE POOL

(E) REDO LOG BUFFER 25

解析后的SQL语句在SGA中的哪一个组件中进行缓存( )C (A) DATABASE BUFFER

(B) DATA DICTIONARY BUFFER

(C) LIBRARY BUFFER (D) LARGE POOL

(E) REDO LOG BUFFER 26

假定表A中有十万条记录,要删除表中的所有数据,但仍要保留表的结构,请问用以下哪个命令效率最高( )D (A) delete from a; (B) drop table a; (C) trunc table a; (D) truncate table a; (E) 以上所述都不正确 27

若想要修改一个表的结构,应该用以下哪个命令( )A (A) ALTER TABLE (B) DEFINE TABLE (C) MODIFY TABLE (D) REBUILD TABLE (E) REVISE TABLE 28

以下对于事务的叙述,比较全面的是( )E

(A) 事务中的操作是一个整体,要成功都成功,要失败都失败 (B) 事务可以把所操作的数据库由一个状态转变到另一个状态 (C) 事务在提交之前,其它事务看不到它对数据库的影响 (D) 事务提交后,其结果将在数据库中得以体现 (E) 以上所述都是正确的 29

ORACLE9i数据库服务器不能在下列哪个OS平台上安装运行( )C (A) WindowsNT (B) Windows2000 (C) Windows98 (D) SCO UNIX

(E) Redhat Linux 30

列出EMP表中,从事每个工种(JOB)的员工人数( )D (A) select job from emp;

(B) select job,count(*) from emp;

(C) select distinct job,count(*) from emp; (D) select job,count(*) from emp group by job; (E) select job,sum(empno) from emp group by job;

31

列出JONES的所有下属员工,但不包括JONES本人( )B

(A) select ename from emp connect by prior empno=mgr start with ename='JONES';

(B) select ename from emp where ename<>'JONES' connect by prior empno=mgr start with ename='JONES';

(C) select ename from emp where ename='JONES' connect by prior empno=mgr start with ename='JONES';

(D) select ename from emp where ename='JONES' connect by prior empno=mgr start with ename<>'JONES'; 32

列出KING(公司总裁)的所有下属之间的层次关系, 但不要显示出JONES及其所有下属( )A

(A) select level,ename,empno,mgr from emp connect by prior empno=mgr and ename<>'JONES' start with ename ='KING'

(B) select level,ename,empno,mgr from emp connect by prior empno=mgr and ename='JONES' start with ename ='KING'

(C) select level,ename,empno,mgr from emp connect by prior empno=mgr and ename<>'JONES' start with ename <>'KING'

(D) select level,ename,empno,mgr from emp connect by prior empno=mgr and ename='JONES' start with ename <>'KING' 33

求emp表中销售人员的最高和最低工资( )C (A) select max(sal),min(sal) from emp;

(B) select deptno,max(sal),min(sal) from emp group by deptno;

(C) select max(sal),min(sal) from emp where job='SALES';

(D) select deptno,max(sal),min(sal) from emp where job='SALES' group by job;

34

求最高工资大于10000的部门( )B

(A) select deptno,min(sal) from emp group by deptno having count min(sal)<1000; (B) select deptno,min(sal) from emp group by deptno having count max(sal)>1000; (C) select deptno,min(sal) from emp group by deptno having count max(sal)<1000; (D) select deptno,min(sal) from emp group by deptno having count min(sal)>1000; 35

怎样取出在集合A中,但却不在集合B中的数据( )A (A) A MIUS B (B) B MINUS A (C) A INTERSECT B (D) B INTERSECT A 36

怎样取出在集合A中,又在集合B中的数据( )C (A) A UNION B (B) A UNION ALL B (C) A INTERSECT B (D) A MIUS B 37

列出每个员工及其直属领导的的名字( )B (A) SELECT ENAME FROM EMP b, EMP a WHERE b.MGR=a.EMPNO; (B) SELECT b.ENAME, a.ENAME FROM EMP b, EMP a WHERE b.MGR=a.EMPNO; (C) SELECT b.ENAME, a.ENAME FROM EMP b, EMP a

WHERE b.MGR IN a.EMPNO; (D) SELECT b.ENAME, a.ENAME FROM EMP b, EMP a

WHERE b.MGR BETWEEN a.EMPNO; 38

列出所有部门的职工人数(包括没有职工的部门) ( )B

(A) select dept.deptno,dname,count(emp.empno) from emp,dept where emp.deptno=dept.deptno group by dept.deptno,dname;

(B) select dept.deptno,dname,count(emp.empno) from emp,dept where emp.deptno(+)=dept.deptno group by dept.deptno,dname;

(C) select dept.deptno,dname,count(emp.empno) from emp,dept where emp.deptno=dept.deptno(+) group by dept.deptno,dname;

(D) select dept.deptno,dname,count(emp.empno) from emp,dept where emp.deptno(+)=dept.deptno(+) group by dept.deptno,dname; 39

列出没有职工的部门( )A

(A) select dept.deptno from emp,dept where emp.deptno(+)=dept.deptno and emp.deptno is null;

(B) select dept.deptno from emp,dept where emp.deptno(+)=dept.deptno and dept.deptno is null;

(C) select dept.deptno from emp,dept where emp.deptno(+)=dept.deptno and emp.deptno=null;

(D) select dept.deptno from emp,dept where emp.deptno=dept.deptno(+) and dept.deptno is null; 40

查找出SCOTT所在部门的所有职工( )D

(A) select count(*) from emp where deptno= (select deptno from emp where ename='SCOTT'); (B) select sum(*) from emp where deptno= (select deptno from emp where ename='SCOTT'); (C) select * from emp where empno= (select empno from emp where ename='SCOTT'); (D) select * from emp where deptno= (select deptno from emp where ename='SCOTT'); 41

查询EMP表中的数据并且显示出行号(从1开始) ( )C (A) select rowid,a.* from emp a; (B) select level,a.* from emp a; (C) select rownum,a.* from emp a;

(D) select sequence,a.* from emp a; 42

查询出当前的数据库系统时间,精确到秒( )B

(A) select to_date(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; (B) select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; (C) select date(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; (D) select chr(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; 43

查询出所有名字以'S'开始的员工( )C

(A) select * from emp where ename in 'S%'; (B) select * from emp where ename='S%';

(C) select * from emp where ename like 'S%'; (D) select * from emp where ename like 'S_'; 44

取出工资在2000到3000元(包括上下限)之间的员工( )D (A) select * from emp wher sal in (2000,3000); (B) select * from emp wher sal like (2000,3000); (C) select * from emp wher sal = (2000,3000);

(D) select * from emp wher sal between 2000 and 3000; 45

查询出EMP表中COMM字段为空的记录( )D (A) select * from emp where comm=''; (B) select * from emp where comm=null; (C) select * from emp where nvl(comm)=0; (D) select * from emp where comm is null; (E) select * from emp where nvl(comm,0)=0; 46

查询出EMP表中1982年及以后入职的员工信息(注:字段hiredate为入职日期,数据类型为DATE型) D

(A) select * from emp where hiredate>='19820101';

(B) select * from emp where hiredate>=to_char('19820101','YYYYMMDD'); (C) select * from emp where to_date(hiredate,'YYYYMMDD')>='19820101'; (D) select * from emp where to_char(hiredate,'YYYYMMDD')>='19820101'; 47

如何显示今天是星期几(周一到周日,分别用1~7表示) ( )D (A) select to_char(sysdate,'D') from dual; (B) select to_char(sysdate,'W') from dual;

(E) SUBSTR 74

对数值型变量V_NUM,进行四舍五入,保留小数点后两位,以下操作正确的是( )D (A) SUBSTR(V_NUM,1,2) (B) TRUNC(V_NUM,2) (C) TRUNC(V_NUM,-2) (D) ROUND(V_NUM,2) (E) ROUND(V_NUM,-2) 75

取大于或等于变量V_NUM的最小整数,应该以下哪项操作( )A (A) CEIL(V_NUM) (B) FLOOR(V_NUM) (C) TRUNC(V_NUM) (D) ROUND(V_NUM) 76

取小于或等于变量V_NUM的最大整数,应该用以下哪项操作( )B (A) CEIL(V_NUM) (B) FLOOR(V_NUM) (C) TRUNC(V_NUM) (D) ROUND(V_NUM) 77

对于雇员表(EMP)中的员工薪水(SAL)进行分级,3000元以上的为A级,2000元以上到3000元为B级,2000元及以下为C级 以下哪此操作能实现以上要求( )C

(A) select sal,decode(sal>3000,'A',sal>2000,'B','C') grade from emp; (B) select sal,decode(sal,3000,'A',2000,'B','C') grade from emp;

(C) select sal,(case when sal>3000 then 'A' when sal>2000 then 'B' else 'C' end) grade from emp;

(D) select sal,(if sal>3000 then 'A' elsif sal>2000 then 'B' else 'C' end if) grade from emp; 78

列出薪水高于所在部门平均工资的员工信息( )B

(A) select deptno,ename,sal from emp a where sal>(select avg(a.sal) from emp where deptno=a.deptno);

(B) select deptno,ename,sal from emp a where sal>(select avg(sal) from emp where deptno=a.deptno);

(C) select a.deptno,a.ename,a.sal from emp a,emp b where a.deptno=b.deptno and a.sal>avg(b.sal);

(D) select a.deptno,a.ename,a.sal from emp a,emp b where a.deptno=b.deptno and b.sal>avg(a.sal); 79

在PL/SQL中定义一个名为v_name长度为60个字符的变长字符串类型的变量,以下正确的是( )C (A) v_name char(60); (B) v_name string(60); (C) v_name varchar2(60); (D) v_name varchar2(61); 80

在PL/SQL中预定义了所要查询的数据没有找到例外,它是( )C (A) NO DATA FOUND (B) DATA_NOT_FOUND (C) NO_DATA_FOUND (D) DATA_NO_FOUND 81

在PL/SQL中定义一个可以存放雇员表(EMP)的员工名称(ENAME)的PL/SQL表类型,应该( )C

(A) type array arr_type[emp.ename%type] index by binary_integer; (B) type table arr_type[emp.ename%type] index by binary_integer;

(C) type arr_type is table of emp.ename%type index by binary_integer; (D) type arr_type is pl_sql table of emp.ename%type index by binary_integer; 82

假定已经定义了一个名为arr_type的PL/SQL表类型,那么怎样实例化一个arr_type类型的变量( )A (A) v_arr arr_type; (B) v_arr is arr_type; (C) v_arr of arr_type; (D) v_arr arr_type%type; 83

对于一个名为v_arr的类型为PL/SQL表类型的变量,以下对它进行引用形式正确的是( )B

(A) v_arr[1] (B) v_arr(1) (C) v_arr<1> (D) v_arr{1} 84

下列关于PL/SQL的说法正确的是( )B

(A) PL/SQL是应用于各种数据库上的通用语言 (B) PL/SQL是过程化的SQL语言

(C) PL/SQL是只能在SQL*PLUS中运行

(D) 在PL/SQL可以直接执行所有的SQL操作 85

关于PL/SQL块的说法正确的是( )B

(A) 执行部分是必须的,因此声明部分也可以放到执行部分中来 (B) PL/SQL块在执行时,是统一传输给数据库服务器进行执行的 (C) 在PL/SQL中SELECT的语句的用法与在SQL*PLUS中完全一致 (D) 匿名PL/SQL块的执行效率要高于命名PL/SQL块 86

如何将变量v_row定义为emp表的记录类型( )D (A) v_row emp%type; (B) v_row emp%record; (C) v_row emp%tabletype; (D) v_row emp%rowtype; 87

以下关于数据库过程和函数叙述正确的是( )A

(A) 过程和函数都是命名的PL/SQL块,但执行效率要比普通PL/SQL块高 (B) 过程和函数都是命名的子程序,每次执行前由数据库进行编译 (C) 过程是没有返回参数的,而函数是有返回参数的 (D) 过程不带输入参数,而函数是要带输入参数的 88

以下关于数据库包的叙述正确是的( )B

(A) 包是由包头和包体组成的,在定义包头时,必须也要同时定义好包体 (B) 包是由包头和包体组成的,包头和包体是可以分别创建的

(C) 包是由包头和包体组成的,包头和包体可以写在一起,也可以分别定义 (D) 包是由包头和包体组成的,包头是包体中所有变量的定义区,而包体则只是执行代码部分 89

以下关于数据库例程(INSTANCE)和数据库关系的叙述正确是的( )C (A) 一个例程只能打开一个数据库,一个数据库也只能由一个例程打开 (B) 一个例程可以打开多个数据库,但一个数据库可以由多个例程打开 (C) 一个例程只能打开一个数据库,但一个数据库可以由多个例程打开 (D) 一个例程可以打开多个数据库,一个数据库也只能由一个例程打开 90

以下关于SGA和PGA的叙述正确的是( )C

(A) PGA是SGA的一部分,SGA是共享的,但分配后的PGA是不共享的 (B) PGA是客户机内存的一部分,而SGA是服务器内存的一部分

(C) PGA和SGA都是服务器内存的一部分,前者是私有的,后者是共享的 (D) PGA与SGA的总和等于服务器主机内存的总和 91

在数据库启动后,用户权限、数据库对象的定义等信息,被存放在下列哪个区域( )B

(A) 库缓冲区

(B) 数据字典缓冲区 (C) 数据缓冲区 (D) 重做日志缓冲区 92

以下关于数据库后台服务进程叙述正确是的() D

(A) DBWn负责从数据文件中读取数据到内存,并且负责将数据从内存回写到数据文件中

(B) LGWR负责从重做日志文件中读取信息到内存,并且负责将日志信息从内存回写到重做日志文件中

(C) SMON负责定时启动数据库并做相应的恢复和清理工作

(D) CKPT负责向数据库发出检查点,用于同步数据库的所有数据文件、控制文件和重做日志文件

(E) PMON负责定时回收所有进程所占用的数据库资源 93

SQL语句的编译和执行是在SGA的哪一部分中进行的( ) (A) Database Buffer Cache (B) Redo Log Buffer (C) Shared Pool (D) Large Pool (E) Java Pool 94

当对数据库进程调整时,要求除DBA用户外的其它用户都不能访问数据库,这时可以用以下哪种数据库启动方式( ) (A) STARTUP NOMOUNT (B) STARTUP MOUNT (C) STARTUP RESTRICT (D) STARTUP DBA (E) STARTUP FORCE 95

在关闭数据库时,要求当前尚未处理完成的事务立即停止处理,未完成事务进行回滚.可采用下列哪种方式( )

(A) SHUTDOWN

(B) SHUTDOWN ABORT (C) SHUTDOWN IMMEDIATE (D) SHUTDOWN NORMAL

(E) SHUTDOWN TRANSACTIONAL 96

以下关于SQL的说法正确的是( )

(A) SQL是一种过程化的语言,可实现各种流程控制 (B) SQL是ORACLE所独有数据库操作语言 (C) SQL是一种数据库的驱动程序

(D) SQL是一种非过程化的语言,也是数据库的工业标准 (E) SQL是一种结构化和过程化相结构的语言 97

CREATE,DROP,ALTER等命令属于下列哪类命令( ) (A) DCL (B) DDL (C) DML (D) DQL

(E) 以上所述都不正确 98

INSERT,UPDATE,DELETE等命令属于下列哪类命令( ) (A) DCL (B) DDL (C) DML (D) DQL

(E) 以上所述都不正确 99

下列哪类命令在未提交前可以通过ROLLBACK命令进行回退( ) (A) DCL (B) DDL (C) DML (D) DQL

(E) 以上所述都不正确 100

下列关于表和视图的说法正确的是( ) (A) 每个视图对应一个表 (B) 视图是表的一个镜像备份

(C) 对所有视图也可象表一样执行UPDATE操作 (D) 视图的数据全部在表中

(E) 视图是表结构的一个描述 101

有如下三步操作,并且均成功执行,请选择结果( ) delete from emp;

alter table emp add(addr varchar2(40)); rollback;

(A) emp表中数据处于回滚段中 (B) emp表中的数据被永久删除 (C) emp表中的数据没有变化

(D) 原来的emp表中的数据被添加到新emp表中 (E) 以上所述都不正确 102

下列哪个操作可以将表中的数据删除,并且不需要回滚 删除后回收其所占有的空间,但表定义保留( ) (A) DELETE FROM EMP; (B) TUNCATE TABLE EMP;

(C) TUNCATE TABLE EMP REUSE STORAGE; (D) DROP TABLE EMP; (E) 以上所述都不正确 103

下面哪一个不是数据库物理存储结构中的对象( ) (A) 数据文件

(B) 重做日志文件 (C) 控制文件 (D) 口令文件 104

数据库必须拥有至少几个重做日志组( ) (A) 1 (B) 2 (C) 3 (D) 4

(E) 由初始参数指定 105

表空间默认的PCTINCREASE参数值为下列哪一个( ) (A) 0 (B) 10 (C) 20 (D) 50 (E) 100

106

回滚段的PCTINCREASE参数值为下列哪一个( ) (A) 0 (B) 10 (C) 20 (D) 50 (E) 100 107

ORACLE提供了嵌入式SQL,以下对嵌入式SQL描述正确的是( )

(A) 将SQL语句嵌入C中就是PRO*C,将PRO*C源程序直接交给C编译器进行编译和链接就可生成可执行文件

(B) 将SQL语句嵌入C中称为PRO*C,将SQL语句嵌入JAVA中称为PRO*JAVA (C) PRO*C源程序需要先由预编译器处理后,才能生成C程序源文件 (D) PRO*C就是在SQL代码中加入了C语言的控制流程 (E) ORACLE的同一个预编译器可以处理各种PRO源程序 108

以下ORACLE认证的级别由低到高排列正确的是( ) (A) OCA->OCP->OCM (B) OCM->OCP->OCA (C) OCP->OCA->OCM (D) OCA->OCM->OCP (E) OCP->OCM->OCA 109

Which one of the following memory areas is NOT part of the SGA? (A) Database Buffer Cache (B) PGA

(C) Redo Log Buffer (D) Shared Pool (E) Java Pool 110

Which one of the following statements is true?

(A) An Oracle server is a collection of data consisting of three file types. (B) A user establishes a connection with the database by staring an Oracle instance.

(C) A connection is a communication pathway between the Oracle server and the Orale instance.

(D) A session starts when a user is validated by the Oracle server.

111

Which one of the following statements are true about the Shared Pool? (A) The Shared Pool consists of the Library Cache,Data Dictionary Cache,Shared SQL area,Java Pool,and Large Pool.

(B) The Shared Pool is used to store the most recently executed SQL statements.

(C) The Shared Pool is used for an object that can be shared globally. (D) The Library Cache consists of the Shared SQL and Shared PL/SQL areas. 112

Which one of the following memory areas is used to cache the data dictionary imformation? (A) Database Buffer Cache (B) PGA

(C) Redo Log Buffer (D) Shared Pool (E) Large Pool 113

ORACLE数据库启动后,有哪五个必要的后台进程(mandatory background processes)

(A) CKPT DBWn LGWR PMON SMON (B) ARCn CKPT DBWn LGWR SMON (C) CJQ0 CKPT DBWn LGWR SMON (D) DBWn LGWR PMON RECO SMON (E) CKPT DBWn LMON PMON SMON 114

Database Writer进程的作用是:

(A) Assists with writing to data file headers (B) Is responsible for instance recovery (C) Cleans up after failed prosesses

(D) Records database changes for recovery purposes (E) Writes dirty buffers to the data files 115

LGWR进程的作用是:

(A) Assists with writing to data file headers (B) Is responsible for instance recovery (C) Cleans up after failed prosesses

(D) Records database changes for recovery purposes (E) Writes dirty buffers to the data files 116

PMON进程的作用是:

(A) Assists with writing to data file headers (B) Is responsible for instance recovery (C) Cleans up after failed prosesses

(D) Records database changes for recovery purposes (E) Writes dirty buffers to the data files 117

SMON进程的作用是:

(A) Assists with writing to data file headers (B) Is responsible for instance recovery (C) Cleans up after failed prosesses

(D) Records database changes for recovery purposes (E) Writes dirty buffers to the data files 118

CKPT进程的作用是:

(A) Assists with writing to data file headers (B) Is responsible for instance recovery (C) Cleans up after failed prosesses

(D) Records database changes for recovery purposes (E) Writes dirty buffers to the data files 119

Oracle Database包括哪三类文件?

(A) control files, data files, redo log files

(B) parameter file, backup files, archived redo log files (C) password fils, alert log files, trace files

(D) alert log files, background trace files, user trace files, (E) data files, redo log files, archived redo log files 120

Oracle Server由哪两个部分组成? (A) INSTANCE和DATABASE (B) SGA和PGA

(C) SGA和DATABASE

(D) Server process和Background process (E) SGA和Background process 121

Oracle Instance由哪两个部分组成? (A) Shared pool和Server process (B) Shared pool和Background process (C) SGA和user process

(D) PGA和user process

(E) SGA和Background process 122

ORACLE初始化参数文件的默认路径是: (A) 对于UNIX,在$ORACLE_HOME/dbs

(B) 对于UNIX,在$ORACLE_HOME/dbs/admin (C) 对于Linux,在%ORACLE_HOME%\\database (D) 对于Windows,在%ORACLE_HOME%\\dbs

(E) 对于Windows,在%ORACLE_HOME%\\database\\admin 123

数据字典信息被存放在哪类文件中 (A) 数据文件 (B) 控制文件

(C) 重做日志文件 (D) 归档日志文件 (E) 初始化参考文件 124

在SQL语句执行前的解析阶段,要判断其中涉及的表名和列名是否合法,判断所依据的信息存放在 (A) PGA

(B) SHARED POOL

(C) DATABASE BUFFER CACHE (D) REDO LOG BUFFER CACHE (E) LARGE POOL 125

当执行COMMIT语句时,会在哪类文件上发生I/O操作 (A) 数据文件 (B) 控制文件

(C) 重做日志文件 (D) 归档日志文件 (E) 警告文件 126

当CKPT进程工作时,会对哪类文件执行I/O操作 (A) 数据文件 (B) 控制文件

(C) 重做日志文件 (D) 归档日志文件 (E) 警告文件

127

回滚段存放在哪类文件中 (A) 数据文件 (B) 控制文件

(C) 重做日志文件 (D) 归档日志文件 (E) 警告文件 128

假设用户正在执行UPDATE操作,此时用以下哪种方法可以关闭数据库 (A) SHUTDOWN或SHUTDOWN IMMEDIATE或SHUTDOWN ABORT

(B) SHUTDOWN或SHUTDOWN NORMAL或SHUTDOWN TRANSACTIONAL (C) SHUTDOWN NORMAL或SHUTDOWN ABORT或SHUTDOWN IMMEDIATE (D) SHUTDOWN或SHUTDOWN IMMEDIATE或SHUTDOWN TRANSACTIONAL

(E) SHUTDOWN ABORT或SHUTDOWN IMMEDIATE或SHUTDOWN TRANSACTIONAL 129

以下哪类表空间中不能建立数据对象(表,索引) (A) SYSTEM表空间和非SYSTEM表空间 (B) UNDO表空间和Temporary表空间 (C) SYSTEM表空间和Temporary表空间 (D) SYSTEM表空间和UNDO表空间

(E) SYSTEM表空间,UNDO表空间和Temporary表空间 130

以下关于ORACLE物理和逻辑存储结构的说法正确的是

(A) 表空间构成数据库,一个表空间可以同时为多个数据库所拥有

(B) 数据文件是构成表空间的物理基础,一个数据文件可以分属于不同的表空间 (C) 数据块是最小的存储单元,一个数据块对应一个操作系统块 (D) 区是由连续的数据块构成的,它是构成段的基础

(E) 区是不能跨数据文件的,由区构成成的段也不能跨数据文件 131

假定以手动方式管理数据块,PCTFREE=20,PCTUSED=40 以下关于数据块的说法正确的是

(A) 块将一直保留20%的可用空间,以防数据存储过满期 (B) 向块内插入数据,不能超过块可用空间的40%

(C) 对块内的数据删除,使块的使用率下降,当块的已用空间降到80%以下,则又可以向块中插入数据了

(D) 对块内的数据删除,使块的使用率下降,但使用率在40%到80%之间时,是不能再向块中插入数据的

(E) 当块的已用空间超过到80%,则不能再向块中插入数据,也不能执行使块的已用空间超过80%的UPDATE操作

132

Which describes the default behavior when you create a table? (A) The table is accessible to all users (B) Tables are created in the public schema (C) Tables are created in your schema (D) Tables are created in the DBA schema

(E) You must specify the schema when the table is created 133

Which SQL statement returns a numeric value?

(A) SELECT ADD_MONTHS(MAX(hireDate), 6) FROM EMP; (B) SELECT ROUND(hiredate) FROM EMP; (C) SELECT sysdate-hiredate FROM EMP;

(D) SELECT TO_NUMBER(hiredate + 7)FROM EMP; 134

You need to write a SQL statement that returns employee name, salary, department ID,

and maximum salary earned in the department of the employee for all employees who

earn less than the maximum salary in their department. Which statement accomplishes this task?

(A) SELECT a.ename, a.sal, b.deptno, MAX(sal) FROM emp a, dept b

WHERE a.deptno = b.deptno AND a.sal < MAX(sal) GROUP BY b.deptno; (B) SELECT a.ename, a.sal, a.deptno, b.maxsal FROM emp a, (SELECT deptno, MAX(sal) maxsal FROM emp GROUP BY deptno) b WHERE a.deptno = b.deptno AND a.sal < b.maxsal;

(C) SELECT a.ename, a.sal, a.deptno, b.maxsal FROM emp a WHERE a.sal < (SELECT MAX(sal) maxsal FROM emp b GROUP BY deptno);

(D) SELECT ename, sal, deptno, maxsal FROM emp a, (SELECT deptno, MAX(sal) maxsal FROM emp GROUP BY deptno) WHERE a.sal < maxsal; 135

A data manipulation language statement () (A) completes a transaction on a table

(B) modifies the structure and data in a table

(C) modifies the data but not the structure of a table (D) modifies the structure but not the data of a table 136

对于以下SQL语句说法正确的是 SELECT ename FROM emp

WHERE sal IN (SELECT MAX(sal) FROM emp GROUP BY deptno);

(A) 这个语句是符合语法的

(B) 这个语句是不能执行的,因为缺少HAVING子句

(C) 这个语句是不能执行的,因为分组的条件列不在SELECT列表中

(D) 这个语句是不能执行的,因为GROUP BY子句应该在主查询中,而不是在子查询中

(E) 在主查询的WHERE条件中,不应该用IN,而应该用等号 137

You want to create a report displaying employee names, department names. Which query should you use to create an equi-join? (A) SELECT ename, dname FROM emp, dept;

(B) SELECT emp.ename, dept.dname FROM emp e, dept d WHERE e.deptno=d.deptno;

(C) SELECT e.ename, d.dname FROM emp e, dept d;

(D) SELECT e.ename, d.dname FROM emp e, dept d WHERE e.deptno=d.deptno; (E) SELECT emp.ename, dept.dname FROM emp e, dept d WHERE emp.deptno=dept.deptno; 138

对于以下SQL语句说法正确的是

SELECT * FROM EMP ORDER BY sal, ename; (A) The results are not sorted

(B) The results are sorted numerically (C) The results are sorted alphabetically

(D) The results are sorted numerically and then alphabetically (E) The results are sorted alphabetically and then numerically 139

针对以下两个SQL语句,哪个说法是正确的

SELECT ename, sal, hiredate FROM EMP ORDER BY sal DESC; SELECT ename, sal, hiredate FROM EMP ORDER BY 2 DESC; (A) 两个语句执行的结果完全相同 (B) 第二个语句将返回语法错误

(C) 两个语句无需加DESC,因为返回结果默认就符合这个要求 (D) 第二个语句将sal字段加一个别名就正确了 (E) 两个语句在语法上都有问题 140

Which two statements about packages are true? (A) Packages can be nested.

(B) You can pass parameters to packages.

(C) A package is loaded into memory each time it is invoked. (D) The contents of packages can be shared by many applications

141

有如下函数:

CREATE OR REPLACE FUNCTION GET_AVG_SALARY (V_DEPTNO in NUMBER) RETURN NUMBER IS

V_AVG NUMBER; BEGIN

SELECT AVG(SAL) INTO V_AVG FROM EMP

WHERE DEPTNO = V_DEPTNO; RETURN (V_AVG); END;

以下哪个语句可以在SQL*PLUS环境中成功调用这个函数 (A) SELECT GET_AVG_SALARY(DEPTNO) FROM DEPT; (B) EXECUTE GET_AVG_SALARY(20); (C) GET_AVG_SALARY('20'); (D) GET_AVG_SALARY(20);

(E) START GET_AVG_SALARY(20) 142

以下关于包(Package)的说法,正确的是

(A) 包是由包头(Specification)和包体(Package Body)两部分组成的, 在包体中引用的变量均要在包头部分进行定义.

(B) 在编译包头时,包体也同时被自动编译,但是编译包体时,包头不会被编译 (C) 包头是不能脱离包体单独存在的,但是可以对包头单独进行编译 (D) 包头和包体都是可以单独存在的,也是可以单独进行编译的 (E) 删除包头,包体也将被自动删除 143

在PL/SQL中用以下哪个运算符或函数,可以将两个字符串连接起来 (A) strcat (B) + (C) ||

(D) stradd (E) connect 144

在以下PL/SQL循环语句的括号位置应该填写 for i in 1 ( ) 10 loop (A) TO (B) -> (C) ..

(D) INC (E) ++ 145

emp表是雇员信息表,sal字段存放是的雇员的月薪 以下哪个变量可以存放sal类型的值 (A) v_sal emp%rowtype; (B) v_sal emp.sal%type; (C) v_sal emp.sal.%type; (D) v_sal %type(emp.sal); (E) v_sal (emp.sal)%type; 146

emp表是雇员信息表,以下哪个变量可以存放emp表中的一条记录 (A) v_record emp%type;

(B) v_record emp%recordtype; (C) v_record emp%record_type; (D) v_record emp%rowtype; (E) v_record emp%row_type; 147

对于ORACLE PL/SQL标识符(Identifier)的有效长度是 (A) 16位 (B) 18位 (C) 24位 (D) 30位 (E) 32位 148

以下对PL/SQL变量的定义,正确的是

(A) v_hiredate DATE:=TO_DATE(SYSDATE); (B) v_deptno NUMBER(2) NOT NULL:=10; (C) v_location VARCHAR2(13) := \(D) c_comm CONSTANT NUMBER; (E) v_count PLS_INTEGER(4); 149

以下关于PL/SQL变量类型的说法正确的是

(A) CHAR类型的变量比VARCHAR2类型的变量更省空间

(B) 对VARCHAR2类型变量的访问效率要高于CHAR类型的变量 (C) BOOLEAN变量的值只有两种:TRUE和FALSE (D) DATE类型的变量取值可以精确毫秒

(E) PLS_INTEGER与BINARY_INTEGER类型变量取值范围相同

150

以下关于PL/SQL块的说法正确的是

(A) 匿名块(Anonymous Blocks)是在客户端解析后再送到服务器端执行的 (B) 子程序(Subprograms)是被命名的PL/SQL块,存储在数据库服务器端 (C) 匿名块比子程序执行效率要高

(D) 无论是匿名块还是子程序,其实都是PL/SQL块,在定义变量前都要以DECLARE关键字开始

(E) 过程(procedure)无返回值,而函数(function)是有返回值的 151

在PL/SQL环境中,以下说法正确的是 (A) 字符串是用单引号加以界定的 (B) 字符串是用双引号加以界定的 (C) 对于单行注释可以用双斜线//开始 (D) 多行注释是以大括号{}加以界定的 (E) 每条语句以句点.做为结束符 152

以下关于PL/SQL块的说法正确的是

(A) PL/SQL块是最小的程序单元,因此PL/SQL块是不能嵌套使用的

(B) 为了使变量的定义清楚明了,尽量在DECLARE部分进行定义,但是也可以在BEGIN和END之间的执行部分定义

(C) 异常处理是PL/SQL的一个特点,因此EXCEPTION部分是不可缺少的 (D) 在PL/SQL块中,SELECT查询语句的用法与SQL中的用法是完全相同的 (E) 在PL/SQL块中DECLARE和EXCEPTION部分都是可以缺省的,但BEGIN和END及其之间的部分是要有的 153

以下关于PL/SQL说法正确的是

(A) PL/SQL是对SQL标准的扩展,目前已经在ORACLE,DB2,SQL Server等主流数据库中得到很好的支持

(B) 对于运行在不同操作系统平台上的ORACLE数据库,即使是数据库版本一致,但也不能直接移植PL/SQL程序

(C) PL/SQL就是将过程化的流程控制语句嵌入到SQL命令中,从而实现对SQL执行过程的控制.

(D) PL/SQL代码中包括过程控制部分和非过程化的SQL部分,在执行时由SQL*PLUS负责解析出这两部分,并送到ORACLE服务器端执行.

(E) PL/SQL是对SQL的扩展,提高了性能和灵活性,但它只能在ORACLE数据库上得到支持 154

在SQL*PLUS环境中,若想通过执行PL/SQL代码来显示指定的字符串, 应该首先做哪项设置 (A) set echo on

(B) set output on

(C) set serveroutput on (D) set dbms_output on (E) set server_output on 155

在SQL*PLUS环境中,若想通过执行PL/SQL代码来显示指定的字符串, 以下哪个方法可行

(A) 用SQL*PLUS环境支持的SHOW命令 (B) 用DBMS_OUTPUT包的PUT_LINE过程 (C) 用PRINT命令来输出指定的字符串 (D) 用DISPLAY命令来输出指定的字符串 (E) 用DBMS_OUTPUT包的NEW_LINE过程 156

在PL/SQL环境中,若想定义一个变量v_name,要求与emp表中ename字段类型相同,正确的方法是

(A) v_name emp.ename%TYPE; (B) v_name emp%TYPE.ename; (C) v_name ename%TYPE IN emp; (D) v_name ename%TYPE OF em在p; (E) v_name %TYPE emp.ename; 157

Which background process updates the online redo log files with the redo log buffer entries when a COMMIT occurs in the database? (A) DBWn (B) LGWR (C) CKPT (D) CMMT (E) ARCn 158

Which view should a user query to display the columns associated with the constraints

on a table owned by the user? (A) USER_CONSTRAINTS (B) USER_OBJECTS (C) ALL_CONSTRAINTS (D) USER_CONS_COLUMNS (E) USER_COLUMNS 159

客户端用于网络连接的两个配置文件文件是

(A) TNSNAMES.ORA 和 SQLNET.ORA (B) TNSNAMES.ORA 和 LISTENER.ORA (C) TNSNAMES.ORA 和 INIT.ORA (D) SQLNET.ORA 和 LISTENER.ORA (E) INIT.ORA 和 LISTENER.ORA 160

如何强制执行日志切换

(A) ALTER SYSTEM CHECKPOINT;

(B) ALTER SYSTEM CHECKPOINT FORCE; (C) ALTER SYSTEM SWITCH LOGFILE;

(D) ALTER SYSTEM SWITCH LOGFILE FORCE; (E) ALTER DATABASE LOG SWITCH; 161

以下对于SQL比较运算符ANY和ALL的说法正确的是 (A) ANY 表示大于最大值 (C) ALL 表示大于最小值 (E) 以上说法都不正确 162

对于示例表EMP,字段EMPNO为雇员编号,字段MGR为雇员直属经理的编号 KING是最高领导,他的直属经理编号为空 以下哪个语句能查询出JONES及其所有下属

(A) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP CONNECT BY PRIOR EMPNO=MGR START WITH ENAME='JONES';

(B) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP CONNECT BY PRIOR MGR=EMPNO START WITH ENAME='JONES';

(C) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP CONNECT BY EMPNO=PRIOR MGR START WITH ENAME='JONES';

(D) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP CONNECT BY MGR=EMPNO START WITH ENAME='JONES'; 163

对于示例表EMP,字段EMPNO为雇员编号,字段MGR为雇员直属经理的编号 KING是最高领导,他的直属经理编号为空 以下哪个语句能查询出SMITH及其所有上司

(A) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP

CONNECT BY MGR=EMPNO START WITH ENAME='SMITH';

(B) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP CONNECT BY PRIOR EMPNO=MGR START WITH ENAME='SMITH';

(C) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP CONNECT BY MGR=PRIOR EMPNO START WITH ENAME='SMITH';

(D) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP CONNECT BY EMPNO=PRIOR MGR START WITH ENAME='SMITH'; 164

对于示例表EMP,字段EMPNO为雇员编号,字段MGR为雇员直属经理的编号 KING是最高领导,他的直属经理编号为空

以下哪个语句能查询出SMITH的所有上司(不包括SMITH本人) (A) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP WHERE ENAME<>'SMITH' CONNECT BY EMPNO=PRIOR MGR START WITH ENAME='SMITH';(B) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP CONNECT BY EMPNO=PRIOR MGR AND ENAME<>'SMITH' START WITH ENAME='SMITH';

(C) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP WHERE ENAME<>'SMITH' CONNECT BY PRIOR EMPNO=MGR START WITH ENAME='SMITH';

(D) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP CONNECT BY PRIOR EMPNO=MGR AND ENAME<>'SMITH' START WITH ENAME='SMITH'; 165

对于示例表EMP,字段EMPNO为雇员编号,字段MGR为雇员直属经理的编号 KING是最高领导,他的直属经理编号为空

以下哪个语句能查询出KING领导下的员工,但不显示SCOTT及其下属员工 (A) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP CONNECT BY EMPNO=PRIOR MGR AND ENAME<>'SCOTT' START WITH ENAME='KING';(B) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR

FROM EMP WHERE ENAME<>'SCOTT' CONNECT BY EMPNO=PRIOR MGR START WITH ENAME='KING';

(C) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP CONNECT BY PRIOR EMPNO=MGR AND ENAME<>'SCOTT' START WITH ENAME='KING';

(D) SELECT LEVEL,ENAME,DEPTNO,EMPNO,MGR FROM EMP WHERE ENAME<>'SCOTT' CONNECT BY PRIOR EMPNO=MGR START WITH ENAME='KING'; 166

对于示例表EMP和DEPT如何查询出没有雇员的部门名称 (A) SELECT DNAME FROM DEPT D,EMP E WHERE D.DEPTNO(+)=E.DEPTNO AND D.DEPTNO IS NULL; (B) SELECT DNAME FROM DEPT D,EMP E WHERE D.DEPTNO(+)=E.DEPTNO AND E.DEPTNO IS NULL; (C) SELECT DNAME FROM DEPT D,EMP E WHERE D.DEPTNO=E.DEPTNO(+) AND D.DEPTNO IS NULL; (D) SELECT DNAME FROM DEPT D,EMP E WHERE D.DEPTNO=E.DEPTNO(+) AND E.DEPTNO IS NULL;

(E) SELECT DNAME FROM DEPT D,EMP E WHERE D.DEPTNO<>E.DEPTNO(+) AND E.DEPTNO IS NULL; 167

查询出月薪高于所在部门平均月薪的雇员信息,以下正确的是 (A) SELECT ename,sal,deptno FROM EMP outer WHERE sal>(SELECT AVG(sal) FROM EMP inner WHERE deptno=inner.deptno);

(B) SELECT ename,sal,deptno FROM EMP outer WHERE sal>(SELECT AVG(sal) FROM EMP inner WHERE deptno=outer.deptno);

(C) SELECT ename,sal,deptno FROM EMP outer WHERE sal>(SELECT AVG(sal) FROM EMP inner WHERE deptno=deptno); (D) SELECT ename,sal,deptno FROM EMP outer WHERE sal>(SELECT AVG(sal) FROM EMP inner WHERE outer.deptno=outer.deptno); 168

要查询出每个雇员的名称及其所在部门的名称,以下哪个语句是错误的

(A) SELECT ename, dname FROM EMP NATURAL JOIN DEPT;

(B) SELECT ename, dname FROM EMP NATURAL CROSS JOIN DEPT; (C) SELECT ename, dname FROM EMP JOIN DEPT USING (deptno);

(D) SELECT ename, dname FROM EMP e,DEPT d WHERE e.deptno=d.deptno; (E) SELECT ename, dname FROM EMP e JOIN DEPT d ON (e.deptno=d.deptno); 169

要查询出所有部门的名称,以及部门中员工的名称,没有没工的部门名称也要查询出来

以下哪个语句是错误的

(A) select e.ename, d.dname from emp e right outer join dept d on (e.deptno=d.deptno);

(B) select e.ename, d.dname from emp e left outer join dept d on (e.deptno=d.deptno);

(C) select e.ename, d.dname from dept d left outer join emp e on (e.deptno=d.deptno);

(D) select e.ename, d.dname from emp e full outer join dept d on (e.deptno=d.deptno); 170

对于oracle数据库,设计用户表时,家庭住址字段最好采用下面的哪个数据类型进行存储 (A) CHAR (B) CHAR2 (C) VARCHAR (D) VARCHAR2 (E) LONG 171

以下的PL/SQL声明哪个是正确的? (A) v_id NUMBER(4);

(B) v_x, v_y, v_z VARCHAR2(10); (C) v_birthdate DATE NOT NULL; (D) v_in_stock BOOLEAN := 1; 172

The trigger heading:

CREATE OR REPLACE TRIGGER salary_check BEFORE UPDATE OF sal, job ON emp FOR EACH ROW

Under which condition does this trigger fire? (A) When a row is inserted into the EMP table

(B) When the value of the SAL or JOB column in a row is updated in the EMP table

(C) When any column other than the SAL and JOB columns in a row are updated in the EMP table

(D) Only when both values of the SAL and JOB columns in a row are updated together in the EMP table 173

What should you do after each fetch statement in the PL/SQL block? (A) Open the cursor (B) Close the cursor (C) Initialize the loop

(D) Test for the rows using the cursor attribute 174

You are a user of PROD database which contains over 1000 tables and you need to

determine the number of tables you can access. Which data dictionary view could you

query to display this information? (A) USER_OBJECTS (B) ALL_OBJECTS (C) DBA_SEGEMENTS (D) DBA_TABLES 175

Evaluate this PL/SQL block.

BEGIN

FOR i IN 1..10 LOOP

IF I=4 OR I=6 THEN null; ELSE

INSERT INTO test(result) VALUES (I); END IF; COMMIT; END LOOP; ROLL BACK; END.

How many values will be inserted into the TEST table (A) 0 (B) 4 (C) 6 (D) 8 (E) 10

Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql语句。

Sql*plus是一个最常用的工具,具有很强的功能,主要有: 1. 数据库的维护,如启动,关闭等,这一般在服务器上操作。 2. 执行sql语句执行pl/sql。 3. 执行sql脚本。 4. 数据的导出,报表。

5. 应用程序开发、测试sql/plsql。 6. 生成新的sql脚本。

7. 供应用程序调用,如安装程序中进行脚本的安装。 8. 用户管理及权限维护等。

下面就介绍一下一些常用的sql*plus命令: 1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name

我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 @与@@的区别是什么?

@等于start命令,用来运行一个sql脚本文件。

@命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件。

@@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中。

如:在c:\\temp目录下有文件start.sql和nest_start.sql,start.sql脚本文

件的内容为:

@@nest_start.sql - - 相当于@ c:\\temp\\nest_start.sql 则我们在sql*plus中,这样执行: SQL> @ c:\\temp\\start.sql 2. 对当前的输入进行编辑 SQL>edit

3. 重新运行上一次运行的sql语句 SQL>/

4. 将显示的内容输出到指定文件 SQL> SPOOL file_name

在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF

只有关闭spool输出,才会在输出文件中看到输出的内容。 6.显示一个表的结构 SQL> desc table_name 7. COL命令:

主要格式化列的显示形式。 该命令有许多选项,具体如下:

COL[UMN] [{ column|expr} [ option ...]] Option选项可以是如下的子句: ALI[AS] alias CLE[AR] FOLD_A[FTER]

FOLD_B[EFORE] FOR[MAT] format HEA[DING] text

JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} LIKE { expr|alias} NEWL[INE]

NEW_V[ALUE] variable NOPRI[NT]|PRI[NT] NUL[L] text

OLD_V[ALUE] variable ON|OFF

WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] 1). 改变缺省的列标题

COLUMN column_name HEADING column_heading For example:

Sql>select * from dept; DEPTNO DNAME LOC

---------- ---------------------------- --------- 10 ACCOUNTING NEW YORK sql>col LOC heading location sql>select * from dept; DEPTNO DNAME location

--------- ---------------------------- ----------- 10 ACCOUNTING NEW YORK

CMDS[EP] {;|c|ON|OFF} COLSEP {_|text}

COM[PATIBILITY]{V7|V8|NATIVE} CON[CAT] {.|c|ON|OFF} COPYC[OMMIT] {0|n} COPYTYPECHECK {ON|OFF} DEF[INE] {&|c|ON|OFF}

DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}] ECHO {ON|OFF}

EDITF[ILE] file_name[.ext] EMB[EDDED] {ON|OFF} ESC[APE] {\\|c|ON|OFF} FEED[BACK] {6|n|ON|OFF}

FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL} FLU[SH] {ON|OFF} HEA[DING] {ON|OFF} HEADS[EP] {||c|ON|OFF}

INSTANCE [instance_path|LOCAL] LIN[ESIZE] {80|n} LOBOF[FSET] {n|1} LOGSOURCE [pathname] LONG {80|n}

LONGC[HUNKSIZE] {80|n}

MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL

{ON|OFF}] [PRE[FORMAT] {ON|OFF}] NEWP[AGE] {1|n|NONE} NULL text

NUMF[ORMAT] format NUM[WIDTH] {10|n} PAGES[IZE] {24|n} PAU[SE] {ON|OFF|text} RECSEP {WR[APPED]|EA[CH]|OFF} RECSEPCHAR {_|c}

SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_ WRAPPED]|TRU[NCATED]}]

SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]} SHOW[MODE] {ON|OFF} SQLBL[ANKLINES] {ON|OFF}

SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]} SQLCO[NTINUE] {> |text} SQLN[UMBER] {ON|OFF} SQLPRE[FIX] {#|c} SQLP[ROMPT] {SQL>|text} SQLT[ERMINATOR] {;|c|ON|OFF} SUF[FIX] {SQL|text} TAB {ON|OFF} TERM[OUT] {ON|OFF} TI[ME] {ON|OFF}

TIMI[NG] {ON|OFF} TRIM[OUT] {ON|OFF} TRIMS[POOL] {ON|OFF} UND[ERLINE] {-|c|ON|OFF} VER[IFY] {ON|OFF} WRA[P] {ON|OFF}

1). 设置当前session是否对修改的数据进行自动提交 SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}

2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句 SQL> SET ECHO {ON|OFF}

3).是否显示当前sql语句查询或修改的行数 SQL> SET FEED[BACK] {6|n|ON|OFF}

默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数 4).是否显示列标题

SQL> SET HEA[DING] {ON|OFF}

当set heading off 时,在每页的上面不显示列标题,而是以空白行代替 5).设置一行可以容纳的字符数 SQL> SET LIN[ESIZE] {80|n}

如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。 6).设置页与页之间的分隔 SQL> SET NEWP[AGE] {1|n|NONE}

当set newpage 0 时,会在每页的开头有一个小的黑方框。 当set newpage n 时,会在页和页之间隔着n个空行。

当set newpage none 时,会在页和页之间没有任何间隔。 7).显示时,用text值代替NULL值 SQL> SET NULL text 8).设置一页有多少行数 SQL> SET PAGES[IZE] {24|n}

如果设为0,则所有的输出内容为一页并且不显示列标题 9).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。 SQL> SET SERVEROUT[PUT] {ON|OFF}

在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。

10).当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句。 SQL> SET WRA[P] {ON|OFF}

当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。

11).是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。 SQL> SET TERM[OUT] {ON|OFF}

在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。 12).将SPOOL输出中每行后面多余的空格去掉 SQL> SET TRIMS[OUT] {ON|OFF} 13)显示每个sql语句花费的执行时间 set TIMING {ON|OFF}

14). 遇到空行时不认为语句已经结束,从后续行接着读入。

SET SQLBLANKLINES ON

Sql*plus中, 不允许sql语句中间有空行, 这在从其它地方拷贝脚本到sql*plus中执行时很麻烦. 比如下面的脚本: select deptno, empno, ename from emp

where empno = '7788';

如果拷贝到sql*plus中执行, 就会出现错误。这个命令可以解决该问题 15).设置DBMS_OUTPUT的输出 SET SERVEROUTPUT ON BUFFER 20000

用dbms_output.put_line('strin_content');可以在存储过程中输出信息,对存储过程进行调试

如果想让dbms_output.put_line(' abc');的输出显示为:

SQL> abc,而不是SQL>abc,则在SET SERVEROUTPUT ON后加format wrapped参数。

16). 输出的数据为html格式 set markup html

在8.1.7版本(也许是816? 不太确定)以后, sql*plus中有一个set markup html的命令, 可以将sql*plus的输出以html格式展现.

注意其中的spool on, 当在屏幕上输出的时候, 我们看不出与不加spool on有什么区别, 但是当我们使用spool filename 输出到文件的时候, 会看到spool文件中出现了等tag.

14.修改sql buffer中的当前行中,第一个出现的字符串 C[HANGE] /old_value/new_value SQL> l

1* select * from dept SQL> c/dept/emp

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

Top