orcale课程设计实训报告_第1页
orcale课程设计实训报告_第2页
orcale课程设计实训报告_第3页
orcale课程设计实训报告_第4页
orcale课程设计实训报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、保定职业技术学院课程设计报告系计算机信息工程系专业软件开发班级0901姓名学号0401题目指导教师完成时间2010年12月12日指导教师情况姓名技术职称单位指导教师评语:成绩:指导教师签字:年 月 日内容摘要1第一章 绪论2第二章 功能实现2实训七:PL/SQL编程2实训八:存储过程和触发器6实训九:序列、同义词 、程序包11实训十:oracle数据库安全管理14实训十一:数据库的备份和恢复17后记21 内容摘要Oracle是当今最大的数据库公司Oracle(甲骨文)的数据库产品。它的前身是创建于1977年的,位于美国加州的Relational Software公司。该公司与1979年推出了世

2、界上第一个基于SQL标准的关系数据库管理系统Oracle 1 ,同年又推出产品Oracle 2它采用标准的SQL(结构化查询语言),支持多种数据类型,并面向对象。支持UNIX、LINUX、Window NT/2000、OS/2等操作系统平台,支持客户机/服务器工作模式和Web工作模式。数据库是存放数据、表、视图、存储过程等数据库对象的容器。因此,操作数据库对象应先从操作数据库开始。本章介绍数据库操作的基本知识,包括数据库的创建、查看、修改、分离、附加和删除等操作。关键字:存储过程 触发器 视图 游标第一章 绪论Oracle是目前最流行的关系数据库管理系统,被越来越多的用户在信息系统管理、企业数

3、据处理、Internet、电子商务网站等领域作为应用数据的后台处理系统。Oracle从基本概念和实际应用出发,由浅入深、循序渐进地讲述Oracle数据库基础知识,数据库创建,表的操作,数据查询及PL/SQL编程技术,索引和视图的应用,存储过程和触发器的应用,数据库安全管理,备份与恢复等内容。Oracle系统为数据库管理员提供了多种工具来完成数据库的管理工作,既可以使用命令行为创建和删除数据库,也可以通过数据库配置助手DBCA工具来创建和删除数据库。前者适合专业人员使用;后者提供图形化界面,具有操作导航功能。第二章 功能实现实训七:PL/SQL编程1、创建函数“get_total_num”,根据

4、专业代码统计本专业的总人数。创建函数“get_num_percent”,根据不同班级,显示该班级学生人数在本专业学生总人数中的比例。创建函数“get_total_num”create or replace function get_total_num(v_专业代码 班级表.专业代码%type)return numberas v_总人数 班级表.班级人数%type;begin select sum(班级人数) into v_总人数 from 班级表 where 专业代码=v_专业代码; return v_总人数;end get_total_num;创建函数“get_num_percent”cre

5、ate or replace function get_num_percent(v_班级名称 班级表.班级名称%type)return numberas v_班级人数 班级表.班级人数%type; v_总人数 班级表.班级人数%type; v_专业代码 班级表.专业代码%type; v_percent number;begin select sum(班级人数),专业代码 into v_班级人数,v_专业代码 from 班级表 where 班级名称=v_班级名称; select sum(班级人数) into v_总人数 from 班级表 where 专业代码=v_专业代码; v_percent:

6、=v_班级人数/v_总人数; return v_percent;end get_num_percent;2、使用游标调用get_num_percent函数.declare cursor c_班级 is select 班级名称 from 班级表 order by 班级代码; v_percent number(9,2); v_班级名称 班级表.班级名称%type;begin open c_班级; loop fetch c_班级 into v_班级名称; exit when c_班级%notfound; v_percent:=get_num_percent(v_班级名称); dbms_output.

