oracle实验

更新时间:2023-12-31 02:18:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 Oracle 安装与使用

1、 安装Oracle 11g(选作)

2、 通过SQL命令行(SQL*PLUS)启动(startup命令)和停止(shutdown命令)数据库 3、 用Net Configuration Assistant完成网络连接配置 4、 使用Oracle常用工具OEM、SQL *PLUS、iSQL*PLUS 5、 使用DBCA工具创建数据库

6、 在新创建数据库内建立表空间(使用CREATE TABLESPACE命令) 7、 创建新的数据库用户

8、 Oracle中的用户管理(用户授权、修改用户口令、删除用户等) 9、 卸载Oracle数据库(选作)

实验二 SQL *Plus 的使用

1、 启动、退出 SQL *Plus 环境 2、 使用 SQL *Plus 命令 (1) DESCRIBE 命令 (2) #号的作用

3、 SQL *Plus 环境下使用脚本文件

(1) 准备工作。在SQL *Plus中输入一条SQL 语句,并以分号结束。 (2) 使用 SAVE 命令将缓冲区中内容保存到文件。 (3) 在编辑器中编辑文件。

(4) 使用 GET 命令将文件读入缓冲区。

(5) 使用 START 命令运行脚本文件,最后使用 SPOOL OFF 命令结束。 (6) 将SQL *Plus 中的各种操作及执行结果复制到d:\\mysql\\result.lst。

4、 使用 CONNECT 和 DISCONNECT 命令在 SQL *Plus 环境下连接和断开Oracle 数据库。 5、 用多种方法运行 SQL 语句。 6、 SQL *Plus 下的格式控制

(1) 修改列标题名称及其对齐方式。 (2) 格式化数据的显示格式。 (3) 复制列的格式。 (4) 使用汇总行。

(5) 设置页与报告的标题和脚注。

实验三 SQL 查询语句设计

1、 在SQL *Plus 环境下使用 CREATE TABLE 语句创建表t_student和 t_score。

t_student表结构如下: 列名 Sno(主键) Sname ssex sbirthday 数据类型 Varchar2(10) Varchar2(10) Number(1) date 限制条件 Not null Not null 学生学号 学生姓名 学生性别(0代表女,1代表男) 出生日期 字段含义 t_score表结构如下: 列名 Sno(主键) score 数据类型 Varchar2(10) Number 限制条件 Not null Not null 学生学号 课程编号 考试成绩 字段含义 Sub_no(主键) Varchar2(10) 2、 使用 INSERT 语句向表t_student和 t_score中输入若干数据。

t_student表数据示例: sno 20100001 20100002 20100003 20110001 20110002 sname 刘浩 张杰 李娟 王强 马力 ssex 1 1 0 1 sbirthday 1991-10-12 1992-01-03 1992-06-14 1991-02-21

t_score表数据示例: sno 20100001 20100002 20100003 20100001 20100003 20110001 20110002 Sub_no 001 001 001 002 002 002 002 score 90 87 88 84 85

3、 完成下列操作并观察结果

(1) 删除学号为 20100001的学生信息。

(2) 将学号为20100001的学生的课程号为002的课程成绩修改为95分。 (3) 显示所有学生的姓名和年龄。 (4) 查询年龄最大的学生天数。 4、 函数的使用

(1) 利用CONCAT函数将学生学号和姓名连接成一个字符串输出。 (2) 从学生学号中提取入学年份,即前4个字符。 (3) 求当前时间所在月的最后一天。 (4) 将学生出生日期按照指定格式输出。 5、 查询设计并实现

(1) 查询每门课程的不及格人数。

(2) 查询课程001的所有学生成绩,显示学生姓名、课程号和成绩信息,按照成绩降序

排列。

(3) 查询选修了两门课程以上的学生学号、学生姓名和选课门数。

实验四 PL/SQL 编程

1、 用PL/SQL块查询数据表信息

(1) 输入学号,查询t_student中的学生姓名。

(2) 执行程序,在系统提示符下输入查询的学生学号后,观察运行结果。 2、 用条件语句控制操作表数据

(1) 用 PL/SQL 程序块来修改表。如果 t_score 表中学号为 20100002、课程号为 001

的选课成绩小于等于80分则加8分,如果大于80分、小于等于90分则加5分,如果大于90分小于97分则只加3分。

(2) 执行后,用查询语言查看学生成绩的变化情况。

3、 使用 PL/SQL 中的循环控制语句,计算1~100中所有能被3整除的偶数,并输出结果。 4、 创建和使用存储过程

利用已建的表t_student和t_score 完成下列设计:

(1) 建立一个带参数的存储过程,功能是向学生表中追加一个记录,其记录内容可

