数据库课程设计报告(教材管理系统)

上传人:无*** 文档编号:170479013 上传时间:2022-11-21 格式:DOC 页数:78 大小:3.16MB
收藏 版权申诉 举报 下载
数据库课程设计报告(教材管理系统)_第1页
第1页 / 共78页
数据库课程设计报告(教材管理系统)_第2页
第2页 / 共78页
数据库课程设计报告(教材管理系统)_第3页
第3页 / 共78页
资源描述:

《数据库课程设计报告(教材管理系统)》由会员分享,可在线阅读,更多相关《数据库课程设计报告(教材管理系统)(78页珍藏版)》请在装配图网上搜索。

1、Oracle数据库管理与设计报告目 录目 录I前 言II第1部分 Oracle管理技术1实验1 数据库管理1实验2 角色和用户管理17实验3 表和视图管理19实验4 索引和序列管理27实验5 PL/SQL编程29实验6 使用游标、存储过程和触发器37实验7 表空间管理40实验8 文件管理48第2部分 Oracle开发技术62 1.本系统模块功能介绍642.数据库设计643.代码部分674.数据库连接715.界面71课程设计体会74前 言数据库技术是计算机科学中发展最快的领域之一。随着网络技术的不断发展,数据库技术与网络技术相结合,已经广泛应用于工作和生活的各个领域。同时,数据库技术及其应用已经

2、成为国内外高校计算机专业和许多非计算机专业的必修或选修课程。Oracle是当前最流行的大型关系数据库之一,支持包括32位Windows、64位Windows、OS、HP-UX、AIX5L、Solaris和Linux等多种操作系统,拥有广泛的用户和大量的应用案例,已成为大型数据库应用系统的首选后台数据库系统。本实验课程要求学生全面了解Oracle数据库的特点和功能。从安装配置、安全性、可用性、互操作性、PL/SQL、可开发性、商业智能等多个方面,对Oracle数据库的各项技术进行学习和实验。通过学习Oracle数据库安装、管理及开发,为今后从事Oracle数据库管理和开发工作打下良好的基础。本实

3、验课程共分2个部分。第1部分为Oracle的管理技术,由实验1实验6组成,包括数据库管理、角色和用户管理、表和视图管理、索引和序列管理、PL/SQL编程、以及使用游标、存储过程和触发器等内容。第2部分为Oracle开发技术,要求完成基于一定背景的管理信息系统的数据库设计,如学生信息管理系统、图书管理系统、人事信息管理系统、网上购物系统等。第1部分为基础题、必做题,第2部分为提高题、选做题。第1部分 Oracle管理技术实验1 数据库管理目的和要求(1)了解Oracle数据库的逻辑结构和物理结构;(2)了解Oracle Enterprise Manager的使用情况;(3)学习关闭和启动数据库实

4、例的方法;(4)学习使用SQL语句创建数据库的方法;(5)学习使用SQL语句删除数据库的方法。实验准备首先要了解Oracle数据库的逻辑结构,包括方案(schema)对象、数据块(data block)、区间(extent)、段(segment)和表空间(tablespace)等。数据库由若干个表空间组成,表空间由表组成,段由区间组成,区间则由数据块组成。Oracle数据库的物理结构由构成数据库的操作系统文件所决定。每个Oracle数据库都由3种类型的文件组成:数据文件、日志文件和控制文件。这些数据库文件为数据库信息提供真正的物理存储。Enterprise Manager 9i是Oracle

5、9i提供的新的管理工具,简称EM。使用它可以完成启动、关闭数据库,创建、删除数据库等功能。只有系统管理员或拥有CREATE DATABASE权限的用户才能创建数据库。可以在Enterprise Manager中通过图形界面创建数据库,也可以使用CREATE DATABASE语句创建数据库。实验内容本实验主要包括以下内容。(1)练习使用不同方法启动和关闭数据库实例。(2)练习使用不同方法创建和删除数据库,要使操作的数据库为用户管理数据库UserMan。1使用SHUTDOWN命令关闭数据库实例练习使用SHUTDOWN命令关闭数据库实例,分别按以下方式启动数据库实例。(1)正常关闭。等待当前所有已连

