视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle数据库测试题
2025-10-03 14:45:16 责编:小OO
文档
明佳英才Oracle测试题

一、不定项选择题(每题2分,共40分)

1、Oracle存储结构正确的是()

A.tablespace--segment--osblock--block

B.tablespace--segment--extent--block

C.tablespace--extent--segment--block

D.tablespace--extent--block--segment

2、表EMPLOYEES结构为

(

EMPLOYEE_ID NUMBER(6)not null primary key,

FIRST_NAME VARCHAR2(20)unique,

LAST_NAME VARCHAR2(25),

EMAIL VARCHAR2(25)not null,

PHONE_NUMBER VARCHAR2(20),

HIRE_DATE DATE,

JOB_ID VARCHAR2(10),

SALARY NUMBER(8,2),

COMMISSION_PCT NUMBER(2,2),

MANAGER_ID NUMBER(6),

DEPARTMENT_ID NUMBER(4)

)

以下哪几个语句可算出表中记录【多选】()

A.select count(*)from EMPLOYEES

B.select count(EMPLOYEE_ID)from employees

C.select count(FIRST_NAME)from employees

D.select count(EMAIL)from employees

E.select count(JOB_ID)from employees

3、表EMPLOYEES的结构为:

(

EMP_ID NUMBER(4)NOT NULL

LAST_NAME VARCHAR2(30)NOT NULL

FIRST_NAME VARCHAR2(30)

DEPT_ID NUMBER(2)

JOB_CAT VARCHAR2(30)

SALARY NUMBER(8,2)

)

下面哪条语句可以查出各个dept_id的最大salary值和最小salary值并且它的最值小于5000最大值大于15000?()A.SELECT dept_id,MIN(salary),MAX(salary)

FROM employees

WHERE MIN(salary)<5000AND MAX(salary)>15000;

B.SELECT dept_id,MIN(salary),MAX(salary)

FROM employees

WHERE MIN(salary)<5000AND MAX(salary)>15000

GROUP BY dept_id;

C.SELECT dept_id,MIN(salary),MAX(salary)

FROM employees

HAVING MIN(salary)<5000AND MAX(salary)>15000;

D.SELECT dept_id,MIN(salary),MAX(salary)

FROM employees

GROUP BY dept_id

HAVING MIN(salary)<5000AND MAX(salary)>15000;

E.SELECT dept_id,MIN(salary),MAX(salary)

FROM employees

GROUP BY dept_id,salary

HAVING MIN(salary)<5000AND MAX(salary)>15000;

4、ORACLE中,执行语句:SELECT address1||','||address2||','||address2

"Adress"FROM employ;将会返回()列。

A、0

B、1

C、2

D、3

E、4

5、假定有一个用户表,表中包含字段:userid(int)、username(varchar)、

password(varchar)、等,该表需要设置主键,以下说法正确的是()。

A、如果不能有同时重复的username和password,那么username和password 可以组合在一起作为主键。

B、此表设计主键时,根据选择主键的最小性原则,最好采用userid作为主键。

C、此表设计主键时,根据选择主键的最小性原则,最好采用username和password 作为组合键。

D、如果采用userid作为主键,那么在userid列输入的数值,允许为空。

6、以下数据库是Oracle语法的是:()

A.select sysdate into v_time from dual;

B.select v_time=sysdate;

C.set v_time:=sysdate;(v_time为已定义的时间类型变量)

D.v_time=sysdate

7、分别用 1.Insert,2.delete,3.update处理1000条数据,对数据库资源(回

滚段)使用率由高到低的顺序是().

A.123

B.132C.231

D.312

8、请看以下oracle中存储过程

begin

begin

<语句1>

exception

when others then

dbms_output.put_line('错误1');

end;

begin

<语句2>

dbms_output.putline('错误2');

end;

exception

when others then

dbms_output.put_line("错误3");

end;

请问,当<语句1>,<语句2>出错时,该存储过程输出字符串分别是什么?()

A.错误1,错误3

B.错误1,错误2

C.错误1,错误2,错误3

D.错误2,错误3

9、Oracle数据库中获取系统时间的内部函数是:()

A.sysdate

B.getdate()

C.currentdate

D.date()

10.在Oracle数据库中,请描述语句SELECT decode(sign(-1),1,'a','b')FROM dual 返回结果:()

A.1

B.-1

C.a

D.b

11、Oracle数据库中,通过()访问能够以最快的方式访问表中的一行。(单选)

A、主键

B、Rowid

C、唯一索引

D、整表扫描

12、Oracle数据库中,以下()函数可以针对任意数据类型进行操作。

A、TO_CHAR

B、LOWER

C、MAX

D、CEIL

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

CURSOR emp_cursor(dnum NUMBER)IS

SELECT sal,comm FROM emp WHERE deptno=dnum;

那么正确打开此游标的语句是()。

A、OPEN emp_cursor(20);

B、OPEN emp_cursor FOR20;

C、OPEN emp_cursor USING20;

D、FOR emp_rec IN emp_cursor(20)LOOP…END LOOP;

14、在Oracle中,关于触发器的描述正确的是()。

A、触发器可以删除,但不能禁用

B、触发器只能用于表

C、触发器可以分为行级和语句级

