大型数据库实验报告2.docx

上传人:b****6 文档编号:6814342 上传时间:2023-01-10 格式:DOCX 页数:19 大小:1.13MB
下载 相关 举报
大型数据库实验报告2.docx_第1页
第1页 / 共19页
大型数据库实验报告2.docx_第2页
第2页 / 共19页
大型数据库实验报告2.docx_第3页
第3页 / 共19页
大型数据库实验报告2.docx_第4页
第4页 / 共19页
大型数据库实验报告2.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

大型数据库实验报告2.docx

《大型数据库实验报告2.docx》由会员分享,可在线阅读,更多相关《大型数据库实验报告2.docx(19页珍藏版)》请在冰豆网上搜索。

大型数据库实验报告2.docx

大型数据库实验报告2

 

实验报告书

 

课程名称大型数据库技术

所在院系计通学院计算机系

所在班级

学号

姓名

指导教师

实验时段

 

实验一

实验名称:

创建数据库,熟悉OEM

实验目的:

掌握在Oracle11g中创建数据库的方法;

了解Oracle11g的服务;

熟悉OEM的使用。

实验内容:

使用DBCA创建数据库

在开始菜单中找到并运行DatabaseConfigurationAssistant,选择创建数据库,依次设置数据库名、口令、数据库文件位置、其他相关参数等,点击完成以创建一个数据库。

练习使用OEM管理数据库

数据库创建完毕后,先Win+R输入services.msc并运行,打开对应的系统服务,然后在开始菜单中找到DatabaseControl-@DatabaseName并运行,跳转至IE浏览器,键入用户名及口令后即可登录并管理数据库。

实验小结:

这次实验主要是学习创建数据库和熟悉OEM管理数据库,基本上没遇到什么问题。

实验二

实验名称:

SQLPLUS和SQLDEVELOPER

实验目的:

掌握SQLPLUS命令的使用;

掌握通过SQLPLUS,使用SQL语句访问数据库的方法;

了解Oracle11g的数据字典;

掌握使用SQLDEVELOP开发数据库的方法。

实验内容

练习使用SQLPLUS的命令:

show,col,setline,desc,run或/,save,start或@,spool,help,ed等;

 

创建Members表格:

createtableMembers(

Midvarchar2(20)primarykey,

Mnamevarchar2(20)notnull,

Mlevelvarchar2(20),

Mtelvarchar2(20),

Maddressvarchar2(40)

);

截图:

创建Books表格:

createtableBooks(

Bidvarchar2(20)primarykey,

Bnamevarchar2(100)notnull,

Authorvarchar2(20),

Pricenumber(6,2)default0.00,

Quantitynumberdefault0,

Bpressvarchar2(50),

Bclassvarchar2(50)

);

截图:

 

创建Admin表格:

createtableAdmin(

Aidvarchar2(20)primarykey,

Bnamevarchar2(100)notnull,

Atelvarchar2(20),

Aaddressvarchar2(40)

);

截图:

 

创建Sales表格:

createtableSales(

Midvarchar2(20),

Bidvarchar2(20),

Aidvarchar2(20),

SdateDATE,

Scountnumber,

Spricenumber(6,2)default0.00,

primarykey(Mid,Bid,Aid,Sdate),

foreignkey(Mid)referencesmembers(Mid),

foreignkey(Bid)referencesBooks(Bid),

foreignkey(Aid)referencesAdmin(Aid)

);

截图:

 

 

实验小结:

本次实验主要是练习使用一些SQLPLUS的命令。

实验三

实验名称:

约束、视图、索引、序列、同义词的创建和使用,Oracle安全管理

实验目的:

掌握创建和使用数据库方案对象约束、视图、索引、序列、同义词的方法;

掌握创建数据库用户和角色的方法;

掌握向数据库用户和角色授权的方法;

掌握Oracle的口令管理方法;

掌握Oracle的审计方法。

实验内容:

为Books表创建一个约束:

Price>=0

创建一个索引p_index,对Books表的Price列建升序索引

创建一个视图view_sale,包括的列有:

会员名,书名,总本数

创建一个序列m_seq,初始值为1,增量为1。

