数据库原理实验报告

更新时间:2023-11-01 12:41:01 阅读量: 综合文库 文档下载

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

数学与计算机学院 数据库原理实验

课程编号:

课程名称:数据库原理实验 英文名称:Principle of Database 学分:1 学时:18

适用年级专业(学科类):计算机科学与技术、网络工程、软件工程、信息与计算等专业

一、课程概述

(一)课程性质

《数据库原理实验》是计算机科学与技术、网络工程、软件工程、信息与计算等专业的专业必修课程。《数据库原理》课程的实践环节。通过上机实验,使学生真正深层次了解数据库系统的体系结构,掌握数据库系统的基础理论、技术和方法,掌握主流数据库管理系统SQL Server 2000的应用技术及数据库应用系统的设计、开发能力。该课程的学习可以很好地帮助学生理解、掌握理论课所学的理论知识,提高学生处理实际问题的能力,培养并提高学生的专业素质。

本课程实验采用实验教学和学生实验相结合方式,使学生真正领会、理解、掌握理论课教学中讲解的数据库原理的基础知识和基本方法,正确灵活地运用学到知识,提高学生解决实际问题的能力。

(二)教学目标与要求

通过实践环节使学生理解、掌握课堂教学内容,重点理解并掌握数据库系统的基本概念、基本原理和基本方法。要求学生通过实验课程的学习,重点掌握构建信息管理系统的方法、步骤。培养学生应用所学知识处理具体问题的能力,为学生将来从事相关工作奠定坚实的基础。

(三)重点和难点 教学重点:

1. 数据库、表、视图、索引、主键的建立; 2. SELECT语句进行各种查询; 教学难点:触发器及存储过程。 (四)与其他课程的关系

本课程是计算机科学与技术等相关专业的专业程,要求有数据结构和程序设计等基础知识。 (五)教材及教学参考书

1. 《数据库系统概论》(第4版),萨师煊 王珊主编,高等教育出版社,2006; 2. 《数据库系统原理》,李建中,电子工业出版社,2004;

3. 《数据库系统原理教程》,王珊,陈红,清华大学出版社, 2005; 4. 《数据库系统教程》,施伯乐著,高等教育出版社,2003;

5. 《数据库系统原理与应用教程》,闪四清编著,清华大学出版社,2001。

1

二、学时分配 实验 1 2 3 4 5 6 SQL SERVER 2000的基本使用 SQL语言的基本操作 视图的创建及使用 数据完整性维护 触发器及存储过程 综合实验 实验题目 学时 2 6 2 2 2 4

三、实验内容

实验一 SQL SERVER 2000的基本使用

实验目的和要求:

通过本实验,使学生熟悉SQL SERVER 2000的工作环境,尤其是SQL SERVER 2000的企业管理器与查询分析器,熟悉对SQL SERVER 2000的各种操作。具体地,掌握表(关系)和索引的建立方法;掌握表结构(关系模式)的修改方法; 实验内容:

1. 在studentdb数据库中利用查询分析器创建以下3个表,同时完成数据完整性的定义(实体完整性、参照完整性和用户定义的域完整性): student(学生信息表): 主码 Pk 列名 sno sname ssex sage sdept 数据类型 char char char smallint char 宽度 5 10 2 15 小数位 空否 N N Y Y Y 取值范围 不小于12 备 注 学号 姓名 性别 年龄 系名

course(课程表): 主码 Pk 列名 cno cname cpno ccredit 数据类型 Char Char Char smallint 宽度 2 20 2 小数位 空否 N Y Y Y 备 注 课程号 课程名称 先行课号 学分

sc(学生选课表): 主码 Pk 2. 在spjdb数据库中利用查询分析器创建以下4个表,同时完成数据完整性的定义(实体完整性、参照完整性和用户定义的域完整性): S(供应商信息表):

列名 sno cno grade 数据类型 宽度 Char Char Decimal 5 2 5 小数 1 空否 N N Y 外码 Fk Fk 参照关系 student course 取值范围 0≤x≤100 备 注 学号 课程号 成绩 2

主码 Pk 列名 sno sname status city 数据类型 char char smallint char 宽度 2 10 10 小数位 空否 N N Y Y 取值范围 大于0 备 注 供应商号 供应商名称 供应商状态 所在城市

