大型数据库Oracle(课程作业答案)
练习1:数据库基础
解答参考
一. 单选题(共8题,100分)
-
- (单选题)
表示数据库的概念模型一般使用 ( ) 。
A. 用户活动图
B. 数据流图
C. E-R 图
D. 流程图
正确答案: C
- (单选题)
-
- (单选题)实体完整性要求主属性不能取空值,这通常是通过( )
A. 定义外部键来保证
B. 用户定义的完整性来保证
C. 定义主键来保证
D. 关系多统自动保证
正确答案: C
- (单选题)实体完整性要求主属性不能取空值,这通常是通过( )
-
- (单选题)有教师表(教师号,教师名,职称,基本工资),其中基本工资的取值与职称有关,实现这个约束的可行方案是( )。
A. 在教师表中定义视图
B. 在教师表中定义存储过程
C. 在教师表中定义插入和删除的触发器
D. 在教师表中定义索引
正确答案: C
- (单选题)有教师表(教师号,教师名,职称,基本工资),其中基本工资的取值与职称有关,实现这个约束的可行方案是( )。
-
- (单选题)当从A表(有5行数据)和B表(有6行数据)中查找数据,使用语句“SELECT * FROM A, B”将得到数据行数是.( )。
A. 5
B. 6
C. 11
D. 30
正确答案: D
- (单选题)当从A表(有5行数据)和B表(有6行数据)中查找数据,使用语句“SELECT * FROM A, B”将得到数据行数是.( )。
-
- (单选题)“从DEPT中删除部门号=‘01’的行”,该操作违反了( )。
I.实体完整性约束 II.参照完整性约束 III.用户定义完整性约束
A. 仅I
B. 仅II
C. I和III
D. 都违反
正确答案: B
-
- (单选题)下列数据模型中,数据独立性最高的是( )。
A. 网状数据模型
B. 关系数据模型
C. 层次数据模型
D. 非关系模型
正确答案: B
- (单选题)下列数据模型中,数据独立性最高的是( )。
-
- (单选题)下列四项中,不属于数据库特点的是( )
A. 数据共享
B. 数据完整性
C. 数据冗余很高
D. 数据独立性高
C正确答案: C
- (单选题)下列四项中,不属于数据库特点的是( )
-
- (单选题)应用数据库的最主要的目的是为了( )
A. 解决数据保密问题
B. 解决数据完整性问题
C. 解决数据共享问题
D. 解决数据量大的问题
正确答案: C
- (单选题)应用数据库的最主要的目的是为了( )
实训报告1:Oracle客户端安装与配置
一. 简答题(共1题,100分)
- (简答题) 完成oracle客户端安装并与数据库服务器进行连接,确认能远程正常查询相关数据,并将操作过程进行说明,配合截图进行整理后,撰写相应的实训报告操作说明。
实训目的:1、掌握安装oracle客户端方法
2、掌握配置oracle客户方法
3、通过简单操作验证死锁现象
操作过程:
准备:从数据库管理员处获得关于数据库的关键参数(服务器地址、数据库服务名、数据库服务端口);从数据库管理员处获得用户的账号和密码
具体操作:
1、启动oracle网络配置助手
开始–> 程序–> oracle–>application develop–> net configration assistant
2、选择本地服务名配置
3、将远程服务器的服务添加为本地服务名
依次填写管理员提供的数据库关键参数
address: 10.6.19.227
sid: orcl
port: 1521
4、连接测试通过后填写自定义本地服务名
5、利用sqlplus连接上服务器进行简单查询操作
select table_name from user_tables;
desc emp;
死锁现象:
1、用sqlplus连接数据库,执行
UPDATE dept SET loc=‘LOUDI’ WHERE deptno = 40;
2、用SQL DEVELOPER连接数据库,执行
UPDATE emp SET deptno =40 WHERE ename LIKE ‘S%’;
UPDATE dept SET loc = ‘BEIJING’ WHRE deptno = 40;
3、返回SQLPLUS ,执行
UPDATE emp SET deptno=10 WHERE ename LIKE ‘S%’;
这样就会发生死锁,请解释此现象发生的原因,并分析如何避免此现象。
解答参考
1.已经掌握安装oracle客户端方法与配置oracle客户方法
2.简单查询
3.死锁
练习2:Oracle体系结构
解答参考
一. 单选题(共13题,100分)
-
- (单选题)将数据库操作写入到日志文件中的进程是. ( )
A. DBWR
B. CKPT
C. LGWR
D. SMON
正确答案: C
- (单选题)将数据库操作写入到日志文件中的进程是. ( )
-
- (单选题)记录了Oracle数据块缓存区内容的内存区域是.( )
A. SGA
B. PGA
C. UGA
D. KGA
正确答案: A
- (单选题)记录了Oracle数据块缓存区内容的内存区域是.( )
-
- (单选题)以下关于Oracle数据库说法正确的是.( )。
A. 在创建表时即便使用nologging选项也会产生重做日志
B. 创建索引总是能提高查询效率
C. Oracle中不会出现死锁现象
D. 用户创建的表总是存储在默认表空间中的
正确答案: A
- (单选题)以下关于Oracle数据库说法正确的是.( )。
-
- (单选题)事务日志的用途是.( )。
A. 事务处理
B. 完整性约束
C. 数据恢复
D. 安全性控制
正确答案: A
- (单选题)事务日志的用途是.( )。
-
- (单选题)ORACLE的临时文件通常用于存放的内容是.( )
A. 大规模排序的中间结果
B. 日志的归档内容
C. 数据字典
D. 系统的启动参数
正确答案: A
- (单选题)ORACLE的临时文件通常用于存放的内容是.( )
-
- (单选题)将控制文件放到不同的磁盘上的最大优点是.
A. 数据库性能
B. 防止单点错误
C. 加快归档
D. 加快控制文件的写操作
正确答案: B
- (单选题)将控制文件放到不同的磁盘上的最大优点是.
-
- (单选题)Oracle的数据库管理器中直接关闭数据库的命令是( )
A. CloseDB
B. shutdown
C. startup
D. exit
正确答案: B
- (单选题)Oracle的数据库管理器中直接关闭数据库的命令是( )
-
- (单选题)下列对于控制文件正确的描述是.( )
A. oracle推荐至少存储两个控制文件并分别存储在两个不同的磁盘上
B. oracle推荐至少在一个磁盘上存储两个控制文件
C. oracle推荐只存储一个控制文件
D. 一个控制文件无法启动一个oracle数据库
正确答案: B
- (单选题)下列对于控制文件正确的描述是.( )
-
- (单选题)系统全局区SGA包括下列哪些内容.( )
A. buffer cache
B. shared pool
C. redolog buffer
D. 以上全部
正确答案: D
- (单选题)系统全局区SGA包括下列哪些内容.( )
-
- (单选题)将修改后的数据块写入到数据文件中的进程是.( )
A. DBWR
B. CKPT
C. LGWR
D. SMON
正确答案: A
- (单选题)将修改后的数据块写入到数据文件中的进程是.( )
-
- (单选题)当一个oracle实例启动并完成数据库打开操作,操作次序正确的是.( )
A. OPEN,NOMOUNT,MOUNT
B. NOMOUNT,MOUNT,OPEN
C. NOMOUNT,OPEN,MOUNT
D. MOUNT,OPEN,NOMOUNT
正确答案: B
- (单选题)当一个oracle实例启动并完成数据库打开操作,操作次序正确的是.( )
-
- (单选题)Oracle中段segment的一个集合又称为.( )
A. 区Extent
B. 段Segment
C. 表空间Tablespace
D. 数据库Database
正确答案: A
- (单选题)Oracle中段segment的一个集合又称为.( )
-
- (单选题)数据库处于打开状态时,以下表空间必须处于在线online状态的是.( )
A. SYSTEM
B. TEMPORARY
C. ROLLBACK
D. USERS
正确答案: A
- (单选题)数据库处于打开状态时,以下表空间必须处于在线online状态的是.( )
实训报告2:Oracle客户端软件的使用
一. 论述题(共1题,100分)
- (论述题)
实训目的:
1、了解客户端连接数据库的方法
2、掌握在客户端编写及运行SQL脚本的方法
3、掌握自定义变量&符号的应用
实训步骤:
1、利用客户端连接oracle数据库
SQLPLUS oracle SQL DEVELOPER TOAD
2、使用客户端查询员工及部门信息
查询所有员工信息
查询所有部门信息
查询ALLEN所在部门名称
3、使用常用的命令进行操作
DD: Data Dictionary
a.通过DD了解自己有哪些表等对象
b.了解要使用的特定表的结构
c.查询或存储所需要的数据
利用describe命令查看dept表的表结构
4、使用&替换变量
5、编写及运行SQL脚本
利用SQLPLUS编写一段查询脚本,并保存在计算机的合适位置
利用记事本编写一段查询脚本,并保存在计算机的合适位置
利用SQLPLUS中的命令运行上述脚本
附加内容:
写出以下查询语句
列出薪水在2500以上的所有员工的信息
列出薪水在2500以上的所有员工的姓名及部门名称
列出总收入在2500以上的所有员工的信息
列出总收入在2500以上的所有员工的姓名及部门名称
查出各部门的名称、总人数及总月薪
查出在芝加哥上班的所有员工的姓名
sal+nvl(comm,0)
解答参考
--2、使用客户端查询员工及部门信息
--查询所有员工信息
select *
from emp;
--查询所有部门信息
select *
from dept;
--查询ALLEN所在部门名称
select ename,deptno
from emp
where ename = 'ALLEN';
--附加内容:
--写出以下查询语句
--列出薪水在2500以上的所有员工的信息
select *
from emp
where sal > 2500;
--列出薪水在2500以上的所有员工的姓名及部门名称
select ename,sal,deptno
from emp
where sal > 2500;
--列出总收入在2500以上的所有员工的信息
select *
from emp
where nvl(sal,0)+ nvl(comm,0)> 2500;
--列出总收入在2500以上的所有员工的姓名及部门名称
select ename,sal,comm,deptno
from emp
where nvl(sal,0)+ nvl(comm,0)> 2500;
--查出各部门的名称、总人数及总月薪
select dname,sum(sal)
from dept,emp;
--查出在芝加哥上班的所有员工的姓名
--sal+nvl(comm,0)
select ename
from emp
where deptno = 30;
练习3:数据库查询
解答参考
一. 单选题(共8题,100分)
-
- (单选题)下列语言可以完成对数据库数据的查询与更新的是( )
A. DCL
B. DDL
C. DML
D. DQL
正确答案: C
- (单选题)下列语言可以完成对数据库数据的查询与更新的是( )
-
- (单选题)当使用多表进行数据查询时,应该在以下哪个子句中指定各表的名称.( )
A. HAVING
B. GROUPBY
C. WHERE
D. FROM
正确答案: D
- (单选题)当使用多表进行数据查询时,应该在以下哪个子句中指定各表的名称.( )
-
- (单选题)查询语句“SELECT dname, ename FROM dept d, emp e where d.deptno=e.deptno order by d.dname, e.ename;”中使用了下列哪种连接.( )
A. 自连接
B. 等值连接
C. 外连接
D. 非等值连接
正确答案: B
- (单选题)查询语句“SELECT dname, ename FROM dept d, emp e where d.deptno=e.deptno order by d.dname, e.ename;”中使用了下列哪种连接.( )
-
- (单选题)当从A表(有3行数据)和B表(有4行数据)中查找数据,使用语句”select*fromA,B”将得到几行数据.( )
A. 7
B. 1
C. 0
D. 12
正确答案: D
- (单选题)当从A表(有3行数据)和B表(有4行数据)中查找数据,使用语句”select*fromA,B”将得到几行数据.( )
-
- (单选题)查询日期格式的字段时,具体的显示情况不仅与默认的日期格式字符串有关,会受到下列因素的影响.( )。
A. 操作系统
B. 用户帐号
C. NLS_ CHARACTERSET
D. NLS_LANGUAGE
正确答案: C
- (单选题)查询日期格式的字段时,具体的显示情况不仅与默认的日期格式字符串有关,会受到下列因素的影响.( )。
-
- (单选题)有教师表(教师号,教师名,职称,基本工资),其中基本工资的取值与职称有关,实现这个约束的可行方案是( )。
A. 在教师表中定义视图
B. 在教师表中定义存储过程
C. 在教师表中定义插入和删除的触发器
D. 在教师表中定义索引
正确答案: C
- (单选题)有教师表(教师号,教师名,职称,基本工资),其中基本工资的取值与职称有关,实现这个约束的可行方案是( )。
-
- (单选题)下列函数中能返回一个字符串的子串的函数是.( )
A. INSERT
B. SUBSTR
C. LPAD
D. NVL
正确答案: B
- (单选题)下列函数中能返回一个字符串的子串的函数是.( )
-
- (单选题)如果要对GROUP分组查询后的数据进行筛选,应使用的子句是( )
A. WHERE
B. HAVING
C. ORDER BY
D. 以上都不对
正确答案: B
- (单选题)如果要对GROUP分组查询后的数据进行筛选,应使用的子句是( )
实训报告3: 数据操作语句实训
一. 论述题(共1题,100分)
- (论述题) 数据库SQL语言基础编程
实验目的:
掌握数据库查询语句的编写方法
掌握利用查询语言完成基本查询
掌握利用SQL语句完成数据的添加、删除、修改操作
实验内容:
一、简单查询
编写简单查询语句,理解笛卡尔积、选择、投影的概念及其在SQL中的实现
查询员工表与部门表的笛卡尔积
在上述操作的基础上完成连接的选择操作和投影操作
对查询数据进行排序操作
编写查询语句,完成对员工信息、部门情况等的基本查询
查询工资超过2500的员工基本信息
查询月总收入超过2500的员工基本信息
查询工资超过2500的员工的姓名及其所在部门名称
查询所有员工的工资、奖金、总收入,并按部门编号排序
查询全公司的平均工资、最高工资、最低工资和总奖金数。
二、分组查询
编写分组查询语句,理解分组查询的意义
编写分组查询语句,实现分组查询的应用
查询各部门的平均工资和最高月收入和总资金数
查询部门号大于10且平均工资大于1500的部门名称、部门平均工资和部门人数
三、增删改语句
添加数据
在部门表中添加一个部门,编号为50,名称为 TRAIN 地点在 LOUDI
修改数据
将刚才添加了部门的编号修改为80
删除数据
删除刚才添加了部门
解答参考
--实验内容:
--一、简单查询
--编写简单查询语句,理解笛卡尔积、选择、投影的概念及其在SQL中的实现
-- 查询员工表与部门表的笛卡尔积
SELECT *
FROM dept,emp;
-- 在上述操作的基础上完成连接的选择操作和投影操作
--选择操作
SELECT *
FROM dept,emp
WHERE dept.deptno = emp.deptno;
--投影操作
SELECT dname,ename
FROM dept,emp
WHERE DEPT.DEPTNO = EMP.DEPTNO;
-- 对查询数据进行排序操作
SELECT dname,ename
FROM dept,emp
WHERE dept.deptno = emp.deptno
ORDER BY ename desc;
--不写默认升序升序 desc降序
--ORDER BY排序的意思
--编写查询语句,完成对员工信息、部门情况等的基本查询
-- 查询工资超过2500的员工基本信息
SELECT empno,
ename,
sal,
comm,
hiredate,
deptno
FROM emp
WHERE sal>2500;
-- 查询月总收入超过2500的员工基本信息
SELECT empno,
ename,
sal,
comm,
(nvl(sal,0)+nvl(comm,0)) incoming,
hiredate,
deptno
FROM emp
WHERE (nvl(sal,0)+nvl(comm,0))>2500;
-- 查询工资超过2500的员工的姓名及其所在部门名称
SELECT ename,
sal,
dname
FROM emp,dept
WHERE nvl(sal,0)>2500 AND dept.deptno = emp.deptno;
-- 查询所有员工的工资、奖金、总收入,并按部门编号排序
SELECT ename,
sal,
comm,
(nvl(sal,0)+nvl(comm,0)) incoming,
deptno
FROM emp
ORDER BY deptno asc;
-- 查询全公司的平均工资、最高工资、最低工资和总奖金数。
SELECT avg(sal) avg_Sal,
max(sal) max_Sal,
min(sal) min_Sal,
sum(sal) sum_Sal
FROM emp;
--二、分组查询
--编写分组查询语句,理解分组查询的意义
--编写分组查询语句,实现分组查询的应用
--查询各部门的平均工资和最高月收入和总资金数
SELECT min(dname) dname,
avg(sal) avg_Sal,
max(nvl(sal,0)+nvl(comm,0)) max_incoming,
sum(comm) sum_comm
FROM emp,dept
WHERE emp.deptno = dept.deptno
GROUP BY emp.deptno;
--查询部门号大于10且平均工资大于1500的部门名称、部门平均工资和部门人数
SELECT min(dname) dname,
avg(sal) avg_Sal,
count(empno) emp_count
FROM emp,dept
WHERE emp.deptno > 10 AND emp.deptno = dept.deptno
GROUP BY emp.deptno
HAVING avg(sal) > 1500;
--三、增删改语句
--添加数据
--在部门表中添加一个部门,编号为50,名称为 TRAIN 地点在 LOUDI
INSERT INTO dept(loc,dname,deptno)
VALUES('LOUDI','TRAIN',50);
INSERT INTO dept
VALUES(50,'TRAIN','LOUDI');
--以上两种插入数据方式均可
--修改数据
--将刚才添加了部门的编号修改为80
UPDATE dept
SET deptno = 80
WHERE deptno = 50;
--删除数据
--删除刚才添加了部门
DELETE FROM dept
WHERE deptno = 80;
实训报告4:管理表实训
一. 论述题(共1题,100分)
- (论述题) 实训四 管理表 DDL
实训目的:
掌握创建表、修改表、删除表的方法
掌握创建主键约束、外键约束、用户自定义约束的方法
掌握创建查询表的方法及使用截断表的方法
理解约束在数据库中的作用
实训内容:
一、创建表
创建图书馆管理系统所涉及的表
创建产品销售系统所涉及的表
图书表book(bid,bname,price,qty)
书库表lib(lid,lname,address)
读者表reader(rid,rname,dept)
借阅表loan(bid,rid,loanDate)
二、修改表
1、为各表创建约束
DBMS自动实现数据的完整性—借助于约束的作用:保证数据库中永久数据的正确性(主键唯一,不能引用不存在的对象,满足用户定义的条件)
创建主键约束(为图书表、读者表、借阅表创建主键)
主键:唯一标识,该字段的值必须与别的实体必须是不一样的
由dbms保证数据的正确性
创建外键约束(为借阅表创建外键)
创建用户自定义约束(指定图书表中价格必须为正值)
2、对各表进行字段调整操作
添加新字段
在图书表中添加“是否热门”字段
修改字段类型
修改图书表中书名字段为变长字符串
删除不用的字段
删除图书表中“是否热门”字段
三、删除表
删除无关联表
删除包含外键引用的表
四、创建查询表
创建所有昂贵书籍表
五、对借阅情况表进行截断操作
delete * from loan
dml 日志多
ddl 日志少
truncate loan;
select * from book where bid in(
select bid
from book
group by bid
having count(bid)>1);
解答参考
--1. (论述题) 实训四 管理表 DDL
--实训目的:
--掌握创建表、修改表、删除表的方法
--掌握创建主键约束、外键约束、用户自定义约束的方法
--掌握创建查询表的方法及使用截断表的方法
--理解约束在数据库中的作用
--实训内容:
--一、创建表
--创建图书馆管理系统所涉及的表
--创建产品销售系统所涉及的表
--图书表book(bid,bname,price,qty)
--书库表lib(lid,lname,address)
--读者表reader(rid,rname,dept)
--借阅表loan(bid,rid,loanDate)
create table bookSurface(
bid char(20) NOT NULL Primary Key,
bname char(20) NOT NULL,
price int NOT NULL,
qty char(20)
)
create table libSurface(
lid char(20) NOT NULL ,
lname char(20) NOT NULL,
address char(40) NOT NULL
)
create table readerSurface(
rid char(20) NOT NULL,
rname char(20) NOT NULL,
dept char(30) NOT NULL
)
create table loanSurface(
bid char(20) NOT NULL,
rid char(20) NOT NULL,
loanDate char(20) NOT NULL
)
--二、修改表
--1、为各表创建约束
--DBMS自动实现数据的完整性---借助于约束的作用:保证数据库中永久数据的正确性(主键唯一,不能引用不存在的对象,满足用户定义的条件)
--创建主键约束(为图书表、读者表、借阅表创建主键)
--主键:唯一标识,该字段的值必须与别的实体必须是不一样的
--由dbms保证数据的正确性
alter table libSURFACE add primary key(lid);
alter table readerSURFACE add primary key(rid);
alter table loanSURFACE add primary key(bid);
alter table loanSURFACE drop primary key;
--创建外键约束(为借阅表创建外键)
alter table loanSURFACE add constraint book_FK foreign key(bid) references bookSurface(bid);
alter table loanSURFACE add constraint book_FK2 foreign key(rid) references readerSurface(rid);
--创建用户自定义约束(指定图书表中价格必须为正值)
alter table bookSurface add constraint ck_booksSurface Check (price > 0);
--2、对各表进行字段调整操作
--添加新字段
--在图书表中添加“是否热门”字段
alter table bookSurface add (popular varchar(30) default '是否热门' not null);
--修改字段类型
alter table bookSurface modify (popular varchar(30) default 'IsPopular');
--修改图书表中书名字段为变长字符串
alter table bookSurface
modify (bname varchar(30));
alter table bookSurface
modify (bid char(10));
alter table bookSurface
modify (bname varchar(20));
--删除不用的字段
--删除图书表中“是否热门”字段
alter table bookSurface
drop column popular;
--三、删除表
--删除无关联表
--删除包含外键引用的表
drop table bookSurface cascade constraints;
drop table readerSURFACE cascade constraints;
--四、创建查询表
--创建所有昂贵书籍表
create table expensivebook
as
select *
from bookSurface
where price>300;
--五、对借阅情况表进行截断操作
delete * from loan
dml 日志多
ddl 日志少
truncate loan;
select * from book where bid in(
select bid
from book
group by bid
having count(bid)>1);
实训报告5:权限管理实训
一. 论述题(共1题,100分)
- (论述题) 撰写权限管理的实训报告
实训5 安全管理
实训目的:
1、理解用户与模式的概念,掌握oracle中用户管理的基本方法
2、理解系统权限、对象权限的概念,掌握分配权限的方法
3、理解角色的概念,掌握角色的应用方法
实训内容:
一、用户管理与应用
1、查看用户与模式
2、创建用户
3、给予新用户基本权限 create session , create any table
4、调整用户的密码、锁定状态、配额等
5、删除用户!!
二、权限管理与应用
系统权限system privilege
对象权限object privilege 多 on objectName
1、授予或回收系统权限
2、授予或回收对象权限
3、转交管理权限或收回管理权限(权限传递)
三、角色管理与应用
role 一系列权限的命名集合,目的是简化权限管理的复杂性
1、创建角色
2、将各类权限放入角色
3、将角色授予某用户
解答参考
一. 论述题(共1题,100分)
1. (论述题) 撰写权限管理的实训报告
实训5 安全管理
实训目的:
1、理解用户与模式的概念,掌握oracle中用户管理的基本方法
2、理解系统权限、对象权限的概念,掌握分配权限的方法
3、理解角色的概念,掌握角色的应用方法
实训内容:
一、用户管理与应用
1、查看用户与模式
select * from dba_users;
select * from all_users;
select * from user_users;
select * from user_sys_privs;
2、创建用户
create user u1 identified by "1234";
3、给予新用户基本权限 create session , create any table
grant connect,resource to u1;
4、调整用户的密码、锁定状态、配额等
调整密码:
alter user u1 identified by "newPassWord";
锁定状态:
alter user u1 account lock;
alter user u1 account unlock;
配额:
alter user test_quota quota 100M on u1;
alter user test_quota quota unlimited on u1;
5、删除用户!!
drop user u1;
二、权限管理与应用
系统权限system privilege
对象权限object privilege 多 on objectName
1、授予或回收系统权限
grant create session to u1;
grant create table to u1;
grant unlimited tablespace to u1;
revoke create session from u1;
revoke create table from u1;
revoke unlimited tablespace from u1;
2、授予或回收对象权限
grant object_privilege on object to u1;
revoke privilege on object from u1;
3、转交管理权限或收回管理权限(权限传递)
grant alter any table to u1 with admin option;
三、角色管理与应用
role 一系列权限的命名集合,目的是简化权限管理的复杂性
1、创建角色
create role newRole;
2、将各类权限放入角色
grant privilege to newRole;
3、将角色授予某用户
将角色授予用户u1:
grant newRole to u1;
收回角色:
revoke newRole from u1;