一、不定项选择题(每题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下载本文