P(零件信息表): 主码 Pk 列名 pno pname color weight 数据类型 char char char smallint 宽度 2 10 2 小数位 空否 N N Y Y 取值范围 大于0 备 注 零件号 零件名称 颜色 重量

J(工程项目表): 主码 Pk

SPJ(供应情况表): 主码 Pk

3.修改表结构,具体要求如下:

(1) 将表course的cname列的数据类型改为varchar(40).

(2) 为表student增加一个新列: birthday(出生日期), 类型为datetime, 默认为空值. (3) 将表sc中的grade列的取值范围改为小于等于150的正数. (4) 为Student表的“Sex”字段创建一个缺省约束,缺省值为’男’

(5)为“Sdept”字段创建一个检查约束,使得所在系必须是’计算机’、’数学’或’信息’之一。 (6)为Student表的“Sname”字段增加一个唯一性约束 (7)为SC表建立外键,依赖于Student表的fk_S_c约束。

(8)禁止启用Student表的“Sdept”的CHECK约束ck_student。 4.分别建立以下索引(如果不能成功建立,请分析原因) (1) 在student表的sname列上建立普通降序索引. (2) 在course表的cname列上建立唯一索引. (3) 在sc表的sno列上建立聚集索引.

(4) 在spj表的sno(升序), pno(升序)和jno(降序)三列上建立一个普通索引. 主要教学环节的组织:

3

列名 jno jname city 数据类型 char char char 宽度 2 10 10 小数位 空否 N N Y 取值范围 备 注 工程项目号 工程项目名称 所在城市 列名 sno pno jno qty 数据类型 宽度 小数 Char Char Char smallint 2 2 2 空否 N N N Y 外码 Fk Fk Fk 参照关系 取值范围 S P J x>0 备 注 供应商号 零件号 工程项目号 成绩 教师首先讲解,然后指导学生自己操作。

实验二 SQL语言的基本操作

实验目的和要求:

掌握利用SQL语句完成各种查询操作的能力。重点掌握用SELECT语句进行各种查询; 掌握INSERT语句的用法。

实验内容:

用SQL语句完成一下的要求:

1.查询信息系(IS)的所有学生信息 2.查询选修了“数学”课的所有学生名单

3.查询至少选修了一门其直接先行课为5号课程的学生的姓名。 4.查询全体学生的姓名和出生年份。 5.查询所有姓王的学生。

6.查询选修了3号课程的学生姓名及成绩,并按成绩降序排序。 7.查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。 8.计算2号课程的平均成绩。

9.查询选修了2号课程的学生的最高成绩。 10.求各个课程号及相应的选课人数。

11.查询至少选修了3门课程以上的学生学号。 12.查询“数据库”的间接先行课。

13.查询平均成绩最高的学生的学号和姓名。 14.查询数学成绩最高的学生的学号和姓名。 15.查询出成绩最低学号最大的学生学号。 16.查询成绩高于学生平均成绩的记录。

17.查询至少选修了1号课程和3号课程的学生学号。 18.查询只选修了1号课程和3号课程的学生学号。 19.查询没有选修1号课程的学生姓名。 20.查询选修了全部课程的学生姓名。

21.查询至少选修了95002所选修的全部课程的学生学号。 22.查询没有不及格课程的学生的学号和姓名。 23.查询没有不及格学生的课程的课程号和课程名。

24.建立信息系学生视图,并从视图中查询年龄最大的学生记录。 主要教学环节的组织:

教师首先讲解,然后指导学生自己操作。

实验3 视图的创建及使用

实验目的和要求:

掌握视图的建立和使用,以及SQL的更新语句。掌握CREATE VIEW语句,能够运用该语句建立数据视图;掌握UPDATE语句的用法;掌握DELETE语句的用法。 实验内容:

1.建立视图IS_STUDENT显示“PL”系所有学生的学号、姓名、性别。 (1) 查询视图PL_STUDENT的所有信息。 (2) 查询视图PL_STUDENT的所有男生信息。

4

(3) 用insert语句向视图中插入元组('95009','王五','男'),查看基本表student表中插入的数据值。

