1、 选择题(每题1分,共20分)
1. 有数据”oracle”分别存放到char(10)和varchar2(10)类型的字段中,其实际存储长度为( )A、 10 10 B、66C、 10 6 D、 6 10
2.ORACLE数据库物理结构包括以下三种文件,以下不属于的是( )A、系统文件 B、日志文件 C、数据文件 D、控制文件3.下面四个语句中哪一个是正确的?( )
A、 SELECT * , ENAME FROM EMP;B、 DELETE * FROM EMP;
C、 SELECT DISTINCT EMPNO ,HIREDATE FROM EMP;D、 SELECT ENAME|SAL AS “name” FROM EMP ;
4.更改oracle用户HR,使其变为不可用(锁定)状态( )A、 UPDATE USER HR ACCOUNT DISABLE ;B、 UPDATE USER HR ACCOUNT LOCK ;C、 ALTER USER HR ACCOUNT LOCK ;D、 ALTER USER HR ACCOUNT DISABLE ;5.在Oracle中,使用下列的语句:
CREATE PUBLIC SYNONYM parts FOR Scott.inventory; 完成的任务是( )。
A、 需要给出schema被除去的对象名
B、 指定了新的对象权限C、 指定了新的系统权限
D、给Scott.inventory对象创建一个公用同义词parts6. ORACLE中,用来判断列值是否为空的操作符是( )
A、 ==NULL B、IS NULL C、 AS NULL D、 NULLIS
7.在CUSTOMER中有一列为单价(PRICE),写一个SELECT命令显示所有单价在500以上的查询语句( )
A、SELECT * FROM CUSTOMER WHERE PRICE MORE THAN 500;B、SELECT * FROM CUSTOMER WHERE PRICE BETWEEN 500 AND *;C、SELECT * FROM CUSTOMER WHERE PRICE LIKE '%500%';D、SELECT * FROM CUSTOMER WHERE PRICE>=500;8. 下列哪个命令是用于ORACLE中数据导出的 ( )A、expB、imp C、input D、output9.以下运算结果不为空值的是()
A、12+NULL B、60*NULL
C、NULL‖’NULL’D、12/(60+NULL)
10.若用户要连接数据库,则该用户必须拥有的权限是()A、create table B、create indexC、create session D、connect
11.授予删除任何表的系统权限(DROP ANY TABLE)给user1,并使其能继续授该权限给其他用户,以下正确的SQL语句是()A、Grant drop any table to user1;
B、Grant drop any table to user1 with admin option;C、Grant drop table to user1;
D、Grant drop any table to user1 with check potion;12.要以自身的模式创建私有同义词,用户必须拥有( )系统权限。
A、CREATE PRIVATE SYNONYMB、CREATE PUBLIC SYNONYMC、CREATE SYNONYMD、CREATE ANY SYNONYM
13.删除emp表中所有数据,且可以rollback,以下语句哪个命令可以实现( )
A、truncate table emp B、drop table empC、delete * from emp D、delete from emp
14.当Select Into语句的返回没有数据时,将引发下列哪个异常?( )
A、No_Data_Found B、To_Many_Row
C、Too_Many_Rows D、Invalid_Number
15.请将以下逻辑概念按照从大到小排序( )
A、数据库、段、表空间、区、块 B、数据库、表空间、段、区、块
C、表空间、数据库、区、段、块 D、块、段、区、表空间、数据库
16.如何向表空间中增加数据文件?( )
A、Altertablespacemzf adddatafile‘c:\\mzf2.ora’ size 50M;B、Alter databasemzf add datafile ‘c:\\mzf2.ora’ size 50M;
C、Alter datafile add ‘c:\\mzf2.ora’ size 50M;
D、Alter system add datafile ‘c:\\mzf2.ora’ size 50M;
17.如何删除tester用户( )
A、 drop role tester;B、drop user tester;C、alter user tester; D、delete user tester;18.如何删除students表中的所有记录( )
A、Drop table students; B、Delete from students;C、Alter table students; D、delete * from student;19.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是( )A、多对多 B、一对一 C、多对一 D、一对多20.在Oracle中,下面用于限制分组函数的返回值的子句是()。A、WHERE B、HAVING C、ORDER BY D、无法限定分组函数的返回值
2、 填空题(每题1分,共10分)
1.数据完整性分为___________完整性,_____________完整性和______________完整性
2. 修改表的结构,应该使用SQL语言的命令_____________
3.在oracle中,连接数据库的命令_________,显示表dept结构的命令________,显示当前用户的命令_______
4. 权限是指执行特定类型sql命令或是访问其它方案对象的权利,包括_____和__________两种。
5.数据控制语句DCL包含授权语句________和收回权限的语句revoke。
6. 数据字典的三种前缀,dba 、 _____ 和 ______7.使用________关键字可以消除结果集的重复行
8.修改查询结果中的列标题,为表起别名,可以使用____字句9.为scott用户下的emp表创建公用同义词semp的语句为______________
10.使用_______字句可以将两个或多个select查询的结果合并成一个结果集。
11.PL/SQL是一种块结果的语言,一个PL/SQL程序块可以划分为三个部分:______、_________和___________。12.删除用户自定义函数的命令_____________。
3、 判断题(每题1分,共12分)
1. 使用索引的主要目的是提高查询的速度。()
2. 视图是日志的一种()
3.控制文件的扩展名是.ctl()
4. 存储过程与触发器的主要区别就是,存储过程是由用户或应用程序显示调用,而触发器是被事件自动触发。()5.一个表空间中至少有一个数据文件。()6.一个数据文件可以属于多个表空间()
7. 包头没有包体是可以独立存在的。()
8. For循环中,每循环一次,循环变量自动增加一个步长的值。()9. 每个数据库逻辑上可以分为多个表空间( )
10. 回收一个用户的系统权限后,该用户传递给其他用户的权限会自动取消( )
11.在 Oracle 中创建用户时,若未提及 DEFAULT TABLESPACE 关键字,则 Oracle 就将SYSTEM表空间分配给用户作为默认表空间。( )12.oracle自动为表的主键或唯一键列创建唯一索引( )
4、 简述题(每题3分,共9分)
1.简单列出几种当前流行的关系数据库系统?2.列出oracle中的约束
3. 简述oracle数据库系统的体系结构
5、 程序题。(每题3分,共39分)
Scott用户下有表emp (EMPNO, ENAME, JOB, MGR, HIREDATE,
SAL,COMM ,DEPTNO)和表dept(DEPTNO ,DNAME,LOC),其中emp表为雇员表,各字段的中文含义为:雇员表(雇员号,雇员名,职位,上级编号,入职时间,月工资,奖金,部门号);dept表为部门表,各字段的中文含义为:部门表(部门编号,部门名,部门所在地点)。
1. 创建表空间mysp1,文件大小6M,文件名可以复用,数据文件放
在‘d:\\mysp1.dbf’。
2. 在mysp1表空间创建表myemp,字段名及类型内容同scott用户下
的emp。
3. 向myemp表中添加数据(8888,‘john’,‘salesman’,
7856,‘06-7月-1998’,2300,200,10);将myemp表中所有的岗位为‘salesman’的员工的工资增加100;将myemp表中奖金为空的数据删除。
4. 将myemp表中ENAME字段的数据类型改为varchar2(30);
为myemp表增加字段email,数据类型为varchar2(50),要求
该字段必须包含@和.(点)字符;
5. 创建用户jisuan131,密码js123,授予jisuan131连接数据库,
完全访问emp表和dept表的权限。6. 查询最高工资员工的名字,工作岗位
7. 显示empno为7844, 7839,123,456 的雇员情况?
8. 查询平均工资低于2000的部门名和它的平均工资,显示部门
名,平均工资?
9. 创建雇员信息视图viewxin,显示雇员号,雇员名,岗位,部门
名,地址,工资级别,并查询视图10. 编写pl/sql 程序块,求各部门的人数,要求:如果人数都不为
0,则输出人数,如果某个部门人数为0,则输出“该部门没有员工”(使用if 语句)
11. 创建用户自定义函数fun1,实现统计某岗位的平均工资12. 创建存储过程pro_sum,该存储过程带一个字符型传入参数
vdeptno,实现统计某个部门人数并输出,然后依次实现执行10号部门的人数。
13. 创建角色myrole,将连接数据库,创建表,创建用户,创建角
色,在任何模式修改表,完全访问emp表的权限赋予myrole。
答案
1、 选择题(20分)
1-5 CACCD 6—10 BDACC 11-15 BCDAB 16—20 ABBCB
2、 填空题
1. 实体域参照(引用) 2.alter table 3. Conn desc show user 4. 系统对象5.grant 6. User
all 7.distinct 8. As 9. Create public synonym semp for scott.emp 10. Union 11.声明执行异常处理 12.drop function
2. 三.判断题
1—10 YNYYY N YYYNYY四.简述题
1. 写出目前流行的数据库管理系统:
Oracle、 mysql、sql server 、db2、ACCESS等2. 简述oracle中约束的种类
主键,唯一,检查,外键,非空,默认3. 简述oracle数据库系统的体系结构(1)oracle 物理存储结构(外部结构),由数据文件(datafile),控制文件(control files),重做日志文件(redo log files)组成
(2)oracle 逻辑存储结构(内部结构),由表空间,表,约束条件,,分区,索引,用户,方案,同义词,权限、角色等组成(3)Oracle的软件结构(实例),一系列oracle进程和驻留在内存中的结构五.程序题。
1. 创建表空间mysp1,文件大小6M,文件名可以复用,数据文件放在‘d:\\mysp1.dbf’。createtablespacemysp1
datafile 'd:\\mysp1.dbf' size 6M reuseautoextend on next 5M maxsize 200M;
2. 在mysp1表空间创建表 myemp,字段名及类型内容同scott用户下的emp。
Create table myemp as select * from scott.emp
3. 向myemp表中添加数据(8888,‘john’,‘salesman’,7856,‘06-7月-1998’,2300,200,10);将myemp表中所有的岗位
为‘salesman’的员工的工资增加100;将myemp表中奖金为空的数据删除。
Insert into myemp values((8888,‘john’,‘salesman’,7856,‘06-
7月-1998’,2300,200,10);
Update myemp set sal=sal+100 where job=‘SALESMAN’;Delete from myemp where comm is null
4. 将myemp表中ENAME字段的数据类型改为varchar2(30);为myemp表增加字段email,数据类型为varchar2(50),要求该字段必须包含@和.(点)字符;
alter table employee modify ename varchar2(30);
5. 创建用户jisuan131,密码js123,授予jisuan131连接数据库,完全访问emp表和dept表的权限。create user jisuan131 identified by js123 default ;grant create session to jisuan131;grant all on scott.emp to jisuan131;grant all on scott.dept to jisuan131;
6. 查询最高工资员工的名字,工作岗位
selectename,job from emp where sal=(select max(sal) from emp );7. 显示empno为7844, 7839,123,456 的雇员情况?
SELECT * from scott.emp where empnoin(7844,7839,123,456);8. 查询平均工资低于2000的部门名和它的平均工资,显示部门
名,平均工资?
select dname as 部门名,avg(sal)as 平均工资 from
scott.emp,scott.dept where scott.emp.deptno=scott.dept.deptnogroup by dname having avg(sal)<2000;
9.创建雇员信息视图viewxin,显示雇员号,雇员名,岗位,部门名,地址,工资级别,并查询视图
Create view xin as select empno,ename,job,dname,loc frommeemp,medept where myemp.deptno=mydept.deptnoSelect * from xin
9. 编写pl/sql 程序块,求各部门的人数,要求:如果人数都不为
0,则输出人数,如果某个部门人数为0,则输出“该部门没有员工”(使用if 语句)declare
v_rs number(2);v_shurvarchar2(20);v_svarchar2(20);begin
v_s:=&v_shur;
select count(*) into v_rs from scott.emp where deptno=v_s;ifv_rs=0 then
dbms_output.put_line(v_s||'号部门没有员工');else
dbms_output.put_line(v_s||'号部门员工人数为:'||v_rs);end if;end;
10. 创建用户自定义函数fun1,实现统计某岗位的平均工资create or replace function fun1(qq varchar2)return number isf_ff number(7,2);begin
selectavg(sal) into f_ff from scott.emp where job=qq;returnf_ff;end;
12.创建存储过程pro_sum,该存储过程带一个字符型传入参数vdeptno,实现统计某个部门人数并输出,然后依次实现执行10号部门的人数。
Create or replace procedure pro_sum(vdeptno in varchar2)As
V_rsnumber(3);
Begin
Select count(*) into v_rs from emp where deptno=vdeptno;Dbms_output.put_line(v_rs)
End;
Exec pro_sum(‘10’)
13. 创建角色myrole,将连接数据库,创建表,创建用户,创建角色,在任何模式修改表,完全访问emp表的权限赋予myrole。
create role myrole;
grant create session,createtable,createuser,createrole,alter any table
to myrole;
grant all on scott.emp to myrole;
因篇幅问题不能全部显示,请点此查看更多更全内容