您的当前位置:首页数据库原理实验指导书(本科)

数据库原理实验指导书(本科)

2022-04-30 来源:乌哈旅游


实验一 数据定义语言DDL(2学时)

一、 实验题目:数据定义语言DDL 二、 实验目的和要求 1、创建和定义表的结构 2、修改表的结构 3、插入数据

4、简单查询语句的使用 三、 实验内容

设有一个学生课程数据库,包括学生关系Student、课程关系Course、选修关系SC。一个学生可选多门课,每门课可有多位学生选修。注意学号和课程号类型为字符。 Student 学号 姓名 性别 年龄 所在系 Sno Sname Ssex Sage Sdept 120501401 李勇 男 21 ES 120501402 刘晨 女 20 ES 120501403 王敏 女 19 ES 120501404 张立 男 20 ES 120501501 刘刚 男 22 CS 120501502 陈波 男 21 CS 120501503 肖俊 男 20 CS 120501504 姚明 男 21 CS 120501601 张芸 女 20 IS 120501701 沈雪 女 21 MA Course

课程号 Cno 001 002 003 004 005 006 007 008 SC

课程名 Cname 数据库 高等数学 信息系统 操作系统 数据结构 数据处理 C语言 概率统计 先行课 Cpno 005 006 007 006 002 学分 Ccredit 4 2 4 3 4 2 4 3 第1页

学号 Sno 120501401 120501401 120501401 120501401 120501401 120501402 120501402 120501402 120501402 120501402 120501403 120501403 120501403 120501403 120501403 120501404 120501404 120501404 120501404 120501404 120501501 120501502 120501503 120501504 120501601 120501701

属性类型: 属性 Sno Sname Sage Ssex Sdept Cno Cname 第2页

课程号 Cno 001 002 005 007 006 001 002 005 007 006 001 002 005 007 006 001 002 005 007 006 002 002 002 002 002 002 成绩 Grade 92 85 84 93 79 88 86 76 93 81 90 89 87 91 50 80 76 69 56 76 85 86 75 87 95 96 类型 char(8) varchar(20) number(3) char(2) char(8) char(3) varchar(20) Cpno Ccredit Grade

char(3) number(2) number(4,1) 1、确定主码,外码。创建三个表,可用DESC命令查看创建结果。 2、将数据插入数据库 。

3、使用简单查询语句查看输入的数据 四、 注意事项 五、 问题讨论

通过这次上机实践,你有哪些心得体会?

实验二 查询数据库(2学时)

一、 实验题目:查询数据库 二、 实验目的和要求

1. 使用SQL语言完成对单表的简单查询 2. 对数据源为多表的复杂查询 3. 使用集函数

三、 实验内容

在实验二的基础上写出完成下列要求的SQL语句:

(1)查询电子科学系(ES)全体学生的姓名。

(2)查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。 (3)查询每个学生的学号、姓名、选修的课程名及成绩。 (4)列出姓张的学生的学号、姓名

(5)查询每门课程的课程号、最高成绩,最低成绩和平均成绩,结果按Cno升序排列。

(6)查询1205014班的所有平均成绩高于80的学生的学号、平均成绩,结果按学号排序。

(7)查询每个学生的学号和已修的总学分。(注:成绩不及格就没有学分) (8) 查询每个学生的的学号、姓名、平均成绩,结果按平均成绩降序排列。 四、 注意事项 五、 问题讨论

通过这次上机实践,你有哪些心得体会?

实验三 修改数据库(2学时)

一、 实验题目:修改数据库 二、 实验目的和要求

1. 使用SQL语言完成对数据库的修改

第3页

2. 使用SQL语言完成对数据库的删除 3. 视图的创建与使用

三、

(1)将课程高等数学的学分改为4分。 (2)删除课程号为‘007’的课程。

(3)将所有选修了课程号为“003”的课程的学生的该门成绩改为原来的1.4倍。

(4)删除“王敏”的所有选课记录。 (5)找出每门课程的最高成绩,并创建一个表存放每门课程所对应的课程的课程号、最高成绩。从创建的表中查询数据 四、 注意事项