6、接的用户断开与数据库的连接,然后关闭数据库。正常关闭的语句如下:SHUTDOWN NORMAL(2)立即关闭。回退活动事务处理并断开所有已连接的用户,然后关闭数据库。立即关闭的语句如下:SHUTDOWN IMMEDIATE (3)事务处理关闭。完成事务处理后断开所有已连接的用户,然后关闭数据库。事务处理关闭的语句如下:SHUTDOWN TRANSACTIONAL(4)中止关闭。中止数据库实例,立即关闭数据库。中止关闭的语句如下:SHUTDOWN ABORT每次执行SHUTDOWN语句关闭数据库实例之前,请执行STARTUP命令启动数据库。2使用STARTUP命令启动数据库实例练习使用START

7、UP命令启动数据库实例,分别按以下方式启动数据库实例。(1)启动数据库实例时不装载数据库。执行此操作的命令如下:STARTUP NOMOUNT(2)启动数据库实例,装载数据库,但不打开数据库。通常在数据库维护时执行此操作,对应的命令如下:STARTUP MOUNT(3)启动数据库实例,装载数据库,打开数据库。执行此操作的命令如下:STARTUP OPEN(4)强制实例启动。在遇到特殊异常的情况时,可以强制启动实例。强制启动实例的语句如下:STARTUP FORCE该语句将数据库强行启动到OPEN模式。(5)启动后限制对数据库实例的访问。执行此操作的命令如下:STARTUP RESTRICT每次

8、执行STARTUP语句启动数据库实例之前,请执行SHUTDOWN命令关闭数据库。3使用ORACLE Enterprise Manager关闭数据库实例按照下面的步骤关闭数据库实例。(1)在数据库处于打开状态时,使用SYS用户以SYSDBA身份登录到Enterprise Manager。在主目录页面的“一般信息”栏目中,可以看到“关闭”按钮。(2)单击“关闭”按钮,可以打开“主机和目标数据库身份证明”页面。用户需要拥有管理员的权限才能关闭数据库实例,包括主机操作系统的管理员和当前数据库实例的SYSDBA用户。(3)输入完成后,单击“确定”按钮,打开“确认关闭”页面。(4)单击“是”按钮,开始关闭

9、数据库。关闭操作完成后,单击“刷新”按钮,打开“启动数据库实例”页面。4使用ORACLE Enterprise Manager启动数据库实例按照下面的步骤启动数据库实例。(1)使用SYS用户以SYSDBA身份登录到Enterprise Manager。(2)单击“启动”按钮,打开“主机和目标数据库身份证明”页面。用户需要拥有管理员的权限才能启动数据库实例,包括主机操作系统的管理员和当前数据库实例的SYSDBA用户。(3)输入完成后,单击“确定”按钮,打开“确认打开”页面。 (4)单击“是”按钮,开始打开数据库。 5使用SQL语句创建数据库按照如下条件创建数据库OracleDB(以SYSDBA的

10、用户身份连接到数据库)。(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

11、)定义临时文件为temp01.dbf,大小为10MB。CREATE DATABASE语句实例:CREATE DATABASE OracleDB USER SYS IDENTIFIED BY SYSPWD USER SYSTEM IDENTIFIED BY SYSTEMPWD CONTROLFILE REUSE LOGFILE GROUP 1 (redo01.log) SIZE 100M , GROUP 2 (redo02.log) SIZE 100M MAXLOGFILES 10 MAXLOGMEMBERS 5 MAXDATAFILES 100 MAXINSTANCES 1 CHARACTER

12、 SET US7ASCII DATAFILE sys01.dbf SIZE 100M REUSE EXTENT MANAGEMENT LOCAL DEFAULT TABLESPACE tbs_1 DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE temp01.dbf SIZE 10M REUSE;6使用SQL语句删除数据库按照如下步骤删除数据库UserMan。(1)在删除数据库之前,需要用户以SYSDBA或SYSOPER身份登录,代码如下:CONNECT SYS/SYSPWD AS SYSDBA;其中SYSPWD为SYS用户的密码,请根据实际情况输入。