D、触发器是一个对关联表发出select、insert、update或delete语句时触发的存储过程

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

A、INSERT

B、DELETE

C、ROLLBACK

D、UNLOCK

E、COMMIT

16、在Windows操作系统中,Oracle的()服务监听并接受来自客户端应用程序的连接请求。(单选)

A、OracleHOME_NAMETNSListener

B、OracleServiceSID

C、OracleHOME_NAMEAgent

D、OracleHOME_NAMEHTTPServer

17、在Oracle中,INSTEAD OF触发器主要用于()。【单选】

A、表

B、表和视图

C、基于单个表的视图

D、基于多个表的视图

18、在Oracle中,用下列语句定义了一个过程:CREATE PROCEDURE proc(value1 IN VARCHAR2,value2OUT NUMBER,value3IN OUT VARCHAR2)ISBEGIN……END;假定使用的变量都已定义,下面对过程proc的调用语法正确的是()。【单选】A、proc(‘tt’,10,v3)

B、proc(‘tt’,v2,v3)

C、proc(v1,v2,v3)

D、proc(‘tt’,10,’dd’)

19、当定义PL/SQL表时,其下标可以使用以下哪些数据类型

A、char

B、varchar2

C、int

D、integer

E、binary_integer

F、binary_float

20、某开发人员希望返回大于等于数字F的整数,应该使用以下什么函数?

A、ceil(F)

B、floor(F)

C、round(F)

D、trunc(F+1)

二、简答题(共计50分)

1、【4分】Oracle数据库中,如何增加表空间userdata的大小,请写出具体数据

库语句?(以windows操作系统为例说明)

2、【3分】简要叙述TRUNCATE,DROP,DELETE之间的关系。

3、【5分】举例说明while..loop/for..loop循环语句,如插入1..10的值到一个单

字段数据表(结构自定义)。

4、【4分】解释tablespace,data block,extent和segment的区别(这里建议用

英文术语)

5、【4分】已知表T1中A字段含有重复的数据(A字段非空),请完成SQL语句,

其中第一条语句查询T1标准的记录总数,第二条语句查询T1标准A字段不重复记录总数

6、【4分】列举oracle安装之后的缺省表空间,并描述每个表空间包含的内容

7、【4分】详细描述oracle的进程结构

8、【4分】现有表table1,有字段col1varchar2(20),col2varchar2(20),

col3number(50)

Col1Col2Col3

a b20

a b30c d20

c d30

写一条sql查询语句,得到如下的结果

Col1Col2Col3

a b50

c d50

【12分】9、问题描述:

已知关系模式:

1、s(sno,sname)学生关系。sno为学号,sname为姓名

2、c(cno,cname,cteacher)课程关系

cno为课程号,cname为课程名,cteacher为任课教师

3、sc(sno,cno,scgrade)选课关系。scgrade为成绩

要求实现如下5个处理:

1.找出没有选修过“李明”老师讲授课程的所有学生姓名

2.列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

3.列出既学过“1”号课程,又学过“2”号课程的所有学生姓名

4.列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号

5.列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩

10、【6分】举一个用EXISTS替代IN、用NOT EXISTS替代NOT IN的例子

三、填空题(10个空格,每个空格1分):

1、作家信息表Auths包含两个字段

Author_Code VARCHAR2(50)

Salary NUMBER(10)

其中Author_Code为作家代码,主键。Salary为作家工资额,非空。

现由于工资调整,对于作家代码在'A00001'和'A00006';之间的作家工资少于或等于五百,则给该作家增加15%的工资,对于大于500到1000之间则增加12%,其它则增加10%。如下程序是通过游标方式实现的,请填写程序中相应的空格。DECLARE

--声明两个变量,用来接收游标返回的工资和作家代码

v_Salary(1)

v_Code(2)

v_ErrText VARHCAR(200);

--声明游标c_Salary,该游标的结果集是Auths表中作家代码(Author_Code)值是

--'A00001'到'A00006'的工资值(Salary)和作家代码值(Author_Code)

CURSOR c_Salary IS

SELECT Salary,

Author_Code

FROM Auths

WHERE Author_Code>='A00001'

AND Author_Code<='A00006';

BEGIN

--打开游标

(3)

LOOP

--游标循环,将游标查询结果集中的一行保存到两个临时变量中

(4)c_Salary INTO v_Salary,v_Code;

--当结果集中没有行是退出

EXIT WHEN(5);

--如果该作家的工作少于或等于五百,则给该作家增加15%的工资

--500到1000之间则增加12%,其他增加10%

IF v_Salary<=500THEN

UPDATE Auths

SET Salary=(6)

WHERE Author_Code=v_Code;

ELSIF v_Salary<=1000THEN

UPDATE Auths

SET Salary=Salary+Salary*0.12

WHERE Author_Code=v_Code;

(7)

UPDATE Auths

SET Salary=Salary+Salary*0.1

WHERE Author_Code=v_Code;

END IF;

END LOOP;

(8);

(9);

EXCEPTION

WHEN OTHERS THEN

CLOSE c_Salary;

ROLLBACK;

v_ErrText:=(10);

DBMS_OUTPUT.PUT_LINE('程序异常终止,出现以下错误:'||v_ErrText); END;

7下载本文

显示全文
专题