由输入参数提供。

(2) 建立一个带参数的存储过程,它能得到指定学号的学生所有课程的平均成绩。 (3) 首先创建一个带参数的存储过程,其作用是 :当任意输入一个学生的姓名时,

将从表中返回该学生的学号、选修的课程号和成绩;其次执行该存储过程,查询若干指定姓名的学生学号、选修的课程号和成绩。

5、 利用 PL/SQL 中的异常处理

输入一个欲查询学生姓名,若存在则输出该学生的学号,若不存在,则进行异常处理,提示该学生不存在,并输出错误号(SQLCODE)和错误原因(SQLERRM)。

实验五 数据库对象管理

1、 使用与设计视图

(1) 以 SYS 用户身份登录数据库,给予scott用户创建视图的权限。

(2) 以 scott 用户登录数据库,创建一个包含部门号、部门名、部门地址、职工号、

职工名和工种信息的视图,并设计一个对该视图的查询。

(3) 创建查出男生、女生人数,在结果中列标题指定为“男生人数、女生人数”的视图。 2、利用同义词隐藏数据库对象

Scott用户利用同义词将dept表的访问权限授予temp_guest用户,同时不让temp_guest用户知道访问的表是dept表以及表的所有者为scott。

(1) 以SYS 身份登录数据库,创建temp_guest 用户并授予CONNECT、RESOURCE、CREATE SYNONYM以及对scott的dept表查询的权限。

(2)已temp_guest的身份登录到数据库,创建dept表的同义词 department。 (3)系统管理员将temp_guest账号分配给其他数据库用户使用。

(4)其他数据库用户以temp_guest登录数据库,查询department对象内容。 3、使用序列实现自增主键

(1)以scott用户的身份登录数据库,创建一个实验用的表staff(id number primary key,name varchar2(10) not null)。 (2)为表创建自增序列。

(3)重复输入数据,查看staff表 的数据,观察主键是否按照递增排序。 4、运用 PL/SQL 数据结构

(1)使用记录和集合类型。 (2)使用动态SQL。 5、创建索引加快查询

在t_student 表中建立两种不同的索引,进行查询并观察输出。通过 SET AUTOTRACE TRACE EXPLAIN; 代码可以显示查询计划。

实验六 Oracle 游标应用

本实验要用到课程表 t_subject,结构如下:

列名 数据类型 限制条件 Not null Not null 字段含义 课程号 课程名 Sub_no(主键) Varchar2(10) Sub_name(主键) Varchar2(20)

t_subject表数据示例: Sub_no 001 002 003 Sub_name 数据库原理 Oracle数据库应用 数据库系统实现

1、利用游标查询 t_student 表中学生学号、姓名和性别信息,按照学生学号递增排序。 2、用游标生成学生成绩单。要求利用变量来实现按照不同课程统计学生成绩。 3、使用带参数的游标实现2、的功能。 4、用游标更新数据

(1)利用游标实现将学生成绩按照分数字段降序排列,并给前十名的学生加分,分别是第一名加10分,第二名加9分,依此类推。

(2)分别在更新前后查询 t_score 表,查看数据更新情况。

5、使用 REF 游标,输入课程号,动态查询返回所有选修该门课程的学生成绩。

实验七 Oracle 触发器设计

1、使用BEFORE 行级触发器

在 t_score 表上创建行级触发器,要求修改学生成绩时,修改后的成绩不能低于修改前的成绩。

2、使用 AFTER 行级触发器

为保护 t_score 表中数据的安全,需要对任何修改成绩的操作进行审计。创建AFTER 行级触发器,记录所有对 t_score 表的成绩列的数据进行的修改。 3、使用 BEFORE 语句级触发器

在 t_score 表上创建BEFORE 语句级触发器,实现只允许 scott 用户有权修改 t_score 表。

4、使用 AFTER 语句级触发器

创建AFTER 语句级触发器,记录所有对 t_score 表的修改动作。 5、使用 INSTEAD OF 触发器

(1)创建一个包含课程号、课程名、学生学号、姓名、成绩的视图 v_stu_sub_score。 (2)在视图 v_stu_sub_score 上创建INSTEAD OF 触发器,实现视图的更新操作。

6、使用 DDL 触发器

创建DDL 触发器保护 t_student 表不允许被删除。 7、使用系统触发器

创建数据库启动和关闭触发器。为记录数据库的启动和关闭情况,可创建一个表来记录数据库的启动和关闭信息。 8、管理触发器

(1)使用DESC 命令查看数据字典视图 user_triggers 的结构。 (2)学习 ALTER TRIGGER 和 DROP TRIGGER 命令的使用。

本文来源:https://www.bwwdw.com/article/nhmx.html

Top