13、(2)关闭数据库,再以MOUNT模式启动数据库,代码如下:SHUTDOWN IMMEDIATE;STARTUP MOUNT;(3)删除数据库,代码如下:DROP DATABASE;7.使用OEM平台建数据库8.监听数据库操作: 实验2 角色和用户管理目的和要求(1)了解Oracle数据库用户和角色的概念;(2)学习使用SQL语句创建Oracle用户;(3)学习使用SQL语句创建Oracle角色;(4)学习使用SQL语句指定用户的角色。实验准备(1)了解Oracle数据库用户可以分为6种类型,即数据库管理员、安全官员、网络管理员、应用程序开发员、应用程序管理员和数据库用户;(2)了解角色是对用户

14、的一种分类管理办法,不同权限的用户可以分为不同的角色;(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语句创建数据

15、库角色。(1)以SYSTEM用户登录到SQL*PLUS。(2)使用CREATE ROLE语句创建角色UserManRole,密码为myrolepwd,代码如下:CREATE ROLE UserManRole IDENTIFIED BY myrolepwd;2使用SQL语句为数据库角色授权参照下面的步骤练习使用GRANT语句为数据库角色授权。(1)以SYSTEM用户登录到SQL*PLUS。(2)使用GRANT语句将角色UserManRole授予CONNECT和RESOURCE权限,代码如下:-设置角色权限GRANT CONNECT TO UserManRole ;GRANT RESOURCE T

16、O 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,代码如下:-设置系统权

17、限GRANT UNLIMITED TABLESPACE TO UserManAdmin ;4使用SQL语句指定用户角色参照下面的步骤将用户UserMan指定为角色UserManRole。(1)以SYSTEM用户登录到SQL*PLUS。(2)使用GRANT语句将用户UserMan指定为角色UserManRole,代码如下:GRANT UserManRole TO UserManAdmin ; 实验3 表和视图管理目的和要求(1)了解Oracle表和视图的概念;(2)学习使用SQL语句创建表;(3)学习使用SELECT语句查询数据;(4)学习使用SQL语句创建视图。实验准备(1)了解表是数据库中最

18、常用的数据存储单元,它包括所有用户可以访问的数据。作为关系型数据库,Oracle表由行和列组成。(2)视图是一个虚拟的表,它在物理上并不存在。视图可以把表或其它视图的数据按照一定的条件组合起来,所以也可以把它看成是一个存储的查询。视图并不包含数据,它只是从基表中读取数据。(3)了解使用CREATE TABLE语句创建表的方法。(4)了解使用SELECT语句查询数据的方法。(5)了解使用SQL语句创建视图的方法。实验内容本实验主要包括以下内容。(1)练习使用SQL语句创建表;(2)练习使用SQL语句向表中插入数据;(3)练习使用SQL语句修改表中的数据;(4)练习使用SQL语句删除表中的数据;(

19、5)练习使用SELECT语句查询数据;(6)练习使用SQL语句创建视图。1使用SQL语句创建表使用CREATE TABLE语句创建用户信息表Users,结构如表1所示。表1 表Users的结构编 号字段名称数据结构说 明1UserIdNUMBER用户编号2UserNameVARCHAR2 40用户名3UserTypeNUMBER 1用户类型(1 管理员用户,2 普通用户)4UserPwdVARCHAR2 40参照下面的步骤练习使用CREATE TABLE语句创建表Users。(1)以实验2中创建的UserManAdmin用户登录到SQL*PLUS。Connect usermanadmin/*

20、AS SYSDBA(2)使用CREATE TABLE语句创建表Users,代码如下:CREATE TABLE UserManAdmin.Users(UserIdNumber Primary Key, UserNameVarchar2(40) NOT NULL, UserTypeNumber(1), UserPwdVarchar2(40);使用CREATE TABLE语句创建用户登录信息表LoginInfo,结构如表2所示。表2 表LoginInfo的结构编 号字段名称数据结构说 明1UserIdNUMBER用户编号2LoginTimeCHAR(20)登录时间参照下面的步骤练习使用CREATE

21、TABLE语句创建表LoginInfo。(1)以实验2中创建的UserManAdmin用户登录到SQL*PLUS。(2)使用CREATE TABLE语句创建表LoginInfo,代码如下:CREATE TABLE UserManAdmin.LoginInfo(UserIdNumber, LoginTimeCHAR(20) NOT NULL);2使用SQL语句向表中插入数据使用INSERT语句向表Users中插入用户数据,内容如表3所示。表3 表Users中的数据UserIdUserNameUserTypeUserPwd1Admin1AdminPwd2User2UserPwd3Zhangsan2

22、ZhangsanPwd4Lisi2LisiPwd参照下面的步骤练习使用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, Zh

23、angsanPwd);INSERT INTO UserManAdmin.Users VALUES(4, Lisi, 2, LisiPwd);COMMIT;使用INSERT语句向表LoginInfo中插入数据。内容如表4所示。表4 表LoginInfo中的数据UserIdLoginTime12010-5-15 10:33:0212010-5-16 08:34:1312010-5-17 09:13:1122010-5-15 07:35:0222010-5-16 08:11:5422010-5-17 09:13:1132010-5-15 08:34:0232010-5-16 09:34:133201

24、0-5-17 10:13:0942010-5-15 11:34:0242010-5-16 13:34:1342010-5-17 15:13:12参照下面的步骤练习使用INSERT语句向表LoginInfo中插入数据。(1)以实验2中创建的UserManAdmin用户登录到SQL*PLUS。(2)使用INSERT语句向表LoginInfo中插入数据,代码如下:INSERT INTO UserManAdmin.LoginInfo VALUES(1, 2010-5-15 10:33:02);INSERT INTO UserManAdmin.LoginInfo VALUES(1, 2010-5-16

25、08:34:13);INSERT INTO UserManAdmin.LoginInfo VALUES(1, 2010-5-17 09:13:11);INSERT INTO UserManAdmin.LoginInfo VALUES(2, 2010-5-15 07:35:02);INSERT INTO UserManAdmin.LoginInfo VALUES(2, 2010-5-16 08:11:54);INSERT INTO UserManAdmin.LoginInfo VALUES(2, 2010-5-17 09:13:11);INSERT INTO UserManAdmin.Login

26、Info VALUES(3, 2010-5-15 08:34:02);INSERT INTO UserManAdmin.LoginInfo VALUES(3, 2010-5-16 09:34:13);INSERT INTO UserManAdmin.LoginInfo VALUES(3, 2010-5-17 10:13:09);INSERT INTO UserManAdmin.LoginInfo VALUES(4, 2010-5-15 11:34:02);INSERT INTO UserManAdmin.LoginInfo VALUES(4, 2010-5-16 13:34:13);INSER

27、T INTO UserManAdmin.LoginInfo VALUES(4, 2010-5-17 15:13:12);COMMIT;3使用SQL语句修改表中的数据使用UPDATE语句可以修改表Users中的数据。参照下面的步骤练习将表Users中Admin用户的密码修改为AdminPassword。(1)以SYSTEM用户登录到SQL*PLUS。Connect system/* AS SYSDBASELECT * FROM USERMANADMIN.USERS;SELECT * FROM USERMANADMIN.LOGININFO;(2)使用UPDATE语句将表Users中Admin用户的

28、密码修改为AdminPassword,代码如下:UPDATE UserManAdmin.Users SET UserPwd=AdminPassword WHERE UserName=Admin;(3)使用SELECT语句查看用户Admin的密码,代码如下:SELECT UserPwd FROM UserManAdmin.Users WHERE UserName=Admin;SELECT * FROM USERMANADMIN.USERS;4使用SQL语句删除表中的数据使用DELETE语句可以删除表Users中的数据。参照下面的步骤练习将表Users中Zhansan用户的记录删除。(1)以SYS

29、TEM用户登录到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)查询表Users中的所有数据。以SYSTEM用户登录到SQL*PLUS,然后执行如下代码:SEL

30、ECT * 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*

31、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;(

32、6)实现连接查询。查看每个用户的登录记录。以SYSTEM用户登录到SQL*PLUS,然后执行如下代码:SELECT U.USERID,USERNAME,LOGINTIME FROM USERMANADMIN.USERS U JOIN USERMANADMIN.LOGININFO L ON U.USERID=L.USERID;在上面的SELECT语句中涉及两个表:表Users和表LoginInfo。在FROM子句中,为每个表指定一个别名,表Users的别名为u,表LoginInfo的别名为1。6使用SQL语句创建视图使用CREATE VIEW语句创建用户登录信息表UserLogin,代码如下:C

33、REATE VIEW UserLoginASSELECT U.USERID,USERNAME,LOGINTIME FROM USERMANADMIN.USERS U JOIN USERMANADMIN.LOGININFO L ON U.USERID=L.USERID;SELECT * FROM UserLogin;实验4 索引和序列管理目的和要求(1)了解索引的概念和作用;(2)了解序列的概念和作用;(3)学习使用SQL语句创建索引;(4)学习使用SQL语句创建序列。实验准备(1)了解索引是对数据库表中一个或多个列的值进行排序的结构。可以利用索引快速访问数据库表中的特定信息。(2)了解序列号是

34、一个Oracle整数,最多可有38个数字。序列的作用是自动生成整型数值,作为表中标识字段的值。有许多表在创建时定义了一个标识字段,此字段的值需要由系统自动生成,每当插入一条新记录时,此字段的值自动加1。在Oracle中,这个功能由序列来实现。(3)了解使用CREATE INDEX语句创建索引的方法。(4)了解使用CREATE SEQUENCE语句创建序列的方法。实验内容本实验主要包括以下内容。(1)练习使用SQL语句创建索引;(2)练习使用SQL语句创建序列;1使用SQL语句创建索引使用CREATE INDEX语句在Users表的UserName字段上创建索引。代码如下:CREATE INDE

35、X index_username ON usermanadmin.Users (UserName)TABLESPACE Users;2在创建表的同时创建索引在使用CREATE TABLE语句创建表的同时,可以为指定字段创建索引。创建表Employees,在字段EmpName上创建索引。表Employees的结构如表5所示。表5 表Employees的结构编 号字段名称数据结构说 明1EmpIdNUMBER编号2EmpNameVARCHAR2(50)姓名3SexCHAR(2)性别4UserIdNUMBER用户编号CREATE TABLE Employees(EmpIdNumber, EmpNam

36、eVARCHAR2(50) UNIQUE, SexCHAR(2), UserIdNumber);3使用SQL语句创建序列使用CREATE SEQUENCE语句创建序列。序列的最小值为1,并且没有最大值限制。序列的初始值为1,序列间隔为1。代码如下:CREATE SEQUENCE EMP_SMINVALUE 1NOMAXVALUESTART WITH 1INCREMENT BY 1NOCYCLECACHE 20;2在插入数据时使用序列在使用INSERT语句向表Employees中插入数据时,可以使用序列EMP_S生成字段EmpId的值,代码如下:INSERT INTO Employees (Em

37、pId, EmpName) VALUES(EMP_S.NEXTVAL, Employee1);INSERT INTO Employees (EmpId, EmpName) VALUES(EMP_S.NEXTVAL, Employee2);INSERT INTO Employees (EmpId, EmpName) VALUES(EMP_S.NEXTVAL, Employee3);COMMIT;SELECT * FROM Employees;实验5 PL/SQL编程目的和要求(1)了解PL/SQL语言的结构;(2)了解PL/SQL变量和常量的声明和使用方法;(3)学习条件语句的使用方法;(4)学

38、习分支语句的使用方法;(5)学习循环语句的使用方法;(6)学习使用Oracle系统函数。实验准备首先要了解PL/SQL语言是结构化程序设计语言。块(Block)是PL/SQL程序中最基本的结构,所有PL/SQL程序都是由块组成的。PL/SQL的块由变量声明、程序代码和异常处理代码3部分组成。在PL/SQL中,常量和变量在使用前必须声明,可以使用DECLARE对变量进行声明。实验内容本实验主要包括以下内容。(1)练习条件语句的使用方法;(2)练习分支语句的使用方法;(3)练习循环语句的使用方法;(4)练习使用Oracle系统函数。1使用条件语句参照下面的步骤练习使用条件语句。(1)以SYSTEM

39、用户登录到SQL*PLUS。(2)执行如下程序,观察结果。SET ServerOutput ON;DECLARE Num INTEGER := -11;BEGIN IF Num 0 THEN dbms_output.put_line( 正数 ); ELSE dbms_output.put_line( 0 ); END IF;END;2使用分支语句参照下面的步骤练习使用分支语句。(1)以SYSTEM用户登录到SQL*PLUS。(2)执行如下程序,观察结果。SET ServerOutput ON;DECLARE varDAY INTEGER := 3; Result VARCHAR(20);BEG

40、IN 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;3使用循环语句LOOPEXITEND语句:此语句的功能是重复执行循环体中的程序块,直到执行EXIT语句,退出循环。LOOPEXIT WHENEND:此语句的功能是重复执行循环体中的程序块,直到满足EXIT WHEN后面的判断语

41、句时,退出循环。WHILELOOPEND 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

42、.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; dbms_output.put_line( v_Num ); EXIT WHEN v_Num = 3; dbms_output.put_line( + ); v_Num :=

43、 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_Nu

44、m + 1; END LOOP; dbms_output.put_line( = ); dbms_output.put_line( v_Sum );END;4使用系统函数(1)数值型函数ABS:返回给定数字表达式的绝对值。CEIL:返回大于或等于所给数字表达式的最小整数。FLOOR:返回小于或等于所给数字表达式的最大整数。POWER:返回给定表达式指定次方的值。ROUND:返回数字表达式并四舍五入为指定的长度或精度。(2)字符型函数ASCII:返回字符表达式最左端字符的ASCII代码值。LENGTH:返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格。UPPER:返回将小写字符数

45、据转换为大写的字符表达式。(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)

46、);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;程序三: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;程序四:S

47、ET 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

48、.456, -2) ); dbms_output.put_line( ROUND(123.456, -3) );END;程序六:SET ServerOutput ON;BEGIN dbms_output.put_line( ASCII(ABC) );END;程序七:SELECT UserName, LENGTH(UserName) FROM usermanadmin.UsersWHERE UserType = 1;程序八:SET ServerOutput ON;BEGIN dbms_output.put_line( UPPER(abc) );END;程序九:SET ServerOutput O

49、N;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;程序十二:SET ServerOutput ON;DECLARE date1 VARCHAR(20) := 2010-05-17 ; date2 VARCHAR(20) := 2010-10-17 ;BEGI

50、N dbms_output.put_line( MONTHS_BETWEEN( TO_DATE( date2, yyyy-mm-dd ), TO_DATE( date1, yyyy-mm-dd ) ) ); END;程序十三:SELECT COUNT( UserName ) FROM UserManadmin.Users;程序十四:SELECT MAX( UserId ) FROM UserManadmin.Users;程序十五:SELECT MIN( UserId ) FROM UserManadmin.Users;实验6 使用游标、存储过程和触发器目的和要求(1)了解游标的概念和工作原理;

51、(2)了解存储过程的分类和使用方法;(3)了解触发器的概念;(4)学习编写和执行自定义过程;(5)学习编写和执行自定义函数;(6)学习创建和使用触发器。实验准备首先要了解游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了。将游标放置到某行后,即可对该行数据进行操作,最常见的操作是提取当前行数据。了解PL/SQL包括3种存储过程,即过程、函数和程序包。了解触发器是一种特殊的存储过程,当指定表中的数据发生变化时自动运行。实验内容本实验主要包括以下内容。(1)练习创建和使用游标的方法;(2)练习编写和执行自定义过程的方法;(3)练习编写和执行自定义函数的方法;

52、(4)练习创建和使用触发器的方法。1创建和使用游标创建游标MyCursor,从表LoginInfo中读取指定用户的登录信息,操作步骤如下:(1)以UserManAdmin用户登录到SQL*PLUS。Connect usermanadmin/* AS SYSDBA(2)执行如下程序:/*打开显示模式*/SET ServerOutput ON;DECLARE CURSOR Mycursor( varUserName VARCHAR2 ) IS SELECT UserName,LoginTime FROM usermanadmin.Users, usermanadmin.LoginInfo WHER

53、E Users.UserId = Logininfo.UserId AND users.UserName = varUserName;BEGIN -开始程序体 FOR var_LoginRecord IN MyCursor( Admin ) LOOP /*显示保存在记录变量var_LoginRecord中的数据*/ dbms_output.put_line( 用户名: | var_LoginRecord.UserName | , 登录时间: | var_LoginRecord.LoginTime ); END LOOP;END;2编写和执行自定义过程参照下面的步骤练习编写和执行自定义过程:(1

54、)以UserManAdmin用户登录到SQL*PLUS。(2)执行如下程序,观察结果。/*创建示例过程ResetPwd,此过程的功能是将表User中指定用户的密码重置为*/CREATE OR REPLACE PROCEDURE UserManadmin.ResetPwd( v_UserId IN NUMBER )ASBEGIN UPDATE Users SET UserPwd = WHERE UserId = v_UserId;END;/*使用EXEXUTE命令可以调用过程。如,要将编号为1(用户Admin)的用户密码重置*/EXECUTE ResetPwd( 1 );SELECT UserN

55、ame, UserPwd FROM usermanadmin.Users;/*使用DROP PROCEDURE命令可以删除过程*/DROP PROCEDURE usermanadmin.ResetPwd;3编写和执行自定义函数参照下面的步骤练习编写和执行自定义函数GetLastLogin,获取指定用户最后一次登录的时间。(1)以SYSTEM用户登录到SQL*PLUS。Connect system/* AS SYSDBA(2)执行如下程序:CREATE OR REPLACE FUNCTION GetLastLogin( name IN usermanadmin.Users.UserName %

56、Type )RETURN usermanadmin.LoginInfo.LoginTime % TypeASoutTime usermanadmin.LoginInfo.LoginTime % Type;BEGIN SELECT MAX( usermanadmin.LoginInfo.LoginTime ) INTO outTime FROM usermanadmin.Users JOIN usermanadmin.LoginInfo on usermanadmin.Users.UserId =usermanadmin.LoginInfo.UserId where usermanadmin.U

57、sers.UserName = | name | ORDER BY usermanadmin.LoginInfo.LoginTime DESC; RETURN outTime;END;4创建和使用触发器参照下面的步骤创建一个触发器MyTrigger,它的作用是当表Users中的记录被删除后,自动删除表LoginInfo中对应的用户登录记录,从而保证数据的完整性。(1)以SYSTEM用户登录到SQL*PLUS。(2)执行如下程序,观察结果。CREATE OR REPLACE TRIGGER MyTriggerAFTER DELETE ON usermanadmin.Users FOR EACH

58、ROWBEGIN DELETE FROM usermanadmin.LoginInfo WHERE UserId = : old.UserId;END;(3)执行下面的语句,观察删除用户Users后,在表LoginInfo中是否还存在其登录的记录。DELETE FROM usermanadmin.Users WHERE UserName = Users ;SELECT * FROM usermanadmin.LoginInfo;实验7 表空间管理目的和要求(1)了解表空间的概念和工作原理;(2)学习创建、修改、查询和删除用户表空间;(3)学习创建、修改、查询、切换和删除撤销表空间。实验准备首先要了解表空间是Oracle数据库最高层次的逻辑存储结构,其中保存着由段、区和块等逻辑存储结构描述的各种模式对象。Oracle表空间分为系统表空间、临时表空间、撤销表空间和用户表空间4种类型。用户表空间主要用来保存用

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!