多个表之间存在参照完整性约束,修改与删除数据时要考虑先后次序 五、 问题讨论

通过这次上机实践,你有哪些心得体会?

实验四 结构化流程控制(4学时)

一、 实验题目:结构化流程控制 二、 实验目的和要求

1. 熟悉常用的字符函数、数值函数、日期函数 2. 熟悉常用的数据类型转换函数 3. 熟悉常用的一般函数 4. 匿名块的定义与使用

5. 条件控制和循环语句的使用 6. 游标的使用 三、 实验内容

1、字符函数的使用:字母大小写函数、首字母大写函数、字符串的连接、取子串,查找子串等

2、数值函数:舍入函数、截断函数、取模函数 3、日期函数

4、数据类型转换:字符、日期、数值三种数据之间的转换函数 5、其他函数:NVL,NVL2,DECODE以及CASE的使用

6、编写一个匿名块:给定一个分数,利用条件语句判断其等级。 7、编写一个匿名块:指定学号,查出学生的平均成绩。 8、编写一个匿名块:指定学号,使用游标查出该学生的所有课程的成绩。 9、给定课程号的起始编号,利用基本循环、WHILE 和FOR三种循环语句向COURSE表增加三个元组。

四、 注意事项

1、为了在控制台能查看DBMS_OUTPUT包的函数PUT_LINE的输出,需要先用

set serveroutput on 把控制台输出设置为打开状态。 2、在定义数据类型时,注意%TYPE和%ROWTYPE的使用。

3、利用循环向课程表中连续增加记录时,要注意所创建的course表中课程

第4页

实验内容

号的数据类型,如果是char型,在输入时需要用转换函数形成课程号,比如concat(‘00’,to_char(i)),其中i为整型。 五、 问题讨论

通过这次上机实践,你有哪些心得体会?

实验五 存储过程与函数(2学时)

一、 实验题目:存储过程与函数 二、 实验目的和要求

1. 存储过程与函数、包的定义与使用 三、 实验内容

1、创建过程

(1)创建过程search_student 输入:学号

输出:用参数传递出该学生的基本信息 (2)创建过程insert_student 输入:一个学生的信息

要求在学生表中插入该学生的信息。 2、创建函数average_grade 输入:学号

返回:该学生的平均成绩 3、创建包main_student,

将1、2的过程和函数集成于其包中。

要求:定义针对学生信息的记录类型,并作为过程insert_student和search_student的参数类型 四、 注意事项

1、创建过程insert_student时,可将输入参数声明为记录型。 五、 问题讨论

通过这次上机实践,你有哪些心得体会?

实验六 数据库安全(4学时)

一、 实验题目:数据库安全 二、 实验目的和要求 1. 数据库安全技术使用 2. 会创建用户,角色 3. 会授权和回收权限 4. 使用触发器完成审计 三、 实验内容

1. 用system登录后,创建数据库用户\"cdtu_cs\" ,不对该用户授权.用cdtu_cs连接数据库。观察结果,并解决问题

2. 在1的基础上,使用用户\"cdtu_cs\"登录,创建student表。观察结果,并解决问题。将数据插入到student表。创建course和sc表并导

第5页

入数据。

3. 将DBA角色授予用户\"cdtu_cs\",创建另一个用户\"cdtu_cs_temp\将属于用户\"cdtu_cs\"的表的相关权限授予cdtu_cs_temp,对student、course、sc可查询,对student可插入数据,对sc表可修改。

以用户\"cdtu_cs_temp\"身份重新登陆,对student表、course表和SC表进行DML操作,包括插入、修改和删除操作。观察结果,哪些成功,哪些不成功?注意访问cdtu_cs的表,要加前缀,比如cdtu_cs.student。 4. 以用户\"cdtu_cs\"身份登陆,撤销cdtu_cs_temp对student表、course表和SC的权限。以\"cdtu_cs_temp\"身份登陆,仍对student表、course表和SC进行DML操作,观察结果