CREATESEQUENCEM_SEQINCREMENTBY1STARTWITH1;

向Members表中插入一条记录时,Mid的值由序列m_seq产生

INSERTINTO"SYSTEM"."MEMBERS"(MID,MNAME,MLEVEL,MTEL,MADDRESS)VALUES(M_SEQ.nextval,'3','3','3','3');

为Books这张表创建一个公用同义词bsyn,sys用户通过该同义词访问Books表

创建一个用户user456,密码是Stud_456,通过概要文件限制登录失败不能超过3,登录失败以后手动解锁账户

createprofilepassword_user456limit

failed_login_attempts3;

alteruser456profileprof_user456;

创建角色CommonM,授予角色CommonM查询Books表的权限

createroleCommonM;

grantcreatesession,selectanytabletoCommonM;

将角色CommonM授予用户user456

grantCommonMtouser456withadminoption;

对Books表的操作执行审计

auditallonbooks;

selectusername,timestamp,owner,obj_namefromdba_audit_trail;

实验小结:

上次实验建的数据库居然用不了了,又从新建了一个,内容也比较多,很多操作不熟悉,需要多加练习。

实验四

实验名称:

存储过程、函数、触发器、包和游标的创建和使用

实验目的:

掌握创建和调用存储过程的方法;

掌握创建和调用函数的方法;

掌握创建触发器的方法;

掌握包的创建和使用方法;

掌握游标的创建和使用方法。

实验内容:

创建一个存储过程,当输入的书号不在Books表中,则插入书籍的书号和书名,当输入的书号在Books表中,输出该书的库存量(库存量能通过参数传递到调用该存储过程的代码块中)

 

createorreplace

PROCEDUREInsert_Books

book_idinvarchar2,

book_nameinvarchar2,

sumoutnumber)

as

count_booknumber;

BEGIN

SELECTcount(*)INTOcount_bookfrombookswherebid=book_id;

ifcount_book=0then

insertintobooks

(bid,bname

)values

(book_id,book_name

);

else

SELECTquantityintosumfrombookswherebid=book_id;

endif;

END;

 

创建一个统计某本书的销售量的函数

createorreplace

FUNCTIONCOUNT_SALES

book_idINVARCHAR2)

RETURNNUMBER

AS

v_sumNUMBER;

BEGIN

SELECTsum(scount)INTOv_sumfromSaleswherebid=book_id;

dbms_output.put_line('图书编号'||book_id||'目前销售量为'||v_sum);

RETURNv_sum;

ENDCOUNT_SALES;

创建一个包,包含上述存储过程和函数,并通过包调用存储过程和函数

createorreplace

PACKAGEpack

as

procedureInsert_Books

book_idinvarchar2,

book_nameinvarchar2,

sumoutnumber);

FUNCTIONCOUNT_SALES

book_idINVARCHAR2)

RETURNNUMBER;

endpack;

createorreplace

PACKAGEbodypack

as

PROCEDUREInsert_Books

book_idinvarchar2,

book_nameinvarchar2,

sumoutnumber)

as

count_booknumber;

BEGIN

SELECTcount(*)INTOcount_bookfrombookswherebid=book_id;

ifcount_book=0then

insertintobooks

(bid,bname

)values

(book_id,book_name

);

else

SELECTquantityintosumfrombookswherebid=book_id;

endif;

ENDinsert_books;

FUNCTIONCOUNT_SALES

book_idINVARCHAR2)

RETURNNUMBER

AS

v_sumNUMBER;

BEGIN

SELECTsum(scount)INTOv_sumfromSaleswherebid=book_id;

dbms_output.put_line('图书编号'||book_id||'目前销售量为'||v_sum);

RETURNv_sum;

ENDCOUNT_SALES;

endpack;

selectpack.count_sales('1')fromsales;

创建一个触发器,当删除一个Admin管理员时,删除该管理员的销售记录

createorreplace

triggerdelete_admin

afterdeleteonADMIN

foreachrow

begin

deletefromsaleswhere:

old.aid=aid;

END;

 

实验小结:

本次实验碰到了很多错误,后来问同学才得以解决,但是具体为什么是改那,至今也不是很清楚,以后需要多多学习才行。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1