
考试时间为2个小时
本着考察大家能力的原则,可以查API但不能交流,必须完成
姓名:____________
一、选择题(不定向)
1、关于存储过程参数,正确的说法是( A)
A、可以通过begin procedure(name=>’Jack’,age=90);end;方式调用一个过程。
B、存储过程输入参数可以不输入信息而调用过程
C、过程中接收的参数必须要指定长度。
D、以上说法都不对
2、下列说法,正确的说法是( B )
A、只要在存储过程中有增删改语句,一定加自治事务
B、在函数内可以修改表数据
C、函数不能递归调用
D、以上说法都不对
3、有一product产品表(编号id,名称name,价格price,数量amt,所属分类type),下列语法不正确的是( D )
A、select * from product where price>1000
B、select sum(price) from product group by type having max(price)>1000
C、select type,sum(price) from product where price>1000 group by type
D、select type,sum(price) from product where max(price)>1000 group by type
4、关于触发器,下列说法正确的是( B )
A、可以在表上创建INSTEAD OF 触发器
B、表级触发器不能使用:OLD和:NEW
C、行级触发器不能使用:OLD和:NEW
D、触发器可以显式调用
5、下列那些是Oracle的伪列(D)
A、ROWID
B、ROW_NUMBER()
D、ROWNUM
E、COLUMN
6、当表中的数据经常用于查询,而很少被修改时,则应该建立( A )
A、索引
B、检查约束
C、主键
D、外键
7、在建表时如果希望某列的值,在一定的范围内,应建什么样的约束?( C)
A、primary key
B、unique
C、check
D、not null
8、下列说法正确的是( D )
A、在PLSQL自定义函数中如果包含UPDATE、DELETE、INSERT语句,不必在函数体内给出COMMIT;
B、自定义函数可以在SQL语句中调用、也可以在PLSQL块中调用
C、自定义函数可以返回表类型
D、自定义函数中的参数可以是OUT类型
*9、在表exam中存在以下数据:
| id | msg |
| 01 | Product is 85% that all. |
| 02 | Rose’s bag is write. |
| 03 | Tom grade then 50% in class |
A、select * from car where color like '%\\%%';
B、select * from car where instr(color,'%')>0;
C、select * from car where color like '%%%' ;
D、select * from car where color like '%/%%' escape '/';
10、关于delete from someTable与truncate someTable都可以清空表中的数据,它们的说法正确的是:(A)
、delete from someTable将会默认开始一个事务,事务提交后,数据将被删除。
、delete from someTable会引发表或行级的delete触发器。
、truncate someTable默认开始一个事务,并等待用户提交后生效。
、truncate someTable将会引发表或行级的insert触发器。
11、关于事务,说法正确的是:(B,D)
、当执行一个DDL语句时,事务就开始了。
、当执行insert,update,delete语句时事务即开始了。
、可以通过set autocommit on;修改事务的状态。
、当执行rollback或是commit时事务即结束。
12、表A中有一行数据name=’Jack’,事务提交方式为Oracle数据库的默认状态。此时scott_A客户端对此行进行了update A set name=’Rose’ where name=’Jack’的操作。而后scott_B也对此行进行了update A set name=’Mary’ where name=’Jack’的操作。在scott_A还没有提交时,scott_B的状态为:(A,D)
、抛出异常。因为scott_A的事务还没有结束。
、进入等待。因为scott_A的事务还没有结束。
、修改成功,此时name的值为Mary。
、修改失败且退出,name的值为Rose。
13、以下可以正确约束sex为’1’或’0’的DDL语句为:(A,B)
、 create table stud(
sex char(1) constraint ck check(sex in('1','0'))
);
B、create table stud(
ex char(1) constraint ck check(sex='1' or sex='0')
);
C、create table stud(
sex char(1) constraint ck check(sex='1' and sex='0')
);
、create table stud(
sex char(1) constraint ck check(sex in('1','0')) not null
);
14、以下创建主键正确的方式的是:(A)
、create table t(
Id int primary key
);
B、create table t(
Id int primary key,
Cardid int primary key
C、create table t(
id int constraint t_pk primary key
D、create table t(
Id int not null,
Cardid int not null,
Constraint t_pk primary key(id,cardid)
15、存在以下plsql块:
Declare
v_time varchar(30);
Begin
//line 1
End;
在line 1处写入以下哪一行代码可以让程序运行通过:(C)
、select sysdate from dual;
、dbms_output.put_line(‘hello’);
、select sysdate into v_time from dual;
、execute immediate 'select sysdate v from dual' into v;
16、关于视图view和同义词synonym的说法正确的是:(A)
、view可以来自于一个或是多个查询。而synonym只可以某个固定的对象如表。
、view和synonym都可以指向其他用户的表。(有权限的情况下)。
、都可以通过view或是synonym修改源对象。
、都可以在上面创建触发器。
17、以下代码块:
set serveroutput on;
begin
for vv in (select name from person) loop
//line 1
end loop;
end
在person表中,存在一列name,则正确输出name值的方式是:A
、dbms_output.put_line(vv.name);
、dbms_output.put_line(vv);
、不能正确的输出,因为这个plsql块前面没有declare关键字
、dbms_output.put_line(name);
18、存在以下过程,它接收一个in out参数类型:
create or replace procedure p1(arg1 in integer,arg2 in out varchar2)
as
begin
dbms_output.put_line(arg1||arg2);
end;
以下是调用代码:
set serveroutput on;
declare
v_arg2 varchar2(30);
begin
v_arg2:='Jack';
//line 1
end
在line 1处写入哪一行,可以正确的调用p1过程:(B)
A、p1(90,’Jack’);
B、p1(90,v_arg2);
C、p1(arg1=>90,arg2=>v_arg2);
D、p1(arg2=>v_arg2,arg1=>90);
19、下列哪些方法可以调用无参数过程 out_time (A,C)
A、exec out_time
B、run out_time
C、begin
out_time;
D、out_time startup;
20、以下哪些是事务的特点:(ABCD)
、原子性。
B、一致性。
C、隔离性。
D、持久性。
二、编程题
1、存在表T(a,b,c,d), 要根据字段c排序后取第21-30条记录显示(含a,b,c,d字段),请给出实现的SQL。
begin
Select * from T order by c;
Select * from T where rownum>=21 and rownum<=30;
End;
2、查找出当前用户模式下,每张表的记录数,和字段的名称信息,以scott用户为例,结果应如下:
DEPT...................................4行
字段:DEPT_NAME,DEPT_NO
EMP...................................14行
字段:EMP_NO,EMP_DEPT
请完成实例的plsql块。
Declare
Dept_num int;
Emp_num int;
Sel_dept varchar2(20);
Sel_emp varchar2(20);
Begin
Select count(*) into dept_num from dept;
Select count(*) into emp_num from emp;
select column_name into sel_dept from user_tab_columns where table_name='DEPT';
Select column_name into sel_emp from user_tab_columns where table_name = 'EMP';
Dbms_output.put_line('DEPT...................................'||dept_num||'行');
Dbms_output.put_line('emp...................................'||emp_num||'行');
Dbms_output.put_line('字段'||sel_dept);
Dbms_output.put_line('字段'||sel_emp);
when others then
End;
3、存在以下列车信息:
| 动车:D402 | 到达时间 | 开车时间 | |
| 济南西 | 起点站 | 20:00 | |
| 德州东 | 07:39 | 07:40 | |
| 沧州西 | 08:02 | 08:04 | |
| 天津南 | 08:32 | 08:34 | |
| 廊坊 | 08:51 | 08:53 | |
| 北京南 | 09:14 | 终到站 |
| 动车:G20 | 到达时间 | 开车时间 | |
| 上海虹桥 | 起点站 | 16:00 | |
| 南京南 | 17:07 | 17:09 | |
| 济南西 | 19:21 | 19:23 | |
| 北京南 | 20:55 | 终到站 |
1:列车运行管理系统的表结构。
:要求可以根据出发地、和目的地查询出列车号,包括始发车和路过的列车。
如:查询济南到北京的列车,即可以列出D402,和过路车G20。
:要求画出E-R实体关系图。
:要求写出实现的SQL代码。
:要求可以扩展和添加新的列车和时刻信息。
Create table d402(motor_car_num varchar2(10) primary key,arrive_time varchar2(10),drive_time varchar2(10));
Select * from motor_car where depart_place = ‘济南’