5. 以用户\"cdtu_cs\"身份登陆,在数据库中创一个名为role_cdtu的数据库角色,授予该角色对student表、course表和SC表的操作权限。授予用户\"cdtu_cs_temp\"角色\" role_cdtu\"。

以用户\"cdtu_cs_temp\"身份登陆,观察对student表、course表和SC表的DML操作。

6. 撤销cdtu_cs_temp拥有的role_cdtu角色,观察cdtu_cs_temp对student表、course表和SC表的DML操作。

7. 以\"cdtu_cs\"登录,授予cdtu_cs_temp用户对表course执行select,insert,update语句的对象权限,并允许该用户将其权限授予其他用户,将create table的系统权限授予cdtu_cs_temp并可转授。创建用户cdtu_cs_temp2

以\"cdtu_cs_temp\"登录,将对表course执行select,insert,update语句的权限授予cdtu_cs_temp2。将create table的权限授予cdtu_cs_temp2

以\"cdtu_cs_temp2\"登录,观察对student表、course表和SC表的DML操作。观察是否可创建一个新表。 8. 在7的基础上,以\"cdtu_cs\"登录,撤消cdtu_cs_temp用户对表course执行select,insert,update语句的权限。撤消cdtu_cs_temp拥有的create table系统权限 以\"cdtu_cs_temp\"登录,观察对student表、course表和SC表的DML操作。观察是否可创建新表 以\"cdtu_cs_temp2\"登录,观察对student表、course表和SC表的DML操作。观察是否可创建新表。

9. 创建表course_log(operation,oper_time,oper_user)记录对表course的操作情况。

其中operation(操作),oper_user(用户)类型均为varchar2(50), oper_time(日期时间)类型为date,主码为(operation,oper_time),operation的可能值为delete,update,或insert 创建语句级触发器完成对ourse的操作审计。 四、 注意事项

1. 连接数据库需要有create session的权限 2. 创建表需要有create table的权限

3. 删除对象权限,存在级联删除的现象;删除系统权限时,不级联删除 4. oracle中的系统变量SYSDATE表示系统日期时间,user表示当前用

第6页

户名

五、 问题讨论

通过这次上机实践,你有哪些心得体会?

实验七 数据库完整性(2学时)

一、 实验题目:数据库完整性 二、 实验目的和要求 1. 理解实体完整性

2. 理解引用完整性并实现 3. 理解自定义完整性

4. 使用触发器实现自定义完整性 三、 实验内容

1. 创建student表、course表和SC表,三个表不定义主码和外码,向student表、course表插入重复数据,并观察结果。向SC表插入选课记录,其学号和课程号并未在student表、course表出现过,观察结果。 2. 重新定义student表、course表和SC表,要求定义了主码和外码。向student表、course表插入重复数据,并观察结果。向SC表插入选课记录,其学号和课程号并未在student表、course表出现过,观察结果。

3. 在2的基础上,将正确数据导入三个表。删除student表中的学生,若其学号被sc中的数据引用,会发生什么结果?若其学号没有被sc中的数据引用,会发生什么结果?

将sc在sno上的外码修改为级联删除,重复上面的内容并观察结果。 4. 删除course表上的课程,若cno被cpno引用,观察cpno值的变化 5. 将学生姓名上添加非空约束,在插入数据时不输入姓名,观察结果。 6. 将学生姓名上添加唯一约束,输入两个学生元组,其姓名相同。观察结果。

7. 在学生年龄上添加check约束,要求年龄大于等于17,小于等于40.输入输入两个学生元组,其年龄分别为15和45,观察实验结果

8.使用触发器维护数据完整性

在student表中添加列credit用于保存总学分。当对sc表添加元组时若其成绩大于等于60,则查询course表并增加总学分。删除时,减少总学分。修改时,若成绩从小于60变为及格则增加总学分,否则总学分不变。

四、 注意事项 五、 问题讨论

通过这次上机实践,你有哪些心得体会?

实验九 CASE工具概念数据模型建模(4学时)

一、 目的与要求

第7页

1、熟悉PowerDesigner中概念数据模型建模环境 2、学会使用域、数据项