7、put_line(v_班级名称|人数占本专业人数的比例为:|v_percent);end loop;close c_班级;end;(该功能未实现)3、使用游标调用get_total_num函数.declarecursor c_系部 is select * from 系部表 order by 系部代码;cursor c_专业(v_系部代码 系部表.系部代码%type) is select 专业名称,专业代码 from 专业表 where 系部代码=v_系部代码 order by 专业代码;v_系部 系部表%rowtype;v_专业人数 班级表.班级人数%type;v_总人数 班级表.班级人数%t

8、ype;v_专业名称 专业表.专业名称%type;v_专业代码 专业表.专业代码%type;beginopen c_系部;loopfetch c_系部 into v_系部;exit when c_系部%notfound;dbms_output.put_line(系部:|v_系部.系部名称);v_总人数:=0;open c_专业(v_系部.系部代码);loopfetch c_专业 into v_专业名称,v_专业代码;exit when c_专业%notfound;v_专业人数:=get_total_num(v_专业代码);dbms_output.put_line(v_专业名称|专业总人数为:|

9、v_专业人数);v_总人数:=v_总人数+v_专业人数;end loop;close c_专业;dbms_output.put_line(总人数为:|v_总人数);end loop;close c_系部;end;实训八:存储过程和触发器1、在数据库中创建“xs_proc”存储过程,按输入的学号查询相应的学生姓名和班级信息,如果没有该学生,进行异常处理。创建完成后,执行该存储过程。创建“xs_proc”存储过程create or replace procedure xs_proc(xh in 学生表.学号%type, xm out 学生表.姓名%type, bjdm out 学生表.班级代码%t

10、ype)asbeginselect 姓名,班级代码 into xm,bjdm from 学生表where 学号=xh;dbms_output.put_line(姓名:|xm);dbms_output.put_line(班级代码:|bjdm);exceptionwhen no_data_found then dbms_output.put_line(不存在该学生!|xh);end;执行xs_proc存储过程declare v_xm varchar2(10);v_bjdm varchar2(20);beginxs_proc(1,v_xm,v_bjdm);end;2、创建教师副表,用来存放从教师表中

11、删除的数据记录.创建触发器trig_del_js,实现该功能.创建教师副表 create table 教师副表(教师编号 varchar2(20 byte) not null, 教师姓名 varchar2 (10 byte) not null, 性别 varchar2(10 byte) not null, 出生日期 date, 学历 varchar2(20 byte) not null, 职称 varchar2(10 byte) not null, 系部代码 varchar2(10 byte) not null, 备注 varchar2(30 byte) );创建触发器trig_del_jsc

12、reate trigger trig_del_jsafter delete on 教师表for each rowbegininsert into 教师副表values(:old.教师编号,:old.教师姓名,:old.性别,:old.出生日期,:old.学历,:old.职称,:old.系部代码,:old.备注);end del_xs;delete 教师表 where 教师姓名=刘辉;创建触发器,使得对“教师表”的插入、删除、更新操作可以出发对“教师任课表”的插入、删除、更新。创建触发器“tri_stu_ins”create or replace trigger trig_js_insbefor

13、e insert on 教师表for each rowbegininsert into 教师任课表(教师编号)values(:new.教师编号);end;insert into 教师表(教师编号,教师姓名,性别,出生日期,学历,职称,系部代码,备注)values (6,张强,女,03-2月-1972,本科,讲师,04,);创建触发器“tri_stu_del”create or replace trigger trig_js_delbefore delete on 教师表for each rowbegindelete 教师任课表 where 教师编号=:old.教师编号;end;delete 教

14、师表 where 教师姓名=张强;创建触发器“tri_stu_upd”create or replace trigger trig_js_updbefore update on 教师表for each rowbeginupdate 教师任课表 set 教师编号=:old.教师编号;end;update 教师表set 教师姓名=刘海军where 教师编号=;实训九:序列、同义词 、程序包1.创建程序包 将统计学生表中不同性别的人数的函数和过程写到包中(1)以system用户登录数据库(2)创建程序包头 stud_packagecreate or replace package stud_pack

