1、大型数据库实验报告2实 验 报 告 书课程名称 大型数据库技术所在院系 计通学院计算机系所在班级 学号 姓名 指导教师 实验时段 实验一实验名称:创建数据库,熟悉OEM实验目的:掌握在Oracle 11g中创建数据库的方法;了解Oracle 11g的服务;熟悉OEM的使用。实验内容:使用DBCA创建数据库在开始菜单中找到并运行Database Configuration Assistant,选择创建数据库,依次设置数据库名、口令、数据库文件位置、其他相关参数等,点击完成以创建一个数据库。练习使用OEM管理数据库数据库创建完毕后,先Win+R输入services.msc并运行,打开对应的系统服务
2、,然后在开始菜单中找到Database Control - DatabaseName并运行,跳转至IE浏览器,键入用户名及口令后即可登录并管理数据库。实验小结:这次实验主要是学习创建数据库和熟悉OEM管理数据库,基本上没遇到什么问题。实验二 实验名称: SQLPLUS和SQL DEVELOPER实验目的:掌握SQLPLUS命令的使用;掌握通过SQLPLUS,使用SQL语句访问数据库的方法;了解Oracle 11g的数据字典;掌握使用SQL DEVELOP开发数据库的方法。实验内容练习使用SQLPLUS的命令:show,col,set line,desc,run或/,save,start或,sp
3、ool,help,ed等;创建Members表格:create table Members( Mid varchar2(20) primary key, Mname varchar2(20) not null, Mlevel varchar2(20), Mtel varchar2(20), Maddress varchar2(40);截图:创建Books表格:create table Books( Bid varchar2(20) primary key, Bname varchar2(100) not null, Author varchar2(20), Price number(6,2)
4、default 0.00, Quantity number default 0, Bpress varchar2(50), Bclass varchar2(50);截图:创建Admin表格:create table Admin( Aid varchar2(20) primary key, Bname varchar2(100) not null, Atel varchar2(20), Aaddress varchar2(40);截图:创建Sales表格:create table Sales( Mid varchar2(20), Bid varchar2(20), Aid varchar2(20
5、), Sdate DATE, Scount number, Sprice number(6,2) default 0.00, primary key (Mid,Bid,Aid,Sdate), foreign key (Mid) references members(Mid),foreign key (Bid) references Books(Bid),foreign key (Aid) references Admin(Aid);截图: 实验小结:本次实验主要是练习使用一些SQLPLUS的命令。实验三实验名称:约束、视图、索引、序列、同义词的创建和使用,Oracle安全管理实验目的:掌握创建
6、和使用数据库方案对象约束、视图、索引、序列、同义词的方法;掌握创建数据库用户和角色的方法;掌握向数据库用户和角色授权的方法;掌握Oracle的口令管理方法;掌握Oracle的审计方法。实验内容:为Books表创建一个约束:Price=0创建一个索引p_index,对Books表的Price列建升序索引创建一个视图view_sale,包括的列有:会员名,书名,总本数创建一个序列m_seq,初始值为1,增量为1。CREATE SEQUENCE M_SEQ INCREMENT BY 1 START WITH 1;向Members表中插入一条记录时,Mid的值由序列m_seq产生INSERT INTO
7、 SYSTEM.MEMBERS (MID, MNAME, MLEVEL, MTEL, MADDRESS) VALUES (M_SEQ.nextval , 3, 3, 3, 3);为Books这张表创建一个公用同义词bsyn,sys用户通过该同义词访问Books表创建一个用户user456,密码是Stud_456,通过概要文件限制登录失败不能超过3,登录失败以后手动解锁账户create profile password_user456 limitfailed_login_attempts 3;alter user456 profile prof_user456;创建角色CommonM,授予角色C
8、ommonM查询Books表的权限create role CommonM;grant create session,select any table to CommonM;将角色CommonM授予用户user456grant CommonM to user456 with admin option;对Books表的操作执行审计audit all on books;select username,timestamp,owner,obj_name from dba_audit_trail;实验小结:上次实验建的数据库居然用不了了,又从新建了一个,内容也比较多,很多操作不熟悉,需要多加练习。实验四实
9、验名称:存储过程、函数、触发器、包和游标的创建和使用 实验目的:掌握创建和调用存储过程的方法;掌握创建和调用函数的方法;掌握创建触发器的方法;掌握包的创建和使用方法;掌握游标的创建和使用方法。实验内容:创建一个存储过程,当输入的书号不在Books表中,则插入书籍的书号和书名,当输入的书号在Books表中,输出该书的库存量(库存量能通过参数传递到调用该存储过程的代码块中)create or replacePROCEDURE Insert_Books ( book_id in varchar2, book_name in varchar2, sum out number)as count_book
10、 number;BEGIN SELECT count(*) INTO count_book from books where bid=book_id; if count_book=0 then insert into books (bid,bname ) values (book_id, book_name ); else SELECT quantity into sum from books where bid=book_id; end if;END ;创建一个统计某本书的销售量的函数create or replace FUNCTION COUNT_SALES ( book_id IN VA
11、RCHAR2) RETURN NUMBER AS v_sum NUMBER; BEGIN SELECT sum(scount) INTO v_sum from Sales where bid=book_id; dbms_output.put_line(图书编号| book_id|目前销售量为|v_sum); RETURN v_sum; END COUNT_SALES;创建一个包,包含上述存储过程和函数,并通过包调用存储过程和函数create or replacePACKAGE packasprocedure Insert_Books ( book_id in varchar2, book_na
12、me in varchar2, sum out number); FUNCTION COUNT_SALES ( book_id IN VARCHAR2) RETURN NUMBER; end pack;create or replacePACKAGE body packasPROCEDURE Insert_Books ( book_id in varchar2, book_name in varchar2, sum out number)as count_book number;BEGIN SELECT count(*) INTO count_book from books where bid
13、=book_id; if count_book=0 then insert into books (bid,bname ) values (book_id, book_name ); else SELECT quantity into sum from books where bid=book_id; end if;END insert_books;FUNCTION COUNT_SALES ( book_id IN VARCHAR2) RETURN NUMBERAS v_sum NUMBER;BEGIN SELECT sum(scount) INTO v_sum from Sales wher
14、e bid=book_id; dbms_output.put_line(图书编号| book_id|目前销售量为|v_sum); RETURN v_sum;END COUNT_SALES;end pack; select pack.count_sales(1) from sales;创建一个触发器,当删除一个Admin管理员时,删除该管理员的销售记录create or replacetrigger delete_adminafter delete on ADMINfor each rowbegindelete from sales where :old.aid= aid;END ;实验小结:本次实验碰到了很多错误,后来问同学才得以解决,但是具体为什么是改那,至今也不是很清楚,以后需要多多学习才行。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1