3、使用PowerDesigner建立E-R图

二、 实验准备

1、硬件环境:PC系列的微机。

2、软件环境: ①建模软件:PowerDesigner 12.5。

②操作系统:Windows 7。

三、 实验内容和步骤

1. 医院病房管理建模

某医院病房管理中有如下信息:

若干科室,科室有科名,科地址,科电话等性质,每个科室有不同的的科名; 若干病房,病房有病房号,床位数,一个科室有多个病房,一个病房只能属于一个科室,一个病房可入住多个病人;

若干医生,医生有姓名,职称,年龄,工作证号,一个科室有多个医生一个医生只能属于一个科室,但可主管多个病人的诊治;

若干病人,病人有病历号,姓名,性别等信息,一个病人的主管医生只有一个。

其中,每个科室有不同的的科名;每个病人有不同的病历号 请设计该系统的E-R图(CDM)。 2、学生与教师教学建模

(1)有若干班级,每个班级包括:班级号、班级名、人数、教室 (2)每个班级有若干学生,学生只能属于一个班,学生包括:学号、姓名、性别、年龄

(3)有若干教师,教师包括:编号、姓名、性别、年龄、职称 (4)开设若干课程,课程包括:课程号、课程名、课时、学分 (5)一门课程有多名学生选修,每名学生可选多门课。 请设计该系统的E-R图。

四、 实验注意事项

1、建立模型时,注意先建立域,再建数据项,最后建立实体联系图。 2、数据项通过设置可以重用

五、 问题讨论

1、通过这次上机实践,你有哪些心得体会? 2、实验题中的设计为何没有考虑具体的DBMS?

3、在PowerDesigner 12.5表示多对多的联系集有哪两种方式

实验十 CASE工具关系模型建模(2学时)

一、 目的与要求

第8页

1、熟悉PowerDesigner中关系数据模型建模环境 2、使用PowerDesigner建立关系模式

二、 实验准备

1、硬件环境:PC系列的微机。

2、软件环境: ①建模软件:PowerDesigner 12.5。

②操作系统:Windows XP SP3

三、 实验内容和步骤

1. 医院病房管理建模

某医院病房管理中有如下信息:

若干科室,科室有科名,科地址,科电话等性质,每个科室有不同的的科名; 若干病房,病房有病房号,床位数,一个科室有多个病房,一个病房只能属于一个科室,一个病房可入住多个病人;

若干医生,医生有姓名,职称,年龄,工作证号,一个科室有多个医生一个医生只能属于一个科室,但可主管多个病人的诊治;

若干病人,病人有病历号,姓名,性别等信息,一个病人的主管医生只有一个。

其中,每个科室有不同的的科名;每个病人有不同的病历号 1)请设计该系统的关系模式(PDM)。

2)将实验一第1小题的实验结果使用工具直接转换成关系模式,与1)比较不同之处。

2、学生与教师教学建模

(1)有若干班级,每个班级包括:班级号、班级名、专业、人数、教室 (2)每个班级有若干学生,学生只能属于一个班,学生包括:学号、姓名、性别、年龄

(3)有若干教师,教师包括:编号、姓名、性别、年龄、职称 (4)开设若干课程,课程包括:课程号、课程名、课时、学分 (5)一门课程可由多名教师任教,一名教师可任多门课程。 完成下列任务:

1)请设计该系统的关系模式(PDM)。

2)将实验九第2小题的实验结果使用工具直接转换成关系模式,与1)比较不同之处。

四、 实验注意事项

1、建立PDM需要选择特定的DBMS产品 2、数据项通过设置可以重用

3、使用工具将E-R模式转换成关系模式时,要注意选项的设置。

五、 问题讨论

1、通过这次上机实践,你有哪些心得体会?

2、实验题中的设计中,选择不同的DBMS后设计环境有哪些变化? 3、在PowerDesigner 12.5中直接设计的PDM与将CDM直接转换成的PDM有区别

第9页

吗?

第10页

因篇幅问题不能全部显示,请点此查看更多更全内容