15、ageasfunction f_count(in_zhic in 教师表.职称%type) return number;procedure p_count(in_zhic in 教师表.职称%type,out_num out number);end stud_package;(3)创建程序包体create or replace package body stud_packageasfunction f_count(in_zhic in 教师表.职称%type)return numberasout_num number;beginif in_zhic=讲师 thenselect count(职称

16、) into out_numfrom 教师表where 职称=讲师;elseselect count(职称) into out_numfrom 教师表where 职称=副教授;end if;return(out_num);end;procedure p_count(in_zhic in 教师表.职称%type,out_num out number)asbeginif in_zhic=讲师 thenselect count(职称) into out_numfrom 教师表where 职称=讲师;else select count(职称) into out_numfrom 教师表where 职称=

17、副教授;end if;dbms_output.put_line(in_zhic|人数为:|to_char(out_num);end;end stud_package;(4)调用程序包中的函数,统计并输出副教授的人数set serveroutput ondeclarewoman_num number;beginwoman_num:=stud_package.f_count(副教授);end;(具体结果为什么不显示我没找到原因,我认为是function与procedure的区别)(5)调用程序包中的函数,统计并输出讲师的人数set serveroutput ondeclareman_num num

18、ber;beginstud_package.p_count(讲师,man_num);end;实训十:oracle数据库安全管理(1) 在“Student”数据库中,创建一个用户stu_user2,并为该用户分配权限. 以SYSTEM用户登录“Student”数据库conn system/aaa 创建用户stu_user2,口令设置为:aaa,默认表空间为system,临时表空间为TEMP,对表空间没有配额.代码如下:create user stu_user2identified by aaadefault tablespace systemtemporary tablespace tempQU

19、OTA unlimited on system;创建一个用户概要文件stu_profile,其中资源及口令管理参数设置如下:该用户最多可以建立5个并发的回话连接.连接的最大空闲时间为10分钟.允许用户连接登录数据库失败次数为3.如果用户帐户被锁定,设置被锁定的天数为20.create profile stu_profile limitsessions_per_user 5idle_time 10failed_login_attempts 3password_lock_time 20;将Stu_proflie概要文件分配给用户stu_user2.代码如下:alter user stu_user2

20、 profile stu_profile;授予用户stu_user2连接数据库的系统权限.代码如下:grant create session to stu_user2;将对象SYSTEM成绩表的SELECT权限授予用户stu_user2.代码如下grant select on system.成绩表 to stu_user2;以用户stu_user2登录,查询SYSTEM.成绩表.代码如下:conn stu_use2/aaa;select * from SYSTEM.成绩表;实训十一:数据库的备份和恢复1使用EXPDP命令导出表:使用EXPDP命令导出SYSTEM方案的学生表和班级表(1)在SQ

21、L*PLUS环境下,建立转储文件目录,给用户授权.代码如下:conn system/aaa;create directory dump_dir1 as e:dump;grant read,write on directory dump_dir1 to scott;启动DOS命令,进入命令提示符下.导出学生表和班级表,转储文件名为table1.dmp,日志文件名为table1.log。代码如下:expdp system/aaa directory=dump_dir_dir dumpfile=talbe,dmp tables=学生表.班级表logfile=tablog1.log;使用EXPDP命令

22、导出数据库.使用EXPDP命令导出当前使用的数据库Student,转储文件名为student1.dmp.闪回设置:以命令方式连接数据库。代码如下:Conn system/aaa as sysdba;查看当前数据库连接状态是否为“ARCHIVELOG”模式。代码如下:SELECT DBID,NAME,LOG_MODE FROM V$DATABASE;如果为“NOARCHIVELOG”模式,则应该关闭数据库后,以“MOUNT”方式打开数据库,改变当前模式。代码如下:SHUTDOWN IMMEDIATE;STARTUP MOUNT;ALTER DATABASE ARCHIVELOG;启用FASHBACK

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论