资源描述
第 9 页 共9页
Oracle 数据库测试题
姓 名:
得 分:
一、选择题
1)
PL/SQL块中可以使用下列( )命令。(选择两项)
a)
TRUNCATE
b)
DELETE
c)
SAVEPOINT
d)
ALTER TABLE
2)
有语句如下:
TYPE curtype IS REF CURSOR RETURN book.price%TYPE;
表book的列的数据类型是NUMBER(5);则( )。(选择一项)
a)
Curtype可以返回INTEGER类型数据
b)
Curtype可以返回NUMBER(5,2)类型数据
c)
Curtype可以返回VARCHAR2(10)类型数据
d)
以上皆非
3)
使用下列( )将 Null 值转换为实际值。(选择三项)
a)
nvl()
b)
To_char()
c)
To_date()
d)
To_number()
4)
你定义了一个对象类型myOBJ,要基于该类型来创建表tab1,语句为( )。(选择一项)
a)
CREATE TABLE tab1 OF myOBJ;
b)
CREATE TABLE myOBJ OF tab1;
c)
CREATE TABLE tab1 AS myOBJ;
d)
CREATE TABLE tab1 TYPE OF myOBJ;
5)
在FUNCTION主体中,可能有( )个RETURN语句。(选择三项)
a)
0
b)
1
c)
2
d)
3
6)
有一段PL/SQL程序如下所示:
var1 := 10;
LOOP
EXIT WHEN var1 > 12;
var1 := var1 +1;
DBMS_OUTPUT.PUT_LINE(‘A’);
END LOOP;
输出为( )。(选择一项)
a)
A
b)
A
c)
A
A
d)
A
A
A
7)
在表tab1中有列为col1,其数据类型为INTEGER,在PL/SQL的DECLARE部分声明了一个变量var1,语句为:
var1 tab1.col1%TYPE;
不久后,执行了语句:
ALTER TABLE tab1 MODIFY(col1(NUMBER(5,2));
则var1的数据类型为( )。(选择一项)
a)
整数型
b)
数字型
c)
字符型
d)
以上皆非
8)
当两位用户中的每一位都对一个单独的对象进行了锁定,而他们又要获取对方对象的锁时,将会发生( )。(选择一项)
a)
共享锁
b)
死锁
c)
排他锁
9)
Oracle数据库由一个或多个称为( )的逻辑存储单元组成。(选择一项)
a)
表
b)
表空间
c)
行
d)
单元
10
( )可以从过程返回多个值。(选择一项)
a)
使用IN参数
b)
使用OUT参数
c)
使用指针
d)
不能
11)
使用( )命令提交一个事务。(选择一项)
a)
Commit
b)
Rollback
c)
Savepoint
12)
在创建序列的过程中,下列( )选项指定序列在达到最大值或最小值后,将继续从头开始生成值。(选择一项)
a)
Cycle
b)
Nocycle
c)
Cache
d)
Nocache
13)
数据包airline中有函数book_ticket,其定义如下:
FUNCTION book_ticket(para1 CHAR)RETURN DATE IS
---
下列( )程序段正确地调用该数据包的函数。(选择一项)
a)
DECLARE
value1 CHAR(10);
BEGIN
----
value1 := airline.book_ticket(10);
---
b)
DECLARE
value1 CHAR(10);
BEGIN
----
value1 := airline.book_ticket(‘10’);
---
c)
DECLARE
value1 DATE;
BEGIN
----
value1 := airline.book_ticket(10);
---
d)
DECLARE
value1 DATE;
BEGIN
----
value1 := airline.book_ticket(‘10’);
---
二、问答题
1、事务是什么?事务的ACID特性指的是什么?oracle数据库的默认隔离级别是?
2、oracle中truncate和delete命令有何区别?
3、Oracle中char和varchar2数据类型有什么区别?有数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其存储长度及类型有何区别?
4、参见如下表结构
出版社:
出版社代码 char(2),
出版社名称 varchar2(32)
图书:
图书编号 char(8),
图书名称 varchar2(128),
出版社代码 char(2),
作者代号 char(4),
图书简介 varchar2(128)
作者:
作者代号 char(4),
作者名称 varchar2(10),
性别 char(1),
年龄 number(3),
文学方向 varchar2(64)
获奖名单:
获奖日期 date,
获奖人员 char(4)
编写SQL语句,找出“作者”库中没有出现在“获奖名单”库中所有作者信息的SQL语句(提示:使用not in以及外关联,并说明哪种方法最优。)
5、编写一个SQL语句,从以下记录中找到唯一记录,并将其flag列更新为Y
No name sex flag
1 张三 1 N
1 张三 1 N
1 张三 1 N
6、Oracle中,需要在查询语句中把空值(NULL)输出为0,如何处理?
7、见第四题“获奖名单”表,写出SQL语句,查询出在上一个月获奖的人员。
8、见第四题“图书”表,在表上对图书名称、出版社代码、作者代号创建了组合索引,请问在执行如下语句时会不会利用到索引。
Select * from 图书 where 图书名称=’xxxx’
Select * from 图书 where 图书名称=’xxxx’ and 出版社代码=’bb’
Select * from 图书 where 图书名称=’xxxx’ and 作者代号=’ddd’
Select * from 图书 where 出版社代码=’yyy’
三、数据库设计题
背景:FUN TRAVELS公司是一家旅游预定的公司。该公司雇佣了若干名业务员,分别安排在全国各地50处分之机构,通过其中任何一处分支机构的业务员,客户都可以预定一次旅行。
第一部分:
创建新用户tours
给tours 赋角色 connect, resource
使用tours创建以下各表,并根据描述指定合适的数据类型及字段大小:
表名:operator
表名:cruise
列
描述
列
描述
oper_cd
oper_nm
oper_add
oper_telno
oper_faxno
oper_email
旅行业务员代码
名字
地址
电话号码
传真号码
电子邮件地址
cruise_cd
cruise_nm
oper_cd
des_city
country_nm
duration
price
airfare
旅行代码。
旅行名称
旅游业务员代码
目的地城市
国家名称
旅行时间(按天计)
每位价格(按美元计)
飞机票价含在价格中
(Y–是,N–否)。
表名:cruise_book
表名:customer
列
描述
列
描述
cruise_cd
start_dt
tot_seats
seats_avail
旅行代码
行程开始日期
座位总数
未预定座位数
cust_cd
cust_nm
cust_add
tel_no
e_mail
cruise_cd
start_dt
no_of_per
客户代码
姓名
住址
电话号码
电子邮件地址
所预定旅行代码
所预定旅行开始日期
预定人员数
使以下三张表的三个列实现自动编号,创建序列并使用,如下所示:
operator:oper_cd
cruise:cruise_cd
customer:cust_cd
向表设置主键约束,如下所示:
operator:oper_cd
cruise:cruise_cd
cruise_book:cruise_cd, start_dt
customer:cust_cd
向表设置外键约束,如下所示:
cruise:oper_cd参照operator 表中的oper_cd
cruise_book:cruise_cd参照 cruise 表中的 cruise_cd
customer:cruise_cd参照cruise_book表中的cruise_cd ,start_dt
向表设置唯一约束,如下所示:
operator:oper_telno
向表设置检查约束,如下所示:
cruise:duration > 0, price > 0, airfare = ‘Y’ or airfare = ‘N’
向表设置默认约束,如下所示:
customer:no_of_per = 1
第二部分:
1对每个表添加数据如下。
operator:
cruise
cruise_book
customer
1. 显示当年七月到八月预约的顾客姓名
2. 显示所有预期收入低于20,00,00的旅游线及其预期收入的总和。
3. 使用子查询显示自10月以来没有一笔业务的业务员名单。
4. 查询行程大于8天的旅游线的代码、名称、目的城市、行程和价格。
5. 将所有线路的价格增加 15 % 。
6. 查找所有业务员的业务量。
7. 查找每个业务员到现在为止没完成的业务量。
9
展开阅读全文