修改视图的定义加入WITH CHECK OPTION子句,向视图插入一个新元组再查看student表中插入的数据值。

对比两次插入到基本表student的结果。

(4) 用update语句把视图PL_STUDENT的所有记录性别都改为'男',查看基本表student表中的数据值(对比没有WITH CHECK OPTION子句和有WITH CHECK OPTION子句的情况)。

(5) 用delete语句删除视图PL_STUDENT的所有记录,查看基本表student表中的数据值(对比没有WITH CHECK OPTION子句和有WITH CHECK OPTION子句的情况)。

2.建立视图用来显示每个系学生的平均年龄。尝试对视图进行增删改操作,分析能否执行成功。

3.建立视图显示学生各门课程的成绩,显示字段有:学号、姓名、课程名称、成绩。尝试对视图进行增删改操作,分析能否执行成功。

4.建立视图显示所有学生的数学成绩,显示字段有:学号、姓名、成绩。如果某个学生选择了数学课程则显示相应成绩;如果某个学生没有选择数学课程,则显示其学号和姓名,在成绩上显示空白。

主要教学环节的组织:

教师首先讲解,然后指导学生自己操作。

实验4 数据完整性维护

实验目的和要求:

掌握在SQL Server 2000中定义及使用各种约束的能力,掌握用SQL语言定义关系模式的完整性约束条件,掌握DBMS完整性控制机制的三个方面。 实验内容:

1.用SQL语句定义表student(sno,sname,ssex,sage),并加入如下约束: 主键:sno;sname有唯一约束;sname,ssex,sage都不允许空; 2.用SQL语句定义表course(cno,cname),并加入如下约束: 主键:cno;cname不允许空;

3.用SQL语句定义表sc(sno,cno,cj),并加入如下约束:

主键:sno,cno;为sno定义名为lsno的默认参照完整性;为cno定义名为lcno的默认参照完整性;

4.用SQL语句向student表输入如下元组: ('95001','李勇','男',20,'CS'); ('95002','刘晨','女',21,'IS');

用SQL语句向course表输入如下元组: ('1','数据库','5',4); ('2','数学',NULL,2);

用SQL语句向sc表输入如下元组: ('95001','1',92); ('95001','2',85); ('95002','2',90);

5.执行下列语句,并查看执行结果。如果不能正确执行给出错误原因。

5

insert into student values('95001','张力','男',20,'CS'); insert into student values('95003','李勇','男',20,'CS'); insert into SC values('95004','1',92); delete from student where sno='95001'; update course set cno='3' where cno='2';

6.给student表的ssex列添加名为fm的约束,使其取值只能取'男'或'女'。

执行insert into student values('95005','张力','f',20,'CS'),查看执行结果。

7.给student表的sage列添加约束,使其年龄不得超过20岁。查看约束是否能正确添加,并分析其原因。

8.删除约束lsno和lcno。

9.为sc表添加在列sno上的外键约束lsno1,并定义为级联删除。执行delete from student where sno='95001';查看执行结果。

10.为sc表添加在列cno上的外键约束lcno1,并定义为级联修改。执行update course set cno='3' where cno='2';查看执行结果。 主要教学环节的组织:

教师首先讲解,然后指导学生自己操作。

实验5 触发器及存储过程

实验目的和要求:

掌握在SQL Server 2000中触发器和存储过程的定义及使用,通过实验重点掌握触发器及存储过程的概念及用途。 实验内容:

1.有如下两个表:

教师(编号,姓名,性别,职称,工资,系别编号) 主码:编号 系别(系别编号,系名称,人数) 主码:系别编号 要求利用触发器完成下面的功能:

1) 对教师表进行插入、删除操作时维护系别人数。 2) 教授工资不得低于1500。 3) 工资只能增加不能减少。

4) 删除系别时,用触发器实现级联删除。 2.有如下视图:

选修记录(学号,姓名,课程号,课程名称,成绩)

其数据来源于学生表、选课表和课程表,利用触发器使视图可以更新,并将更新的数据保存于基本表中。

3. 建立存储过程完成以下功能:

1) 每门课程的课程名称及选课人数。 2) 某个学生的平均成绩(学号为参数)。 主要教学环节的组织:

教师首先讲解,然后指导学生自己操作。

6

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

Top