数据库原理实验报告
更新时间: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
正在阅读:
数据库原理实验报告11-01
配料作业指导书 - 图文10-06
个人独资企业法习题及解析10-12
java实验指导书--学生用10-10
教学资源库建设方案06-29
陕西省2016年重点建设项目计划12-13
“十三五”重点项目-盐矿项目可行性研究报告 - 图文10-20
《废旧材料融入幼儿园一日活动的实践研究》二级子课题方案11-29
DAX函数一览表04-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 原理
- 实验
- 数据库
- 报告
- 北京市家装合同协议条款
- 江苏省扬州市扬州中学2019届高三语文上学期1月月考试卷及答案 doc
- 《Java程序设计》习题集
- 2018西城区九年级地理一模试卷及答案2018.4含答案 - 图文
- 交通安全演练方案
- 核酸技术问题解答
- 汽车事故工程
- 液晶专业术语
- (正规版检测改)甘肃省高速公路建设投融资问题研究1 - 图文
- 12春学期《财政与税收》在线作业
- 毕业设计(论文)工作规范附件1-8模版
- 安丘市村级规范化管理实施办法
- 抓党建工作述职评议查摆问题整改方案
- 人教版小学四年级语文下册期中测试题(7)
- 乡村教师学习现状及对策研究
- 小学数学课堂课程资源整合的路径探析
- 生物工程下游技术1-15章复习 - 图文
- 二十四山正五行择日精髓
- 2018小学英语教师培训心得
- 棚户区改造项目相关法律法规汇编