第一篇:Oracle数据库 图书管理系统实验报告
图书管理系统(Oracle)
1、创建表空间student_library
2、(1)创建表Administrator
(2)创建表library
(3)创建表student
(4)创建表lent_library
(5)创建表booktype
3、(1)创建表空间student_library
create tablespace student_library datafile 'C:oracleproduct10.2.0oradataorclstudent_library' size 100M autoextend on;
(2)创建表Administrator create table Administrator(AdministratorID number(20)primary key,AdministratorName varchar2(25),sex varchar2(5),beizhu varchar2(30),bookID varchar2(20), foreign key(bookID)references library(bookID))tablespace student_library;
向Administrator表插入数据 insert into Administrator values(100421101,'张三','男',' ',100421)insert into Administrator values(100421102,'李四','女',' ',100422)insert into Administrator values(100421103,'王五','男',' ',100423)对Administrator表删除数据
delete from Administrator where AdministratorID=100421103 ——删除Administrator表中管理员编号为‘100421103’的一行数据 对Administrator表查询数据
select * from Administrator order by AdministratorID ——按照管理员的ID号对Administrator表进行排列 向Administrator表修改数据
update Administrator set AdministratorName=‘王明’where AdministratorID=100421101 ——对Administrator表中管理员编号为‘100421101’的姓名改为“王明” update Administrator set sex=‘女’where AdministratorID=100421103 ——对Administrator表中管理员编号为‘100421103’的性别改为“女”(3)创建表library create table library(bookID number(20)primary key,bookName varchar2(20),author varchar2(10),press varchar2(20),publishDate varchar2(50),price number(20),leibienumber number(20),state varchar2(8),studentID number(20),foreign key(studentID)references student(studentID))tablespace student_library;
向library表插入数据 insert into library
values(100421,'Oracle数据库管理','马晓玉','清华大学出版社','2011-11-8',40,'013999',' ',100421203)insert into library
values(100422,'ASP.NET网站设计','唐慧','南京大学出版社','2011-5-18',32,'165923',' ',100421205)insert into library
values(100423,'JavaScript程序设计','徐元','苏州大学出版社','2011-2-12',28,'265894',' ',100421207)对library表删除数据
delete from library where bookID=100422 ——删除library表中书籍编号为‘100422’的一行数据 向library表查询数据
select bookID,bookName,author,press,publishDate,price from library order by bookID ——查询library表中的bookID,bookName,author,press,publishDate,price的数据根据书籍的编号进行排序
向library表修改数据
update library set author=‘张敏’where bookID=100422 ——对library表中书籍编号为‘100422’的作者改为“张敏”
(4)创建表student create table student(studentID number(20)primary key,studentName varchar2(50),sex varchar2(2),department varchar2(10),studentPhone number(15),borrowID number(20),password number(10))tablespace student_library;
向student表插入数据 insert into student values(100421203,'王逸','男','信电系','***','123456','521568')insert into student values(100421205,'刘娟','女','食品系','***','256302','269756')insert into student values(100421207,'张一凡','男','园林园艺系','***','687456','305621')对student表删除数据
delete from student where studentName=‘张一凡’
——删除student表中学生姓名为‘张一凡’的一行数据 向student表修改数据
update student set department=‘经贸系’where studentID=100421205 ——对student表中学生学号为‘100421205’的系部名称改为“经贸系”
(5)创建表lent_library create table lent_library(lentID number(20)primary key,bookID number(20),borrowbookID number(20),borrowDate varchar2(50),borrowState varchar2(30),foreign key(bookID)references library(bookID))tablespace student_library;
向lent_library表插入数据 insert into lent_library values(12345,'100421','1360','2012-3-15','还未归还')insert into lent_library values(21350,'100422','2035','2012-1-6','已经归还')insert into lent_library values(13056,'100423','1503','2012-3-22','还未归还')向lent_library表删除数据 delete from lent_library where bookID=‘100423’
——删除lent_library表中书籍编号为‘100423’的一行数据 向lent_library表查询数据
select lentID,bookID,borrowbookID,borrowState from lent_library where bookID=‘10042%’ ——查询lent_library表中的lentID,bookID,borrowbookID,borrowState数据根据书籍编号前五位数位‘10042’进行排序
(6)创建表booktype create table booktype(Leibienumber number(20)primary key,booktype varchar2(20))tablespace student_library;
向booktype表插入数据 insert into booktype values('4630','文学类')insert into booktype values('1623','科普类')insert into booktype values('2412','理工科类')向booktype表删除数据
delete from booktype where leibienumber=‘1623’
——删除booktype表中类别编号为‘1623’的一行数据 向booktype表修改数据
update booktype set booktype=‘计算机类’where leibienumber=‘2412’ ——对booktype表中类别编号为‘2412’的书籍类型改为“计算机类”
4、(1)创建索引
【1】create index AdministratorID _index on Administrator(AdministratorID)tablespace users;
—在Administrator表的AdministratorID列创建一个名为Aid_index的索引
【2】create bitmap index studentName_index on student(studentName)tablespace users;—在student表的学生姓名列上创建位图索引
(2)创建视图
create or replace view view_library as select bookID,bookName,author,press,publishDate,price from library;—创建视图view_library,查询library表中的bookID,bookName,author,press,publishDate,price
5、(1)创建匿名块
set serveroutput on declare out_text varchar2(50);begin out_text:='程序块示例';dbms_output.put_line(out_text);exception when others then dbms_output.put_line('捕获一个异常');end;
(2)创建存储过程
create or replace procedure InsertAdministrator as begin insert into Administrator(AdministratorID,administratorName,sex)values(100421105,'李凡','男');exception when dup_val_on_index then
dbms_output.put_line('重复的编号');when others then
dbms_output.put_line('发生其他错误!');end InsertAdministrator;—创建一个存储过程InsertAdministrator,向Administrator表的AdministratorID,administratorName和sex列分别插入数据100421105,李凡和男三个值。
(3)创建函数
create or replace function Factorial(n in number)return number as result number: =1;begin for i in 1...n loop result: =result*i;end loop;return(result);end Factorial;(4)创建触发器 create table student_log(studentID number(20),studentName varchar2(50),sex varchar2(2),department varchar2(10));—创建一个日志表,记录对student表所做的修改,日志表名为student_log create or replace trigger insertlog_trigger after insert on student begin insert into student_log values(100421230,'路奇', '女', '园林系');end;—在student表上创建一个语句级Insert触发器
6、用户权限和角色管理
(1)创建用户user_student create user user_student identified by student default tablespace student_library
(2)为用户user_student设置系统权限 grant create session to user_student;
(3)为用户user_student撤销系统权限
revoke create session from user_student;
(4)创建角色user_library
create role user_library identified by student
(5)为角色user_library授予权限
grant user_library to public;
(6)启用角色user_library
set role user_library identified by student
第二篇:Oracle数据库实验报告
中南林业科技大学
实验报告
课程名称:
Oracle数据库 专业班级: 姓名:
学号:
****年**月**日
实验一
安装和使用Oracle数据库
【实验目的】
1.掌握Oracle软件安装过程,选择安装组件 2.掌握建立Oracle数据库,配置网络连接 3.掌握Oracle企业管理器的基本操作 4.使用SQL*Plus,登录到实例和数据库 5.掌握命令方式的关闭和启动实例及数据库 【实验内容】
1.查看已安装的Oracle组件
2.查看服务,记录下和数据库有关的服务名,将他们设为手动方式,启动相关服务。
3.配置监听器,查看是否在服务中有LISTENER,是否能启动。4.配置本地net服务,提示:设置正确的服务器地址和端口号。5.打开SQL*Plus,用SYS和SYSTEM用户名和密码登录。6.思考题:有几种打开SQL*Plus的方法?分别是什么? 7.用命令关闭实例和数据库,记录命令
8.用命令以NOMOUNT的方式启动实例,再加载数据库,打开数据库。
【实验结论】
1.查看已安装的Oracle组件
2.查看服务,记录下和数据库有关的服务名,将他们设为手动方式,启动相关服务。
3.配置监听器,查看是否在服务中有LISTENER,是否能启动。
4.配置本地net服务,提示:设置正确的服务器地址和端口号。
5.打开SQL*Plus,用SYS和SYSTEM用户名和密码登录。
6.思考题:有几种打开SQL*Plus的方法?分别是什么?(1)直接打开 sql plus 即窗口方式(2)cmd 命令行方式
(3)WEB 页面中 iSQL*Plus 方式 7.用命令关闭实例和数据库,记录命令 SQL>shutdown immediate
8.用命令以NOMOUNT的方式启动实例,再加载数据库,打开数据库。
sql>startup nomount sql>alter database mount;sql>alter database open;sql>startup
(1).用SQLplus 命令:show parameters参数名
(2).用select [列名] from 表名
2.初始化文件有几种?默认的保存位置在哪里?
初始化文件有三种:数据文件,日志文件,控制文件; 默认的保存位置E:oracleproduct10.2.0oradataorcl
4.打开OEM,查看三类物理文件信息
三类物理文件:数据文件、控制文件、日志文件 数据文件:.DBF存储表、索引及数据结构信息
日志文件:.LOG记录对数据库的所有修改信息,用于恢复
控制文件:.CTL二进制文件,记录数据库名、文件标识、检查点
5.分别用select命令查询V$parameter动态性能视图,用show命令查看全局数据库名、实例名、是否启动自动归档、标准数据块大小这四个参数的值,记录命令和结果。用select命令查询V$parameter动态性能视图
用show命令查看全局数据库名、实例名
用show命令查看是否启动自动归档、标准数据块大小
6.如何用命令查看数据文件、控制文件的文件名、存储位置和状态信息?
(1).查看数据文件的文件名、存储位置和状态信息
(2).查看控制文件的文件名、存储位置和状态信息
0
和服务器型文件都要找到),查看各类默认位置并记录下来(包括物理文件所在目录,该数据库相关的各个目录等),登录到mydb数据库。
2.用命令方式手工创建数据库testorcl
(1)创建批处理文件,建立必需的各级目录,参考第一题MYDB数据库的默认目录。
(4)运行数据库建立脚本,更改相关服务为手动启动方式
(5)运行数据字典等创建脚本
3.在DBCA中删除MYDB数据库。
Enter valuefor 4:runner Specify log path as parameter 5: Enter valuefor 5: D:oracleproduct10.2.0db_2RDBMSlog
二、完成下面的查询,记录查询命令和结果。1.查询HR方案种有哪些表,列出表名 2.设置行宽为160,每页行数为40 3.查询employees表中所有薪水在3000到6000元之间的员工编号、姓、名、受聘日期、工作代号、薪水、经理代号、部门号,按部门号升序排列,同一部门按员工编号降序排列
4.查询每个部门的人数、平均薪水、最高薪水、最低薪水,按部门编号升序排列
5.查询first_name的第三个字母是t的员工编号,first_name,电话号码,部门编号,部门名称
6.在job_history表中查询任职时间超过1年的员工编号,任职历时月份(保留整数),工作代号,部门代号。
7.查询每个部门经理的员工编号、姓名、薪水、部门号。
【实验结论】
一、需要访问HR示例方案中的表,如果机器上没有该示例方案,则运行相关包和相应配置装入HR方案。
1.将hr.rar解压到D:oracleproduct10.2.0db_2demoschema human_resources目录下,然后在SQL*PLUS 中执行 hr_main.sql
二、完成下面的查询,记录查询命令和结果。1.查询HR方案种有哪些表,列出表名
5.查询first_name的第三个字母是t的员工编号,first_name,电话号码,部门编号,部门名称
738
实验五
PL/SQL编程
【实验目的】
1.熟悉PL/SQL的数据类型和书写规则 2.熟悉控制结构和游标的使用 3.编写和运行函数、过程和触发器 【实验内容】
编写脚本文件,调试运行脚本文件,并记录结果。
1.在SQL*Plus中编写一个PL/SQL块,功能用于打印学生信息 在DECLARE部分完成:
(2)建立学生信息记录类型stu_record_type,包括学号,姓名,性别,籍贯,学习成绩和活动成绩。均为可变长字符类型(3)编写本地子过程:学生信息打印过程PrintStuRecord,把(1)中定义的记录类型作为参数(4)定义学生信息记录变量stu_record 在BEGIN…END部分完成:
(1)为stu_record变量的各个元素赋值如下: 学号:‘2001001’ 姓名:’李新’
性别:‘m’
籍贯:‘黑龙江省哈尔滨市’ 学习成绩:‘Excellent’
0
(1)建立学生信息记录类型stu_record_type,包括学号,姓名,性别,籍贯,学习成绩和活动成绩。均为可变长字符类型
set serveroutput on declare type stu_record_type is record
(s_no varchar2(8), s_name varchar2(10), s_sex varchar2(2), s_address varchar2(20), s_studyscore varchar2(10), s_activescore varchar2(10));(2)编写本地子过程:学生信息打印过程PrintStuRecord,把中定义的记录类型作为参数
procedure PrintStuRecord as begin dbms_output.put_line('学号:'|| stu_record.s_no);dbms_output.put_line('姓名 :'|| stu_record.s_name);dbms_output.put_line('性别:'|| stu_record.s_sex);dbms_output.put_line('籍贯:'|| stu_record.s_address);dbms_output.put_line('学习成绩:'|| stu_record.s_studyscore);dbms_output.put_line('活动成绩:'|| stu_record.s_activescore);end PrintStuRecord;(3)定义学生信息记录变量stu_record stu_record stu_record_type;在BEGIN…END部分完成:
(4)为stu_record变量的各个元素赋值如下: 学号:‘2001001’ 姓名:’李新’
性别:‘m’
籍贯:‘黑龙江省哈尔滨市’
2.建立对bookinfo表的DML触发器,一旦bookinfo表发生了任何变化,立即触发,对bookinfo表的数据进行统计,结果存储在数据统计表中
(1)如果没有则建立bookinfo表,选择建立在scott用户下,表结构为(bookno varchar2(36)Primary key, bookname varchar2(40)not null, authorname varchar2(10)not null, publishtime date, bookprice float)
create table bookinfo(bookno varchar2(36)Primary key,4
Selectcount(bookno),count(distinct authorname)from bookinfo;end;/
(4)在bookinfo表中插入、删除和更新信息,再查看major_stats表中数据的变化 <1>插入
647
实验六
模式对象管理与安全管理
【实验目的】
1.了解模式对象的类型
2.掌握在OEM中操作模式对象的方法
3.掌握命令方式建立表、视图、索引等常见对象的方法 4.熟悉Oracle中权限分类和设置,理解系统提供用户的角色和权限
5.熟练使用建立用户、角色,为用户授权、授予角色的命令
【实验内容】
1.创建一个TESTUSET用户,密码为test,默认表空间为user表空间
2.创建用户后为其授予登录数据库和创建数据库对象的权限 3.用TESTUSER用户登录数据库
4.创建学生信息表(学号,姓名,性别,入学成绩),定义主键和输入数据(至少5条数据),提交添加的数据。并完成下面的题目:
(1)再继续添加2条数据,设置一个保存点savepoint,再添加1条数据,执行回退到保存点的回退命令。查看此时表中数据(2)查询入学成绩大于480的学生信息(3)建立男生信息视图
(4)在“成绩”字段上建立B-树索引
5.创建一个表簇,名为empl_dep,容纳empl表和dep表,有公
第三篇:Oracle课程设计 图书管理系统
数据库课程设计
设计名称:图书管理系统
组员:尚靖伟(122068)
张红凯(122072)班级:计G121班
信息工程学院计算机系
2013年6月27日
“Oracle数据库应用设计”指导书
Oracle数据库管理与设计
目 录
目录.........................................................................................................................I 前言.......................................................................................................................II 第1部分
Oracle管理技术........................................................................................1
实验1 实验2 实验3 实验4 实验5 实验6 实验7 实验8 第2部分
数据库管理................................................................................................................1 角色和用户管理........................................................................................................6 表和视图管理............................................................................................................8 索引和序列管理......................................................................................................12 PL/SQL编程...........................................................................................................14 使用游标、存储过程和触发器..............................................................................22 表空间管理..............................................................................................................26 文件管理..................................................................................................................30
Oracle开发技术......................................................................................36
I
Oracle数据库管理与设计
前 言
数据库技术是计算机科学中发展最快的领域之一。随着网络技术的不断发展,数据库技术与网络技术相结合,已经广泛应用于工作和生活的各个领域。同时,数据库技术及其应用已经成为国内外高校计算机专业和许多非计算机专业的必修或选修课程。
Oracle是当前最流行的大型关系数据库之一,支持包括32位Windows、64位Windows、OS、HP-UX、AIX5L、Solaris和Linux等多种操作系统,拥有广泛的用户和大量的应用案例,已成为大型数据库应用系统的首选后台数据库系统。
本实验课程要求学生全面了解Oracle数据库的特点和功能。从安装配置、安全性、可用性、互操作性、PL/SQL、可开发性、商业智能等多个方面,对Oracle数据库的各项技术进行学习和实验。
通过学习Oracle数据库安装、管理及开发,为今后从事Oracle数据库管理和开发工作打下良好的基础。
本实验课程共分2个部分。第1部分为Oracle的管理技术,由实验1至实验8组成,内容包括:(1)数据库管理;(2)角色和用户管理;(3)表和视图管理;(4)索引和序列管理;(5)PL/SQL编程;(6)使用游标、存储过程和触发器;(7)表空间;(8)文件管理。第2部分为Oracle开发技术,要求完成基于一定背景的管理信息系统的数据库设计,如学生信息管理系统、图书管理系统、人事信息管理系统、网上购物系统等。
II
第1部分 Oracle管理技术
第1部分 Oracle管理技术
实验1 数据库管理
目的和要求
(1)了解Oracle数据库的逻辑结构和物理结构;(2)了解Oracle Enterprise Manager的使用情况;(3)学习关闭和启动数据库实例的方法;(4)学习使用SQL语句创建数据库的方法;(5)学习使用SQL语句删除数据库的方法。
实验准备
首先要了解Oracle数据库的逻辑结构,包括方案(schema)对象、数据块(data block)、区间(extent)、段(segment)和表空间(tablespace)等。数据库由若干个表空间组成,表空间由表组成,段由区间组成,区间则由数据块组成。Oracle数据库的物理结构由构成数据库的操作系统文件所决定。每个Oracle数据库都由3种类型的文件组成:数据文件、日志文件和控制文件。这些数据库文件为数据库信息提供真正的物理存储。
Enterprise Manager 9i是Oracle 9i提供的新的管理工具,简称EM。使用它可以完成启动、关闭数据库,创建、删除数据库等功能。只有系统管理员或拥有CREATE DATABASE权限的用户才能创建数据库。可以在Enterprise Manager中通过图形界面创建数据库,也可以使用CREATE DATABASE语句创建数据库。
实验内容
本实验主要包括以下内容。
(1)练习使用不同方法启动和关闭数据库实例。
(2)练习使用不同方法创建和删除数据库,要使操作的数据库为用户管理数据库UserMan。
1.使用SHUTDOWN命令关闭数据库实例
练习使用SHUTDOWN命令关闭数据库实例,分别按以下方式启动数据库实例。
(1)正常关闭。等待当前所有已连接的用户断开与数据库的连接,然后关闭数据库。正常关闭的语句如下:
SHUTDOWN NORMAL
(2)立即关闭。回退活动事务处理并断开所有已连接的用户,然后关闭数据库。立即关闭的语句如下:
SHUTDOWN IMMEDIATE
第1部分 Oracle管理技术
(3)事务处理关闭。完成事务处理后断开所有已连接的用户,然后关闭数据库。事务处理关闭的语句如下:
SHUTDOWN TRANSACTIONAL
(4)中止关闭。中止数据库实例,立即关闭数据库。中止关闭的语句如下:
SHUTDOWN ABORT
每次执行SHUTDOWN语句关闭数据库实例之前,请执行STARTUP命令启动数据库。2.使用STARTUP命令启动数据库实例
练习使用STARTUP命令启动数据库实例,分别按以下方式启动数据库实例。(1)启动数据库实例时不装载数据库。执行此操作的命令如下:
STARTUP NOMOUNT
(2)启动数据库实例,装载数据库,但不打开数据库。通常在数据库维护时执行此操作,对应的命令如下:
STARTUP MOUNT
(3)启动数据库实例,装载数据库,打开数据库。执行此操作的命令如下:
STARTUP OPEN
第1部分 Oracle管理技术
(4)强制实例启动。在遇到特殊异常的情况时,可以强制启动实例。强制启动实例的语句如下:
STARTUP FORCE
该语句将数据库强行启动到OPEN模式。
(5)启动后限制对数据库实例的访问。执行此操作的命令如下:
STARTUP RESTRICT
每次执行STARTUP语句启动数据库实例之前,请执行SHUTDOWN命令关闭数据库。3.使用ORACLE Enterprise Manager关闭数据库实例 按照下面的步骤关闭数据库实例。
(1)在数据库处于打开状态时,使用SYS用户以SYSDBA身份登录到Enterprise Manager。在主目录页面的“一般信息”栏目中,可以看到“关闭”按钮。
(2)单击“关闭”按钮,可以打开“主机和目标数据库身份证明”页面。用户需要拥有管理员的权限才能关闭数据库实例,包括主机操作系统的管理员和当前数据库实例的SYSDBA用户。
(3)输入完成后,单击“确定”按钮,打开“确认关闭”页面。
(4)单击“是”按钮,开始关闭数据库。关闭操作完成后,单击“刷新”按钮,打开“启动数据库实例”页面。
4.使用ORACLE Enterprise Manager启动数据库实例 按照下面的步骤启动数据库实例。
第1部分 Oracle管理技术
(1)使用SYS用户以SYSDBA身份登录到Enterprise Manager。
(2)单击“启动”按钮,打开“主机和目标数据库身份证明”页面。用户需要拥有管理员的权限才能启动数据库实例,包括主机操作系统的管理员和当前数据库实例的SYSDBA用户。
(3)输入完成后,单击“确定”按钮,打开“确认打开”页面。(4)单击“是”按钮,开始打开数据库。5.使用SQL语句创建数据库
按照如下条件创建数据库OracleDB(以SYSDBA的用户身份连接到数据库)。
(1)设置SYS用户的密码为SYSPWD,设置SYSTEM用户的密码为SYSTEMPWD。(2)使用已有的控制文件。
(3)指定日志文件组redo01.log,大小为100MB;指定日志文件组redo02.log,大小为100MB。设置最大的日志文件数量为10。
(4)定义日志文件组中最大的日志文件数量为5。(5)定义最大的数据文件数量为100。(6)定义数据库中最大的实例数量为1。(7)定义存储数据的字符集为US7ASCII。
(8)定义数据文件名称为SYS01.dbf,初始大小为100MB。(9)定义默认的表空间为tbs_1。(10)定义临时表空间为tempts1。
(11)定义临时文件为temp01.dbf,大小为10MB。CREATE DATABASE语句实例:
CREATE DATABASE OracleDB
USER SYS IDENTIFIED BY bipt123
USER SYSTEM IDENTIFIED BY bipt123
CONTROLFILE REUSE MAXLOGFILES 10
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
LOGFILE GROUP 1(‘E:redo01.log’)SIZE 100M ,GROUP 2(E:redo02.log’)SIZE 100M ,CHARACTER SET US7ASCII
DATAFILE ‘E:sys01.dbf’ SIZE 100M REUSE
EXTENT MANAGEMENT LOCAL
DEFAULT TABLESPACE tbs_1
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE ‘E:temp01.dbf’ SIZE 10M REUSE;6.使用SQL语句删除数据库
按照如下步骤删除数据库UserMan。
(1)在删除数据库之前,需要用户以SYSDBA或SYSOPER身份登录,代码如下:
CONNECT SYS/SYSPWD AS SYSDBA;其中SYSPWD为SYS用户的密码,请根据实际情况输入。(2)关闭数据库,再以MOUNT模式启动数据库,代码如下:
第1部分 Oracle管理技术
SHUTDOWN IMMEDIATE;STARTUP MOUNT;(3)删除数据库,代码如下:
DROP DATABASE;
第1部分 Oracle管理技术
实验2 角色和用户管理
目的和要求
(1)了解Oracle数据库用户和角色的概念;(2)学习使用SQL语句创建Oracle用户;(3)学习使用SQL语句创建Oracle角色;(4)学习使用SQL语句指定用户的角色。
实验准备
(1)了解Oracle数据库用户可以分为6种类型,即数据库管理员、安全官员、网络管理员、应用程序开发员、应用程序管理员和数据库用户;
(2)了解角色是对用户的一种分类管理办法,不同权限的用户可以分为不同的角色;(3)了解使用CREATE ROLE语句创建角色的方法;(4)了解使用DROP ROLE语句删除角色的方法;(5)了解使用GRANT语句指定用户角色的方法;(5)了解使用CREATE USER语句创建用户的方法;(4)了解使用DROP USER语句删除用户的方法。
实验内容
本实验主要包括以下内容。
(1)练习使用SQL语句创建数据库角色;
(2)练习使用SQL语句为数据库角色授予权限;(3)练习使用SQL语句指定用户角色;(4)练习使用SQL语句创建数据库用户。
1.使用SQL语句创建数据库角色
参照下面的步骤练习使用CREATE ROLE语句创建数据库角色。(1)以SYSTEM用户登录到SQL*PLUS。
(2)使用CREATE ROLE语句创建角色UserManRole,密码为myrolepwd,代码如下:
CREATE ROLE UserManRole IDENTIFIED BY myrolepwd;
2.使用SQL语句为数据库角色授权
参照下面的步骤练习使用GRANT语句为数据库角色授权。(1)以SYSTEM用户登录到SQL*PLUS。
第1部分 Oracle管理技术
(2)使用GRANT语句将角色UserManRole授予CONNECT和RESOURCE权限,代码如下:
--设置角色权限
GRANT CONNECT TO UserManRole;GRANT RESOURCE TO UserManRole;
3.使用SQL语句创建数据库用户
参照下面的步骤练习使用CREATE USER语句创建数据库用户。(1)以SYSTEM用户登录到SQL*PLUS。
(2)使用CREATE USER语句创建用户UserManAdmin,密码为UserPwd,代码如下:
CREATE USER UserManAdmin IDENTIFIED BY UserPwd
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
(3)使用GRANT语句对用户UserManAdmin授予系统权限UNLIMITED TABLESPACE,代码如下:
--设置系统权限
GRANT UNLIMITED TABLESPACE TO UserManAdmin;
4.使用SQL语句指定用户角色
参照下面的步骤将用户UserMan指定为角色UserManRole。(1)以SYSTEM用户登录到SQL*PLUS。
(2)使用GRANT语句将用户UserMan指定为角色UserManRole,代码如下:
GRANT UserManRole TO UserManAdmin;
第1部分 Oracle管理技术
实验3 表和视图管理
目的和要求
(1)了解Oracle表和视图的概念;(2)学习使用SQL语句创建表;
(3)学习使用SELECT语句查询数据;(4)学习使用SQL语句创建视图。
实验准备
(1)了解表是数据库中最常用的数据存储单元,它包括所有用户可以访问的数据。作为关系型数据库,Oracle表由行和列组成。
(2)视图是一个虚拟的表,它在物理上并不存在。视图可以把表或其它视图的数据按照一定的条件组合起来,所以也可以把它看成是一个存储的查询。视图并不包含数据,它只是从基表中读取数据。
(3)了解使用CREATE TABLE语句创建表的方法。(4)了解使用SELECT语句查询数据的方法。(5)了解使用SQL语句创建视图的方法。
实验内容
本实验主要包括以下内容。
(1)练习使用SQL语句创建表;
(2)练习使用SQL语句向表中插入数据;(3)练习使用SQL语句修改表中的数据;(4)练习使用SQL语句删除表中的数据;(5)练习使用SELECT语句查询数据;(6)练习使用SQL语句创建视图。
1.使用SQL语句创建表
使用CREATE TABLE语句创建用户信息表Users,结构如表1所示。
表1 表Users的结构
编
号 1 2 3 4 字段名称 UserId UserName UserType UserPwd
数据结构 NUMBER VARCHAR2 40 NUMBER 1 VARCHAR2 40
用户编号 用户名
用户类型(1 管理员用户,2 普通用户)
说
明
参照下面的步骤练习使用CREATE TABLE语句创建表Users。
(1)以实验2中创建的UserManAdmin用户登录到SQL*PLUS。(2)使用CREATE TABLE语句创建表Users,代码如下:
CREATE TABLE UserManAdmin.Users(UserId
UserName UserType
Number Primary Key, Varchar2(40)NOT NULL, Number(1),第1部分 Oracle管理技术
UserPwd);Varchar2(40)使用CREATE TABLE语句创建用户登录信息表LoginInfo,结构如表2所示。
表2 表LoginInfo的结构
编
号 1 2
字段名称 UserId LoginTime
数据结构 NUMBER CHAR(20)
说
明 用户编号 登录时间
参照下面的步骤练习使用CREATE TABLE语句创建表LoginInfo。(1)以实验2中创建的UserManAdmin用户登录到SQL*PLUS。(2)使用CREATE TABLE语句创建表LoginInfo,代码如下:
CREATE TABLE UserManAdmin.LoginInfo(UserId
LoginTime);Number, CHAR(20)NOT NULL 2.使用SQL语句向表中插入数据
使用INSERT语句向表Users中插入用户数据,内容如表3所示。
表3 表Users中的数据
UserId 1 2 3 4
UserName Admin User Zhangsan Lisi
UserType 2 2 2
UserPwd AdminPwd UserPwd ZhangsanPwd LisiPwd 参照下面的步骤练习使用INSERT语句向表Users中插入数据。(1)以实验2中创建的UserManAdmin用户登录到SQL*PLUS。(2)使用INSERT语句向表Users中插入数据,代码如下:
INSERT INTO UserManAdmin.Users VALUES(1, ‘Admin’, 1, ‘AdminPwd’);INSERT INTO UserManAdmin.Users VALUES(2, ‘User’, 2, ‘UserPwd’);INSERT INTO UserManAdmin.Users VALUES(3, ‘Zhangsan’, 2, ‘ZhangsanPwd’);INSERT INTO UserManAdmin.Users VALUES(4, ‘Lisi’, 2, ‘LisiPwd’);COMMIT;使用INSERT语句向表LoginInfo中插入数据。内容如表4所示。参照下面的步骤练习使用INSERT语句向表LoginInfo中插入数据。(1)以实验2中创建的UserManAdmin用户登录到SQL*PLUS。(2)使用INSERT语句向表LoginInfo中插入数据,代码如下:
INSERT INTO UserManAdmin.LoginInfo VALUES(1, ‘2012-5-15 10:33:02’);INSERT INTO UserManAdmin.LoginInfo VALUES(1, ‘2012-5-16 08:34:13’);INSERT INTO UserManAdmin.LoginInfo VALUES(1, ‘2012-5-17 09:13:11’);INSERT INTO UserManAdmin.LoginInfo VALUES(2, ‘2012-5-15 07:35:02’);INSERT INTO UserManAdmin.LoginInfo VALUES(2, ‘2012-5-16 08:11:54’);INSERT INTO UserManAdmin.LoginInfo VALUES(2, ‘2012-5-17 09:13:11’);INSERT INTO UserManAdmin.LoginInfo VALUES(3, ‘2012-5-15 08:34:02’);INSERT INTO UserManAdmin.LoginInfo VALUES(3, ‘2012-5-16 09:34:13’);
第1部分 Oracle管理技术
INSERT INTO UserManAdmin.LoginInfo VALUES(3, ‘2012-5-17 10:13:09’);INSERT INTO UserManAdmin.LoginInfo VALUES(4, ‘2012-5-15 11:34:02’);INSERT INTO UserManAdmin.LoginInfo VALUES(4, ‘2012-5-16 13:34:13’);INSERT INTO UserManAdmin.LoginInfo VALUES(4, ‘2012-5-17 15:13:12’);COMMIT;
表4 表LoginInfo中的数据
UserId 1 1 1 2 2 2 3 3 3 4 4 4
LoginTime 2012-5-15 10:33:02 2012-5-16 08:34:13 2012-5-17 09:13:11 2012-5-15 07:35:02 2012-5-16 08:11:54 2012-5-17 09:13:11 2012-5-15 08:34:02 2012-5-16 09:34:13 2012-5-17 10:13:09 2012-5-15 11:34:02 2012-5-16 13:34:13 2012-5-17 15:13:12 3.使用SQL语句修改表中的数据
使用UPDATE语句可以修改表Users中的数据。参照下面的步骤练习将表Users中Admin用户的密码修改为AdminPassword。
(1)以SYSTEM用户登录到SQL*PLUS。
(2)使用UPDATE语句将表Users中Admin用户的密码修改为AdminPassword,代码如下:
UPDATE UserManAdmin.Users SET UserPwd=‘AdminPassword’ WHERE UserName=‘Admin’
(3)使用SELECT语句查看用户Admin的密码,代码如下:
SELECT UserPwd FROM UserManAdmin.Users WHERE UserName=‘Admin’
修改表
ALTER TABLE USERMANADMIN.LOGININFO MODIFY(LOGINTIME DATE)4.使用SQL语句删除表中的数据
使用DELETE语句可以删除表Users中的数据。参照下面的步骤练习将表Users中Zhansan用户的记录删除。
(1)以SYSTEM用户登录到SQL*PLUS。
(2)使用DELETE语句将表Users中Zhangsan用户的记录删除,代码如下:
DELETE FROM UserManAdmin.Users WHERE UserName=‘Zhangsan’
(3)使用SELECT语句查看表Users中的数据,确认用户Zhangsan的记录是否被删除,代码如下:
SELECT * FROM UserManAdmin.Users 5.使用SELECT语句查询数据
使用SELECT语句查询数据库中的用户数据,分别按以下方式查询数据库。
第1部分 Oracle管理技术
(1)查询表Users中的所有数据。
以SYSTEM用户登录到SQL*PLUS,然后执行如下代码:
SELECT * FROM UserManAdmin.Users *代表UserManAdmin.Users中的所有字段。(2)在返回结果中使用自定义标题。
以SYSTEM用户登录到SQL*PLUS,然后执行如下代码:
SELECT UserName AS 用户名, UserPwd AS 密码 FROM UserManAdmin.Users(3)设置查询条件。
查询所有普通用户的信息。以SYSTEM用户登录到SQL*PLUS,然后执行如下代码:
SELECT * FROM UserManAdmin.Users WHERE UserType=2 查询用户Admin的密码信息。以SYSTEM用户登录到SQL*PLUS,然后执行如下代码:
SELECT UserPwd FROM UserManAdmin.Users WHERE UserName=‘Admin’
(4)对查询结果进行排序。
查询所有普通用户的信息,并按用户名的降序排列结果集。以SYSTEM用户登录到SQL*PLUS,然后执行如下代码:
SELECT * FROM UserManAdmin.Users ORDER BY UserName DESC(5)对记录进行统计。
统计表Users中共有多少个用户记录。以SYSTEM用户登录到SQL*PLUS,然后执行如下代码:
SELECT COUNT(*)FROM UserManAdmin.Users(6)实现连接查询。
查看每个用户的登录记录。以SYSTEM用户登录到SQL*PLUS,然后执行如下代码:
SELECT u.UserName, 1.LoginTime FROM Users u INNER JOIN LoginInfo 1 ON u.UserId=1.UserID 在上面的SELECT语句中涉及两个表:表Users和表LoginInfo。在FROM子句中,为每个表指定一个别名,表Users的别名为u,表LoginInfo的别名为1。
6.使用SQL语句创建视图
使用CREATE VIEW语句创建用户登录信息表UserLogin,代码如下:
CREATE VIEW UserLogin AS SELECT u.UserName,l.LoginTime
FROM
UserManAdmin.Users
u
INNER
JOIN UserManAdmin.LoginInfo l ON u.UserId=l.UserID;
SELECT * FROM UserLogin;
第1部分 Oracle管理技术
实验4 索引和序列管理
目的和要求
(1)了解索引的概念和作用;(2)了解序列的概念和作用;
(3)学习使用SQL语句创建索引;(4)学习使用SQL语句创建序列。
实验准备
(1)了解索引是对数据库表中一个或多个列的值进行排序的结构。可以利用索引快速访问数据库表中的特定信息。
(2)了解序列号是一个Oracle整数,最多可有38个数字。序列的作用是自动生成整型数值,作为表中标识字段的值。有许多表在创建时定义了一个标识字段,此字段的值需要由系统自动生成,每当插入一条新记录时,此字段的值自动加1。在Oracle中,这个功能由序列来实现。
(3)了解使用CREATE INDEX语句创建索引的方法。
(4)了解使用CREATE SEQUENCE语句创建序列的方法。
实验内容
本实验主要包括以下内容。
(1)练习使用SQL语句创建索引;(2)练习使用SQL语句创建序列;
1.使用SQL语句创建索引
使用CREATE INDEX语句在Users表的UserName字段上创建索引。代码如下:
CREATE INDEX index_username ON UserManAdmin.Users(UserName)TABLESPACE Users;
2.在创建表的同时创建索引
在使用CREATE TABLE语句创建表的同时,可以为指定字段创建索引。创建表Employees,在字段EmpName上创建索引。表Employees的结构如表5所示。
表5 表Employees的结构
编
号 1 2 3 4
字段名称 EmpId EmpName Sex UserId
数据结构 NUMBER VARCHAR2(50)CHAR(2)NUMBER
说
明 编号 姓名 性别 用户编号
代码如下:
CREATE TABLE UserManAdmin.Employees(EmpId
EmpName Sex
Number, VARCHAR2(50)UNIQUE, CHAR(2),第1部分 Oracle管理技术
UserId);Number 3.使用SQL语句创建序列
使用CREATE SEQUENCE语句创建序列。序列的最小值为1,并且没有最大值限制。序列的初始值为1,序列间隔为1。代码如下:
CREATE SEQUENCE EMP_S MINVALUE 1 NOMAXVALUE START WITH 1 INCREMENT BY 1 NOCYCLE CACHE 20;2.在插入数据时使用序列
在使用INSERT语句向表Employees中插入数据时,可以使用序列EMP_S生成字段EmpId的值,代码如下:
INSERT INTO UserManAdmin.Employees(EmpId, EmpName)VALUES(EMP_S.NEXTVAL, ‘Employee1’);INSERT INTO UserManAdmin.Employees(EmpId, EmpName)VALUES(EMP_S.NEXTVAL, ‘Employee2’);INSERT INTO UserManAdmin.Employees(EmpId, EmpName)VALUES(EMP_S.NEXTVAL, ‘Employee3’);COMMIT;SELECT * FROM UserManAdmin.Employees
第1部分 Oracle管理技术
实验5 PL/SQL编程
目的和要求
(1)了解PL/SQL语言的结构;
(2)了解PL/SQL变量和常量的声明和使用方法;(3)学习条件语句的使用方法;(4)学习分支语句的使用方法;(5)学习循环语句的使用方法;(6)学习使用Oracle系统函数。
实验准备
首先要了解PL/SQL语言是结构化程序设计语言。块(Block)是PL/SQL程序中最基本的结构,所有PL/SQL程序都是由块组成的。PL/SQL的块由变量声明、程序代码和异常处理代码3部分组成。在PL/SQL中,常量和变量在使用前必须声明,可以使用DECLARE对变量进行声明。
实验内容
本实验主要包括以下内容。
(1)练习条件语句的使用方法;(2)练习分支语句的使用方法;(3)练习循环语句的使用方法;(4)练习使用Oracle系统函数。
1.使用条件语句
参照下面的步骤练习使用条件语句。
(1)以SYSTEM用户登录到SQL*PLUS。(2)执行如下程序,观察结果。
SET ServerOutput ON;DECLARE
Num INTEGER :=-11;BEGIN
IF Num < 0 THEN
dbms_output.put_line(‘负数’);
ELSIF Num > 0 THEN
dbms_output.put_line(‘正数’);
ELSE
dbms_output.put_line(‘0’);
END IF;END;
第1部分 Oracle管理技术
2.使用分支语句
参照下面的步骤练习使用分支语句。
(1)以SYSTEM用户登录到SQL*PLUS。(2)执行如下程序,观察结果。
SET ServerOutput ON;DECLARE
varDAY INTEGER := 3;
Result VARCHAR(20);BEGIN
Result := CASE varDAY
WHEN 1 THEN ‘星期一’
WHEN 2 THEN ‘星期二’
WHEN 3 THEN ‘星期三’
WHEN 4 THEN ‘星期四’
WHEN 5 THEN ‘星期五’
WHEN 6 THEN ‘星期六’
WHEN 7 THEN ‘星期日’
ELSE ‘数据越界’
END;
dbms_output.put_line(Result);END;
第1部分 Oracle管理技术
3.使用循环语句
LOOP…EXIT…END语句:此语句的功能是重复执行循环体中的程序块,直到执行EXIT语句,退出循环。
LOOP…EXIT WHEN…END:此语句的功能是重复执行循环体中的程序块,直到满足EXIT WHEN后面的判断语句时,退出循环。
WHILE…LOOP…END LOOP语句:此语句的功能是当WHILE后面的条件语句成立时,重复执行循环体中的程序块。
参照下面的步骤练习使用循环语句。
(1)以SYSTEM用户登录到SQL*PLUS。(2)执行如下程序,观察结果。
程序一:
SET ServerOutput ON;DECLARE
v_Num INTEGER := 1;
v_Sum INTEGER := 0;BEGIN
LOOP
v_Sum := v_Sum + v_Num;
dbms_output.put_line(v_Num);
IF v_Num = 3 THEN
EXIT;
END IF;
dbms_output.put_line(‘+’);
v_Num := v_Num + 1;
END LOOP;
dbms_output.put_line(‘=’);
dbms_output.put_line(v_Sum);END;
程序二:
SET ServerOutput ON;DECLARE
v_Num INTEGER := 1;
v_Sum INTEGER := 0;BEGIN
LOOP
v_Sum := v_Sum + v_Num;
第1部分 Oracle管理技术
dbms_output.put_line(v_Num);
EXIT WHEN v_Num = 3;
dbms_output.put_line(‘+’);
v_Num := v_Num + 1;
END LOOP;
dbms_output.put_line(‘=’);
dbms_output.put_line(v_Sum);END;
程序三:
SET ServerOutput ON;DECLARE
v_Num INTEGER := 1;
v_Sum INTEGER := 0;BEGIN
WHILE v_Num <=3
LOOP
v_Sum := v_Sum + v_Num;
dbms_output.put_line(v_Num);
IF v_Num < 3 THEN
dbms_output.put_line(‘+’);
END IF;
v_Num := v_Num + 1;
END LOOP;
dbms_output.put_line(‘=’);
dbms_output.put_line(v_Sum);END;
第1部分 Oracle管理技术
4.使用系统函数(1)数值型函数
·ABS:返回给定数字表达式的绝对值。
·CEIL:返回大于或等于所给数字表达式的最小整数。·FLOOR:返回小于或等于所给数字表达式的最大整数。·POWER:返回给定表达式指定次方的值。
·ROUND:返回数字表达式并四舍五入为指定的长度或精度。(2)字符型函数
·ASCII:返回字符表达式最左端字符的ASCII代码值。·LENGTH:返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格。·UPPER:返回将小写字符数据转换为大写的字符表达式。(3)日期型函数
·SYSDATE:返回当前日期和时间。·TO_CHAR:转换日期为字符串。
·LAST_DAY:返回指定日期所在月份的最后一天的日期。这个函数可以被用来确定当前月中还剩下多少天。
·MONTHS_BETWEEN:返回两个日期之间月的数目。(4)统计函数
·COUNT:返回组中项目的数量。·MAX:返回表达式的最大值。·MIN:返回表达式的最小值。
参照下面的步骤练习使用系统函数。
(1)以SYSTEM用户登录到SQL*PLUS。(2)执行如下程序,观察结果。
程序一:
SET ServerOutput ON;BEGIN
dbms_output.put_line(ABS(-4));END;
程序二:
SET ServerOutput ON;BEGIN
dbms_output.put_line(CEIL(116.24));
dbms_output.put_line(CEIL(-112.75));
dbms_output.put_line(CEIL(0));END;
第1部分 Oracle管理技术
程序三:
SET ServerOutput ON;BEGIN
dbms_output.put_line(FLOOR(116.24));
dbms_output.put_line(FLOOR(-112.75));
dbms_output.put_line(FLOOR(0));END;
程序四:
SET ServerOutput ON;BEGIN
dbms_output.put_line(POWER(15, 4));END;
程序五:
SET ServerOutput ON;BEGIN
dbms_output.put_line(ROUND(123.456, 2));
dbms_output.put_line(ROUND(123.456, 1));
dbms_output.put_line(ROUND(123.456, 0));
dbms_output.put_line(ROUND(123.456,-1));
dbms_output.put_line(ROUND(123.456,-2));
dbms_output.put_line(ROUND(123.456,-3));END;
程序六:
SET ServerOutput ON;BEGIN
dbms_output.put_line(ASCII(‘ABC’));END;
第1部分 Oracle管理技术
程序七:
SELECT UserName, LENGTH(UserName)FROM UserManAdmin.Users WHERE UserType = 1;程序八:
SET ServerOutput ON;BEGIN
dbms_output.put_line(UPPER(‘abc’));END;
程序九:
SET ServerOutput ON;BEGIN
dbms_output.put_line(SYSDATE);END;
程序十:
SET ServerOutput ON;BEGIN
dbms_output.put_line(TO_CHAR(SYSDATE));END;
程序十一:
SET ServerOutput ON;BEGIN
dbms_output.put_line(LAST_DAY(SYSDATE));END;
第1部分 Oracle管理技术
程序十二:
SET ServerOutput ON;DECLARE
date1 VARCHAR(20):= ‘2010-05-17’;
date2 VARCHAR(20):= ‘2010-10-17’;BEGIN
dbms_output.put_line(END;
MONTHS_BETWEEN(TO_DATE(date2,‘yyyy-mm-dd’), TO_DATE(date1, ‘yyyy-mm-dd’)));
程序十三:
SELECT COUNT(UserName)FROM UserManAdmin.Users;
程序十四:
SELECT MAX(UserId)FROM UserManAdmin.Users;
程序十五:
SELECT MIN(UserId)FROM UserManAdmin.Users;
第1部分 Oracle管理技术
实验6 使用游标、存储过程和触发器
目的和要求
(1)了解游标的概念和工作原理;(2)了解存储过程的分类和使用方法;(3)了解触发器的概念;
(4)学习编写和执行自定义过程;(5)学习编写和执行自定义函数;(6)学习创建和使用触发器。
实验准备
首先要了解游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了。将游标放置到某行后,即可对该行数据进行操作,最常见的操作是提取当前行数据。
了解PL/SQL包括3种存储过程,即过程、函数和程序包。
了解触发器是一种特殊的存储过程,当指定表中的数据发生变化时自动运行。
实验内容
本实验主要包括以下内容。
(1)练习创建和使用游标的方法;
(2)练习编写和执行自定义过程的方法;(3)练习编写和执行自定义函数的方法;(4)练习创建和使用触发器的方法。
1.创建和使用游标
创建游标MyCursor,从表LoginInfo中读取指定用户的登录信息,操作步骤如下:(1)以UserManAdmin用户登录到SQL*PLUS。(2)执行如下程序:
/*打开显示模式*/ SET ServerOutput ON;DECLARE
CURSOR Mycursor(varUserName VARCHAR2)IS
SELECT u.UserName,l.LoginTime
FROM
UserManAdmin.Users
u, UserManAdmin.LoginInfo l
WHERE u.UserId =l.UserId;BEGIN
FOR var_LoginRecord IN MyCursor(‘Admin’)LOOP
dbms_output.put_line(‘用户名:’ || var_LoginRecord.UserName || ‘, 登录时间:’ || var_LoginRecord.LoginTime);
END LOOP;END;
第1部分 Oracle管理技术
2.编写和执行自定义过程
参照下面的步骤练习编写和执行自定义过程:(1)以UserManAdmin用户登录到SQL*PLUS。(2)执行如下程序,观察结果。
/*创建示例过程ResetPwd,此过程的功能是将表User中指定用户的密码重置为111111*/ CREATE OR REPLACE PROCEDURE UserManAdmin.ResetPwd(u_UserId IN NUMBER)AS BEGIN UPDATE UserManAdmin.Users SET UserPwd = ‘111111’ WHERE UserId = u_UserId;END;
/*使用EXEXUTE命令可以调用过程。如,要将编号为1(用户Admin)的用户密码重置*/ EXECUTE UserManAdmin.ResetPwd(1);SELECT UserName, UserPwd FROM Users;
第1部分 Oracle管理技术
/*使用DROP PROCEDURE命令可以删除过程*/ DROP PROCEDURE UserManAdmin.ResetPwd;
3.编写和执行自定义函数
参照下面的步骤练习编写和执行自定义函数GetLastLogin,获取指定用户最后一次登录的时间。
(1)以SYSTEM用户登录到SQL*PLUS。(2)执行如下程序:
CREATE OR REPLACE FUNCTION GetLastLogin(n_name IN UserManAdmin.Users.UserName%Type)RETURN UserManAdmin.LoginInfo.LoginTime%Type AS outTime UserManAdmin.LoginInfo.LoginTime%Type;BEGIN
SELECT MAX(l.LoginTime)INTO outTime FROM UserManAdmin.Users u join UserManAdmin.LoginInfo l on u.UserId = l.UserId
WHERE u.UserName = ‘’|| n_name ||’’
ORDER BY l.LoginTime DESC;
RETURN outTime;END;
4.创建和使用触发器
参照下面的步骤创建一个触发器MyTrigger,它的作用是当表Users中的记录被删除后,自动删除表LoginInfo中对应的用户登录记录,从而保证数据的完整性。
(1)以SYSTEM用户登录到SQL*PLUS。(2)执行如下程序,观察结果。
CREATE OR REPLACE TRIGGER UserManAdmin.MyTrigger AFTER DELETE ON UserManAdmin.Users FOR EACH ROW BEGIN
DELETE FROM UserManAdmin.LoginInfo WHERE UserId = :old.UserId;END;
第1部分 Oracle管理技术
(3)执行下面的语句,观察删除用户Users后,在表LoginInfo中是否还存在其登录的记录。
DELETE FROM UserManAdmin.Users WHERE UserName =’User’;
SELECT * FROM UserManAdmin.LoginInfo
第1部分 Oracle管理技术
实验7 表空间管理
目的和要求
(1)了解表空间的概念和工作原理;
(2)学习创建、修改、查询和删除用户表空间;
(3)学习创建、修改、查询、切换和删除撤销表空间。
实验准备
首先要了解表空间是Oracle数据库最高层次的逻辑存储结构,其中保存着由段、区和块等逻辑存储结构描述的各种模式对象。
Oracle表空间分为系统表空间、临时表空间、撤销表空间和用户表空间4种类型。用户表空间主要用来保存用户数据,其包含的数据文件称为用户数据文件,是DBA管理的主要表空间。
保存撤销记录的存储空间是撤销表空间。利用撤销表空间可以实现撤销事务、数据库恢复和数据的读一致性等功能。
实验内容
本实验主要包括以下内容。
(1)练习创建和使用用户表空间的方法;(2)练习创建和使用撤销表空间的方法。
1.创建本地管理方式的用户表空间
为Oracle数据库新建一个用户表空间,该表空间中包括2个数据文件,区的分配管理方式为AUTOALLOCATE或UNIFORM,段的存储管理方式为MANUAL或AUTO。操作步骤如下:
(1)在SQL*Plus中执行CREATE TABLESPACE语句创建新的用户表空间,并通过查询V$TABLESPACE视图查看新建用户表空间情况。
Create tablespace newspace Datafile ‘D:oracleoradatanew01.dbf’ size 10m
第1部分 Oracle管理技术
(2)通过OEM控制台创建新的临时表空间,并查看新建用户表空间情况。
2.创建本地管理方式的临时表空间
为Oracle数据库新建一个临时表空间,该表空间中包括1个数据文件,并设置该表空间为默认临时表空间。操作步骤如下:
(1)在SQL*Plus中执行CREATE TEMPORARY TABLESPACE语句创建新的临时表空间,设置该表空间为默认临时表空间,并通过查询V$TABLESPACE视图查看新建临时表空间情况。
CREATE TEMPORARY TABLESPACE newtemp tempfile 'D:oracleoradatanewtemp01.dbf' size 10m;
select * from V$tablespace;
(2)通过OEM控制台创建新的临时表空间,设置该表空间为默认临时表空间,并查看新建临时表空间情况。
3.改变表空间的可用性
将新建的用户表空间设置为脱机状态,之后再将其改为联机状态。操作步骤如下:(1)在SQL*Plus中执行ALTER TABLESPACE语句设置表空间为脱机状态,并通过查询DBA_TABLESPACES视图查看表空间的状态,之后再执行ALTER TABLESPACE语句设置表空间为联机状态。
Alter tablespace newspace Add datafile ‘D:oracleoradatanew02.dbf’ size 10m
第1部分 Oracle管理技术
(2)通过OEM控制台设置表空间为脱机状态或联机状态,并查看修改之后的表空间状态。
4.删除表空间
删除无用的表空间及其在磁盘上的数据文件。操作步骤如下:
(1)在SQL*Plus中执行DROP TABLESPACE语句删除表空间及其在磁盘上的数据文件。
Drop tablespace newspace;
(2)通过OEM控制台删除表空间及其在磁盘上的数据文件。
5.查询表空间的各种信息
查询表空间的各种信息。操作步骤如下:(1)在SQL*Plus中查询V$TABLESPACE、DBA_TABLESPACES、DBA_SEGMENTS、DBA_EXTENTS、DBA_FREE_SPACE、V_$DATAFILE和V$TEMPFILE动态性能视图获得表空间的信息。
(2)在OEM控制台中查询表空间的信息。
6.创建撤销表空间
在数据库建立后创建一个撤销表空间,并设置该表空间为默认撤销表空间。操作步骤如
第1部分 Oracle管理技术
下:
(1)在SQL*Plus中执行CREATE UNDO TABLESPACE语句创建一个撤销表空间,并执行ALTER SYSTEM语句修改初始化参数UNDO_TABLESPACE,设置该撤销表空间为默认撤销表空间。
CREATE UNDO TABLESPACE undotb datafile 'D:oracleoradataundotb01.dbf' size 2m reuse;
(2)通过OEM控制台向某一撤销表空间中添加新的数据文件,并查看新的数据文件情况。
7.查询撤销表空间的各种信息
查询表空间的各种信息。操作步骤如下:
(1)在SQL*Plus中查询V$UNDOSTAT、V$ROLLSTAT、V$TRANSACTION、DBA_UNDO_EXTENTS动态性能视图获得撤销表空间的信息。
select * from V$tablespace;
(2)利用V$UNDOSTAT动态性能视图计算撤销表空间所需要的存储空间。
第1部分 Oracle管理技术
实验8 文件管理
目的和要求
(1)了解初始化参数文件、控制文件、重做日志文件和数据文件的概念;(2)学习创建和使用初始化参数文件;
(3)学习创建、备份、查询和删除控制文件;(4)学习创建和使用重做日志文件;
(5)学习添加、移动、查询和删除数据文件。
实验准备
首先要了解初始化参数文件是Oracle实例运行所需的参数配置文件,Oracle数据库的物理结构、实例中的内存结构,以及启动后台进程的种类和数量等参数,都需要在初始化参数文件中设置,是数据库运行和性能调整的重要文件。初始化参数文件分为两类:PFILE和SPFILE。PFILE是文本形式的初始化参数文件,可以利用任何文本编辑器对它进行查看或编辑。SPFILE的作用同PFILE一样,但是该文件是二进制的,无法用文本编辑器查看或修改。
控制文件是一个非常小的二进制文件,其中存放有Oracle数据库物理结构(数据文件和重做日志文件等)的信息,是Oracle启动和运行必备的文件。
重做日志文件中保存着事物对数据库进行的修改的重做项,是数据库进行恢复的必要部分。重做日志文件分为联机重做日志文件和归档重做日志文件。
数据文件是Oracle主要的物理存储结构之一。一个表空间可以有多个数据文件,一个数据文件只属于一个表空间。数据文件可分成系统数据文件、撤销数据文件、临时数据文件和用户数据文件。
实验内容
本实验主要包括以下内容。
(1)练习创建和使用初始化参数文件;(2)练习创建和使用控制文件;(3)练习创建和使用重做日志文件;(4)练习添加和使用数据文件。
1.创建初始化参数文件
创建PFILE和SPFILE文件。操作步骤如下:
(1)找到已有的PFILE文件,使用COPY或者在Windows资源管理器中使用复制/粘贴功能,创建一个新的PFILE文件。
(2)使用CREATE PFILE FROM SPFILE命令创建一个新的PFILE文件。
第1部分 Oracle管理技术
(3)利用OEM创建一个新的PFILE文件。
(4)使用CREATE SPFILE FROM PFILE命令创建一个新的SPFILE文件。create spfile='D:oracleora92databaseininew01.ora' pfile='D:oracleadminBIPT921pfile init.ora.23201322748';
from
(5)利用OEM创建一个新的SPFILE文件。
2.修改初始化参数
修改SPFILE文件中的初始化参数。操作步骤如下:
(1)在SQL*Plus中使用动态性能视图V$SYSTEM_PARAMETER查看初始化参数值和属性。
(2)使用ALTER SYSTEM SET 参数名=参数值 SCOPE=SPFILE | MEMORY | BOTH
第1部分 Oracle管理技术
命令修改其中的动态或静态的初始化参数。
(3)再使用动态性能视图V$SYSTEM_PARAMETER或在OEM中查看初始化参数值是否被修改。
(4)或者在OEM中修改其中的初始化参数,并查看初始化参数值和属性。3.备份控制文件
为Oracle数据库备份一个控制文件。操作步骤如下:
(1)使用ALTER DATABASE BACKUP CONTROLFILE TO命令备份控制文件。
(2)在OEM控制台中备份控制文件。
4.查询控制文件信息
查询控制文件中的各种信息。操作步骤如下:(1)在SQL*Plus中查询V$CONTROLFILE、V$CONTROLFILE_RECORD_SECTION、V$PARAMETER动态性能视图获得控制文件的基本信息和记录文档段信息。
第1部分 Oracle管理技术
(2)在OEM控制台中查询控制文件的基本信息和记录文档段信息。
5.创建多路联机重做日志文件组
为Oracle数据库新建一个联机重做日志组,该组包含2个成员。操作步骤如下:(1)使用SYSDBA身份登录SQL*Plus。
(2)查询V$LOGLFILE视图,了解目前的重做日志文件组情况。
(3)执行ALTER DATABASE ADD LOGFILE命令增加一个重做日志文件组,该组包含2个成员。
(4)重新查询V$LOGLFILE视图,查看新建重做日志文件组情况。
6.使用LogMiner Viewer工具对重做日志文件进行分析
使用LogMiner Viewer工具分析重做日志文件,获得指定用户在规定的时间段内对数据库所进行的更改。操作步骤如下:
(1)启动OEM控制台,登录Oracle管理服务器。(2)启动LogMiner Viewer。(3)设置查询条件。
(4)执行并分析查询结果。(5)保存分析结果。
7.向表空间中添加数据文件
向表空间中添加一个新的数据文件。操作步骤如下:(1)在SQL*Plus中使用ALTER TABLESPACE...ADD DATAFILE语句向某一表空间中添加一个数据文件,并通过查询DBA_DATA_FILES视图查看新建数据文件的情况。
ALTER TABLESPACE dtf add datafile 'D:oracleadminBIPT921pfileinit.ora.23201322748' size 10m reuse;
第1部分 Oracle管理技术
(2)通过OEM控制台添加新的数据文件,并查看新的数据文件情况。
8.移动单个数据文件
将表空间中某个数据文件从一个物理磁盘移动到另一个磁盘。操作步骤如下:
(1)在SQL*Plus中使用ALTER TABLESPACE语句将包含有需要移动数据文件的表空间脱机。
ALTER TABLESPACE dtf offline;
(2)在操作系统中,将数据文件复制到另一个磁盘上。
(3)使用ALTER TABLESPACE语句对表空间中的数据文件重命名。alter tablespace XDB rename datafile'XDB01.DBF'to'XDB02.DBF'(4)使用ALTER TABLESPACE语句重新使该表空间联机。ALTER TABLESPACE dtf online;
(5)通过查询DBA_DATA_FILES视图获得移动后的数据文件信息。9.删除数据文件
删除无用的数据文件。操作步骤如下:
(1)在SQL*Plus中使用ALTER DATABASE语句删除某一数据文件。
(2)通过OEM控制台删除某一数据文件。
10.查询数据文件的各种信息
查询数据文件的各种信息。操作步骤如下:
第1部分 Oracle管理技术
(1)在SQL*Plus中查询DBA_DATA_FILES、DBA_EXTENTS、DBA_FREE_SPACE、V$DATAFILE、V$DATAFILE_HEADER动态性能视图获得数据文件的信息。
(2)在OEM控制台中查询数据文件的信息。
第2部分 Oracle开发技术
第2部分 Oracle开发技术
设计目的
利用所学的有关数据库设计知识,设计一个基于Oracle数据库的信息管理系统。通过该部分的操作与实践,使学生能够在完成第一部分任务的基础上,进一步巩固Oracle数据库应用的方法和技术,提高基于Oracle数据库的应用程序综合设计能力。
设计任务
数据库设计:
(1)通过对应用系统的数据库需求分析,确定系统的服务范围,绘制系统业务流程图,设计系统功能和绘制系统功能图,设计数据流图和数据字典;
(2)采用自底向上的方法设计E-R图;
(3)依据关系规范化原则设计应用系统数据库全局关系模式;(4)依照数据库全局关系模式设计数据库中各表的表结构。 界面设计:(1)数据库准备;
(2)创建工程并添加所需控件;(3)主要功能模块的界面设计。
设计题目
1.图书管理系统
图书管理系统包括对所有图书基本信息的维护,实现图书管理的需求,包括图书档案、图书查询、图书资料统计和图书借阅、归还等功能。
图书管理系统读者信息用户图书信息管理图书借阅管理读者号读者名已借数量最大借阅数量用户名密码ISBN书名作者出版社数量图书借阅图书归还
第2部分 Oracle开发技术
建立角色:
CREATE ROLE br IDENTIFIED BY asd;GRANT CONNECT TO br;GRANT RESOURCE TO br;
建立用户:
CREATE USER Book IDENTIFIED BY asd DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;授权:
GRANT UNLIMITED TABLESPACE TO Book;GRANT br TO Book;
建立bookusers表
CREATE TABLE Book.BookUsers(UserId Number Primary Key, UserName Varchar2(40)NOT NULL, UserType Number(10), UserPwd Varchar2(40));
create table book.reader
第2部分 Oracle开发技术
(reader_id varchar(20)primary key, reader_name varchar(20), maxlend int, alreadylen int)
create table borrow(reader_id varchar(20), ISBN varchar(20), lendtime date, returntime date, primary key(reader_id,ISBN))foreign key(reader_id)references book.reader(reader_id), foreign key(ISBN)references book(ISBN)
插入数据:
INSERT INTO Book.BookUsers VALUES(1, ‘shang’, 1, ‘123’);INSERT INTO Book.BookUsers VALUES(2, ‘zhang’, 2, ‘456’);
INSERT INTO Book.BookUsers VALUES(3, ‘shangjingwei’, 2, ‘asd123’);INSERT INTO Book.BookUsers VALUES(4, ‘zhanghongkai’, 2, ‘asd123’);COMMIT;
第2部分 Oracle开发技术
//创建序列
CREATE SEQUENCE userid MINVALUE 1 NOMAXVALUE START WITH 1 INCREMENT BY 1 NOCYCLE NOCACHE
//触发器创建
CREATE OR REPLACE TRIGGER Book.NewMyTrigger before Insert ON Book.BookUsers FOR each row begin select userid.nextval into :new.userid from dual;END;
string cmdString = “insert into Book.BookUsers(UserId,UserName,UserPwd)(xl_1.nextval,'” + student_numer.Text + “','” + password.Text + “')”;登录窗口:
values 第2部分 Oracle开发技术
String oraString = “ Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=BOOK)));User ID=system;Password=asd”;//数据库连接语句
查询图书:
String bookname = “";String bookisbn = ”“;String bmark = ”“;if(textBox1.Text!= ”“)bookisbn =(”ISBN = '“ + textBox1.Text + ”'“);if((textBox2.Text!= ”“)&&(textBox1.Text!= ”“))bookname =(”AND book_name='“ + textBox2.Text + ”'“);else if(textBox2.Text!= ”“)bookname =(”book_name='“ + textBox2.Text + ”'“);bmark = bookname + bookisbn;
if(radioButton2.Checked){ //添加精确查询的代码 if(bmark!= ”“)dataCommand.CommandText = ”SELECT * FROM book.book WHERE “ + bmark;else if(bmark == ”“)
第2部分 Oracle开发技术
MessageBox.Show(”请输入查询数据!“);} else if(radioButton1.Checked){ if(textBox1.Text!= ”“)MessageBox.Show(”不支持ISBN的模糊查询!“);else { //添加模糊查询的代码 if(textBox2.Text!= ”“){ bookname =(”书名 like '%“ + textBox2.Text + ”%'“);dataCommand.CommandText = ”SELECT * FROM book.book WHERE “ + bookname;} else//查询所有图书 { dataCommand.CommandText = ”SELECT * FROM book.book“;} } } else MessageBox.Show(”请选择查询方式!“);
OracleDataReader dataReader = dataCommand.ExecuteReader();
第2部分 Oracle开发技术
BindingSource bs = new BindingSource();bs.DataSource = dataReader;this.dataGridView1.DataSource = bs;if(dataReader.Read()){ lnum = dataReader.GetInt32(3);ynum = dataReader.GetInt32(6);} dataConnection.Close();}
SqlConnection dataConnection;//数据库连接类 SqlCommand dataCommand;//数据库命令类
读者信息:
dataConnection.Open();
dataCommand.CommandText = ”SELECT * FROM book.reader WHERE reader_id='“ + uID + ”'“;OracleDataReader dataReader = dataCommand.ExecuteReader();
第2部分 Oracle开发技术
BindingSource bs = new BindingSource();bs.DataSource = dataReader;this.dataGridView4.DataSource = bs;dataReader.Close();dataConnection.Close();
maxnum =(int)dataGridView4.Rows[0].Cells[”maxlend“].Value;dnum =(int)dataGridView4.Rows[0].Cells[”alredylend“].Value;ymaxnum =(int)dataGridView4.Rows[0].Cells[”maxyuyue“].Value;ydnum =(int)dataGridView4.Rows[0].Cells[”yiyuyue“].Value;}
还书:
dataConnection.Open();String bookisbn;bookisbn = textBox5.Text;if(bookisbn!= ”“){ dataCommand.CommandText = ”DELETE FROM book.borrow WHERE ISBN='“ + bookisbn + ”'“;dataCommand.ExecuteNonQuery();dataCommand.CommandText = ”UPDATE book SET incount=incount+1 WHERE ISBN='“ + bookisbn + ”'“;
第2部分 Oracle开发技术
dataCommand.ExecuteNonQuery();dataCommand.CommandText = maxyuyue=maxyuyue-1 WHERE ISBN='” + bookisbn + “'”;dataCommand.ExecuteNonQuery();dataCommand.CommandText = “UPDATE alredylend=alredylend-1 WHERE reader_id='” + uID + “'”;dataCommand.ExecuteNonQuery();textBox5.Text = “";MessageBox.Show(”归还成功!“);dnum--;
实验总结:
通过这次课程设计,我收获了很多,对oracle数据库从一片空白到现在的有所了解。界面设计和代码用的是C#通过本次课程设计,我们对数据库的应用有了更深刻的体会。网络系统都是离不开数据库的支持的。数据库设计的是否合理,直接影响到系统的性能。数据库理论对于实际应用有很大的指导意义。
本次课程设计的名称是图书管理系统,由于我们能力有限,加之近期课程任务比较紧迫,所以我们负责的这个项目还有许多不完善的地方。可以说我们的这次系统是做的比较丑陋,功能还有很多不完善的地方。但是总的来说还是收获很大的,因为通过这次的团队合作,首先对数据库和C#有了进一步的了解,并且深深体会到团队合作的重要性,还有合理的团队分工是非常重要的。并且能在最后将前台程序和后台数据库连接起来运行,也对我们是一个比较大的挑战,而且我们也成功的做到了这一点。本次的图书管理系统,在功能上仅实现了图书,用户,图书类别和用户的注册管理,只是一些非常基础的功能,没有设计添加图书的功能。此外,该系统原先计划设计的一些功能也没有实现。系统完全实现的功能实现图书信息的删除、更改和查看等。
最后也非常感谢向胜军老师对我们本次课程设计的指导及最后验收的评价。我们也会吸取本次设计经验,为以后的设计继续努力。
reader
SET
”UPDATE
book
SET
第四篇:数据库图书管理系统题目
请设计图书管理系统数据库,要求能满足读者的注册、注销、个人信息修改、图书的入库、图书报废、图书的借阅、归还、续约、滞纳金赔偿、损坏赔偿功能
系统中至少包含如下信息:
读者姓名、id、性别、学历(初等、中等、高等)、年龄、职业类别、图书id、图书名称、图书类别(基础类、科技类、文史类、社会科学、自然科学)、图书书龄、所属出版社、图书价格、图书是否完好、图书借阅人、借阅起始时间、图书借阅时长、图书续约(最多可连续续约3次)、图书是否已归还、图书是否已损坏,读者注册级别(分普通读者和vip读者,普通读者同时可以借阅2本书,vip读者可以同时借阅5本书)。
图书系统中,相同的书籍可以不止一本,读者可以同名。一次借阅期限一个月(30天),一次续约延长一个月。过期后每超出一天须缴纳滞纳金一元。图书损毁后就被报废。
1、请用完整、连续的SQL语句设计数据库和表,请根据情理和场景设计各类约束。
2、请查询‘计算机导论’这本书籍的被借阅次数。
3、请查询借书证号为11的读者历年来的借阅次数(不包括续约)。
4、请用一条或者多条语句查询‘计算机导论’这本书籍当前是否可以借阅。
5、请找出最热门的书籍名称(总共借阅次数)。
6、请找出学历中等或中等以上人员关注度比中等以下人员关注度高的书籍。
7、请查询‘王小东’当前可以借阅多少本书。
8、请查询‘王小东’当前共须缴纳多少滞纳金。
9、请统计各职业类别人员的借阅次数。
10、请查阅哪个出版社的书籍借阅频率最高(可以考虑按进行统计)。
11、检索学历比‘王小东’高,年龄比‘王小东’大,而借阅次数比他少的读者id。
12、请查询至少关注过图书类别中3个类别的读者id。
13、请查询‘计算机导论’书籍在各个学历阶层的借阅次数。
14、请将“根据借书证查询所借阅书籍编号和名称”这样的行为以存储过程加以实现。
第五篇:图书管理系统数据库设计
数据库设计.................................................................2 3.1 专门术语的定义...................................................2 3.1.1 系统中常用的术语(或使用频率较高的术语).........................2 3.1.2 表格定义及规范.................................................2 3.1.2.1数据约定.....................................................2 3.1.2.2表和表字段命名规范:.........................................3 3.2 数据设计.........................................................3 3.2.1 数据流程图设计.................................................3 3.2.2实体关系结构设计...............................................4 3.3安全保密设计.....................................................6 3.3.1 逻辑上的安全保密...............................................6 3.3.2 物理上的安全保密...............................................6 3.4 表格与功能模块相关性分析.........................................7 3.5 表格定义.........................................................7 数据库设计
3.1 专门术语的定义
暂无
3.1.1 系统中常用的术语(或使用频率较高的术语)暂无
3.1.2 表格定义及规范 3.1.2.1数据约定
所有数据项都用英文、汉语拼音或缩写表示,数据库名称除外。
所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,必须有默认值。字符型的默认值为一个空字符值串;数值型的默认值为数值0;逻辑型的默认值为数值0;
其中:系统中所有逻辑型中数值0表示为“假”;数值1表示为“真”。datetime、smalldatetime类型的字段没有默认值,必须为NULL。当字段定义为字符串形时建议使用varchar而不用nvarchar。建议在大多数表中(如报销单,申请单),应都有以下字段: 字段名说明类型默认值 CreatorID创建者int CreatedTime创建时间DatetimeNULL 字符集采用 UTF-8,请注意字符的转换。
所有数据表第一个字段都是系统内部使用自动序列主键列,自增字段,不可空,名称为:id,确保不把此字段暴露给最终用户。
除特别说明外,所有字符串字段都采用varchar(50)类型,(无论汉字还是英文,都算一个字符)。
除特别说明外,所有小数的字段都采用 decimal(18,2)的形式表达。
除特别说明外,所有日期格式都采用 datetime 格式(根据需要提取时间格式); 除特别说明外,所有整形都采用 bigint 格式。除特别说明外,所有字段默认都设置为 null。3.1.2.2表和表字段命名规范:
命名规则约束的范围包括:数据库的命名、表的命名及字段的命名。数据库相关的命名规则采用与通常的编程的变量命名规则原则一致,具体要求如下: 1)字段名及表名为典型的名词结构; 2)中文名称要求语言精练、文法严谨;
3)望文知意、易懂易用,禁止采用如:A002这种命名;
4)主体采用拼音字母的首写字母拼写构成,基于惯常法可适度采用无词义歧义性的英文命名;
5)长度不少于3个字母,不大于12个字母;
6)在对于拼音首字母类似的字段和表,为区别,添加下划线和数字如男性人数:NXRS,女性人数:NXRS_2。
3.2 数据设计
绘制数据流程图的目的是为了方便开发人员与用户的交流,以及为系统的设计提供依据。数据流程图的绘制过程通常采用自顶向下,逐层分解,直到功能细化为止,形成若干层次的数据流程图。3.2.1 数据流程图设计
0层数据流图
1层数据流图
3.2.2实体关系结构设计
图书实体关系
读者实体关系
图书借阅关系实体
用户实体关系
图书类别实体关系
3.3安全保密设计
3.3.1 逻辑上的安全保密
1、系统对非法使用者的安全保密处理措施
2、系统对正常使用者的安全保密处理措施
3、系统对管理员的安全保密 3.3.2 物理上的安全保密
1、数据库系统异常时的还原处理措施
2、设备遭异常毁坏时的安全防护措施
3、数据参数做到及时更新,保证系统正常运行
3.4 表格与功能模块相关性分析
3.5 表格定义
a.图书信息表
b.读者信息表
c.借阅表
d.管理员_书籍
e.管理员_学生