《数据库原理及应用》实验指导书Word文档下载推荐.docx
- 文档编号:22981891
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:14
- 大小:20.02KB
《数据库原理及应用》实验指导书Word文档下载推荐.docx
《《数据库原理及应用》实验指导书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《《数据库原理及应用》实验指导书Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
(3)客户每次入住的客房号和入住时间不能为空。
(4)各种类型客房的定价不得低于100元,也不得高于2000元。
(5)机票的状态只能有三种:
0:
实验二数据库的查询、更新
掌握数据库的查询、更新的方法
使用Oracle11g实现数据库的查询、更新操作
1、试用SQL完成下面10个查询操作。
(1)查询各客户的姓名和工作单位。
(2)查询“张桦”客户的身份证号和年龄。
(3)查询标准房的价格。
(4)查询“李明”先生所住的客房号码及入住的时间。
(5)查询“张桦”先生所订客房的价格。
(6)查询还有哪些机票已经出票但未被取走。
(7)查询被投诉的雇员的姓名及次数。
(8)查询各雇员姓名及所负责打扫的客房号。
(9)查询“张庭”雇员负责打扫的客房的号码。
(10)查询各航空公司的名称和电话。
2、试用SQL完成下面6个查询操作。
(1)查询空标准房的房间号。
(2)查询身份证号为“310222************”客户最近入住酒店的日期是什么,住了几天。
(3)查询空双人房的数目。
(4)哪些机票已出票,但还未被取走,查询订购这些机票的房客姓名和客房号,以便及时通知他们来取票。
(5)查询从未订过机票的客户的数目。
(6)查询总共从东方航空公司(EASTERNAIRLINES)订购了多少张机票。
3、试用SQL完成如下的更新操作
(1)酒店新进了一名打扫客房的雇员,其雇员号为“E110”,姓名是“张新”,雇佣日期为“7/20/2007”,试将该雇员的信息插入相应的表。
(2)身份证号为“310222************”,姓名是“张明”,年龄为35岁的男客户到酒店订了一间客房号为“1100”的客房,请对相应的表进行相应的操作。
(3)身份证号为“310222************”的客户退房了,请对相应的表进行相应的操作。
(4)将“E101”雇员的投诉次数加1。
(5)酒店欲解雇被投诉次数大于5次的雇员,试对相应的表进行相应的操作。
实验三视图、存储过程的使用
掌握数据库视图、存储过程的创建、修改和删除的方法
使用Oracle11g实现数据库视图、存储过程的创建和使用
计算机,Oracle11g
该实验用学生借书数据库XSBOOK,学生借书数据库相关信息如下:
数据库名:
XSBOOK
数据文件名:
XSBOOK
日志文件名:
XSBOOK_Log
图书借阅系统的数据库为XSBOOK,该数据库主要由学生(XS)、图书(BOOK)、借阅(JY)3个表构成,依托3个基本表创建视图和存储过程。
表1学生信息表(XS)表结构
字段名
类型与宽度
是否主码
是否允许空值
说明
借书证号
CHAR(8)
√
×
姓名
VARCHAR2(8)
专业
VARCHAR2(20)
性别
CHAR
(2)
借书量
INT
默认值为0
表2学生信息表(XS)样本数据
姓名
专业名
性别
借书量
10000001
王娟
计算机
女
4
10000002
李宏
男
3
10000003
朱小波
20000001
李小丽
英语
2
20000002
吴涛
表3图书信息表(BOOK)结构
说明
ISBN
CHAR(16)
书名
VARCHAR2(30)
作者
出版社
价格
FLOAT
复本量
当对书进行插入、删除时,复本量应等于库存量
库存量
表4图书信息表(BOOK)样本数据
书名
作者
出版社
7-111-06359-7
Web站点安全
刘宗田
机械工业出版社
17
5
7-113-04908-7
ASP.NET程序设计
陈惠贞
55
10
9
7-115-07715-0
ASP&
WEB数据库
王国荣
人民邮电出版社
59
7-115-10162-0
计算机网络教程
谢希仁
28
12
7-302-03035-9
C语言程序设计
谭浩强
清华大学出版社
48
6
7-505-37908-9
WEB程序设计
吉根林
电子工业出版社
25
8
7
表5借阅表(JY)结构
当借一本书时,BOOK的库存量应减1,同时,借书人的借书量应加1;
当还一本书时,BOOK的库存量应加1,同时,借书人的借书量应减1
索书号
CHAR(10)
借书时间
DATE
表6借阅表(JY)样本数据
1100000001
2011-03-01
1100000002
2011-05-10
3100000001
6100000001
2011-09-01
1100000003
2011-03-10
2100000001
2011-03-11
5100000001
5100000002
2011-04-10
5100000003
4100000001
2011-05-19
4100000002
2011-04-19
5100000004
1、视图的创建和使用
(1)把3个基本表联系起来,方便需要3表关联的功能使用。
SQL命令如下:
CREATEVIEWRBL
AS
SELECTXS.借书证号,JY.索书号,JY.ISBN,BOOK.书名,
BOOK.出版社,BOOK.价格,JY.借书时间
FROMXS
INNERJOINJYONXS.借书证号=JY.借书证号
INNERJOINBOOKONBOOK.ISBN=JY.ISBN
(2)功能测试
SELECT*FROMRBL
观察3表关联的字段数据正确性。
2、存储过程的创建和使用
Ø
参数
借书证号(in_ReaderID)、ISBN(in_ISBN)、图书ID(in_BookID)、执行信息(out_str)。
实现功能
根据存储过程的前3个参数,实现读者图书“借阅”。
第4个参数为输出参数,将存储过程的执行情况以字符串形式赋予此参数。
编写思路
(1)根据“借书证号”查询XS表是否存在该读者,如果不存在,则将输出参数out_str赋值为“该读者不存在”并返回0,存储过程结束,表示不能借书。
(2)根据“ISBN”查询BOOK中是否存在该图书,如果不存在,则将输出参数赋值为“该图书不存在”并返回0,存储过程结束,表示不能借书。
(3)根据“借书证号”查询XS表中该读者的借书量。
如果借书量=5,则将输出参数赋值为“读者借书量不能大于5”并返回0,存储过程结束,表示不能借书。
(4)根据“ISBN”查询BOOK表中该图书的库存量。
如果库存量=0,则将输出参数赋值为“图书库存量为0”并返回0,存储过程结束,表示不能借书。
(5)查询JY表中该读者是否已经借阅该图书,如果已经借过,则将输出参数赋值为“读者已经借过该书”并返回0,存储过程结束,表示不能借书。
(6)查询JY表中该索书号是否已经存在,如果存在则将输出参数赋值为“该索书号已存在”并返回0,存储过程结束,表示不能添加借书记录。
(7)使JY表增加一条该读者借书记录;
XS表中该读者的借书量加1;
BOOK表中该图书(对应ISBN)记录的库存量减1。
存储过程结束,将输出参数赋值为“借书成功”并返回1,表示借书成功。
(8)如果存储过程执行过程中遇到错误,则回滚之前进行的操作,并将输出参数赋值为“执行过程中遇到错误”并返回0,表示存储过程执行过程中遇到错误,回滚到执行存储过程前的状态。
实现方法
PL/SQL如下:
CREATEORREPLACEPROCEDUREBook_Borrow
(in_ReaderIDinchar,
in_ISBNinchar,
in_BookIDinchar,
out_stroutchar)
IS
Ct_ReaderNumber(10);
Ct_ISBNNumber(10);
Ct_MaxReaderNumber(10);
Ct_StoreNumber(10);
Ct_HaveReadNumber(10);
Ct_BookIDNumber(10);
Error_NumerNumber(10);
no_resultException;
BEGIN
Error_Numer:
=0;
out_str:
='
'
;
SELECTcount(*)intoCt_ReaderFROMXSWHERE借书证号=in_ReaderID;
IFCt_Reader<
1THEN
BEGIN
='
该读者不存在'
Error_Numer:
=1;
END;
ENDIF;
SELECTcount(*)intoCt_ISBNFROMBOOKWHEREISBN=in_ISBN;
IFCt_ISBN<
该图书不存在'
SELECT借书量intoCt_MaxReaderFROMXSWHERE借书证号=in_ReaderID;
IFCt_MaxReader>
5THEN
读者借书量不能大于5'
SELECT库存量intoCt_StoreFROMBOOKWHEREISBN=in_ISBN;
IFCt_Store=0THEN
图书库存量为0'
SELECTcount(*)intoCt_HaveReadFROMJYWHERE借书证号=in_ReaderIDandISBN=in_ISBN;
IFCt_HaveRead>
0THen
读者已经借过该书'
SELECTcount(*)intoCt_BookIDFROMJYWHERE索书号=in_BookID;
IFCt_BookID>
0THEN
索书号已存在'
IFError_Numer=0THEN
INSERTINTOJYVALUES(in_ReaderID,in_ISBN,in_BookID,sysdate);
UPDATEXSSET借书量=借书量+1WHERE借书证号=in_ReaderID;
UPDATEBOOKSET库存量=库存量-1WHEREISBN=in_ISBN;
借书成功'
IFSQL%NOTFOUNDTHEN
RAISEno_result;
COMMIT;
dbms_output.put_line(out_str);
ELSE
EXCEPTION
WHENno_resultTHEN
DBMS_OUTPUT.PUT_LINE('
执行过程中遇到错误!
);
DBMS_OUTPUT.PUT_LINE(out_str);
ROLLBACK;
WHENOTHERSTHEN
DBMS_OUTPUT.PUT_LINE(SQLCODE||'
---'
||SQLERRM);
END;
功能测试
创建完存储过程Book_Borrow后可以使用PL/SQL语句验证图书借阅是否能够实现:
SELECT借书证号,借书量FROMXSWHERE借书证号='
10000001'
/*查询10000001读者的原借书量*/
SELECTISBN,库存量FROMBOOKWHEREISBN='
7-115-10162-0'
;
/*查询图书的原库存量*/
DECLAREout_strchar(30);
begin
Book_Borrow('
'
5100000007'
out_str);
end;
/*执行存储过程,实现图书借阅*/
/*查询10000001号读者的现有借书量*/
/*查询图书的现有库存量*/
实验四数据库系统的安全性管理
掌握账户的建立,数据库用户权限的分配与回收
使用Oracle11g实现账户的建立,数据库用户权限的分配与回收
1、为阿里巴巴酒店数据库创建以下用户:
用户名:
张敏,王林,李新,王立,王铭,张天
密码:
自行设定
2、作为DBA的你,现在要负责给不同的数据库用户授予不同的权限,各用户可以执行的操作如下:
(1)张敏和王林有权查询酒店客户的个人信息。
(2)李新负责更新酒店客户的个人信息。
(3)王立有权查询各种类型的客房号及所属的类型和定价。
(4)王铭负责更新各类型客房的定价。
(5)张天不仅可以查询航空公司的名称和电话信息,他还有权查询机票信息。
(6)李新有权更新雇员的信息。
试用GRANT语句实现上述要求。
3、由于工作调动,需要收回张天和李新的权限,试用REVOKE语句实现。
4、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库原理及应用 数据库 原理 应用 实验 指导书