数据库系统原理课程设计.docx
- 文档编号:29679821
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:26
- 大小:314.41KB
数据库系统原理课程设计.docx
《数据库系统原理课程设计.docx》由会员分享,可在线阅读,更多相关《数据库系统原理课程设计.docx(26页珍藏版)》请在冰豆网上搜索。
数据库系统原理课程设计
景德镇陶瓷学院教材
《数据库系统原理》
实验指导书
适用专业信息与计算科学
刘伟洁李毅成杨利华编写
景德镇陶瓷学院
信息工程学院
2007年7月
序
根据教学计划安排,数据库课程总学时数为48学时,其中实验16学时。
在实验中,有三个实验为验证性的实验,一个为综合设计性实验。
DBMS和SQL认识性实验中,通过安装一个具体的DBMS软件,并通过软件的帮助文件了解DBMS的基本概念、术语、功能,并和教程中的相关内容相对照进一步掌握DBMS的有关知识。
在软件向导的作用下,利用DBMS建立任意一个数据库,并在此基础上学习SQL的一些简单语句。
第四个实验项目为一个小型数据库系统的综合设计性实验,要求学生设计一个数据库系统,包括数据库模式设计、数据库定义、建立,并要求该系统通过宿主语言实现数据库的修改、查询功能。
该实验中,使学生认识、了解数据库系统开发中的宿主语言的作用、数据库控件在数据库应用程序的作用和地位。
通过该实验可使学生了解WINDOWS编程特点和语言要素,经过学生的一段时间的自学,可为以后的实验提交互供语言基础。
在实验中要应用本课程的大部分知识内容和计算机语言知识,并需要学生课外自修VB(VC)之类的编程内容和数据库控件知识,对学生具有极大的挑战性。
在大纲中只规定了最基本的实验内容,但为学生的能力发挥和创新能力的培养留下了较大的空间。
目录目录
序I
目录II
第一章SQLServer环境简介1
第二章实验内容安排4
第三章实验要求及评分标准5
第四章实验内容7
4.1SQL实验一7
4.2SQL实验二11
4.3数据库结构设计与数据恢复技术18
4.4简单信息管理系统18
第一章SQLServer环境简介
SQL(StructuredQueryLanguage),即结构化查询语言,是关系数据库的标准语言,SQL是一个通用的、功能极强的关系数据库语言。
在本实验中,主要学习如何使用SQLServer进行对数据库、数据表的建立、修改及数据备份、数据恢复等操作。
首先,启动SQLServer服务管理器,在任务指示栏有服务器在运行的图标。
图1-1MicrosoftSQLServer菜单
然后打开企业管理器,如下图,展开控制台根目录,进行新建数据库、数据表、修改、删除等操作。
图1-2SQLServer2000企业管理器
图1-3展开服务器目录
图1-4展开数据库目录
打开SQLServer查询分析器,在查询分析器中,输入SQL语句,进行查询等操作。
见下图。
图1-5连接服务器
图1-6连接到服务器后的查询分析器
第二章实验内容安排第二章实验内容安排
课程名称:
数据库系统原理
总学时:
48学时
实验学时:
16学时
面向专业(层次):
信息与计算科学
应开实验项目:
4项
应开实验时间:
第五学期
实验类别:
专业基础课
本课程实验目的与要求:
1、了解数据库系统的基本概念:
数据库存储组织,数据描述语言,数据操纵语言,数据库的安全性,数据的完整性和一致性等。
2、设计一个简单的数据库,加深对数据库模型的理解。
3、掌握DBMS的使用。
本课程实验项目一览表
序号
实验项目名称
实验学时
目的与要求
实验要求
实验类型
每组人数
备注
1
SQL实验一
3
熟悉数据库设计环境和SQL命令;掌握DDL建立关系表及向表中添加数据;掌握简单查询命令。
必做
验证
1
2
SQL实验二
3
掌握数据库完整性的概念和SQL实现;理解数据库完整性的作用;掌握连接查询、子查询、相关子查询、统计函数的使用。
必做
验证
1
3
数据库结构设计与数据库恢复技术
4
掌握数据库设计与分析的方法与实现,理解并掌握数据库中数据备份与恢复技术。
必做
验证
1
4
简单信息管理系统
6
综合运用开发工具、软件工程、数据库等方面知识,设计实现一个简单的数据库应用管理系统,训练学生综合运用数据库知识的能力。
必做
综合
1
大纲制定日期:
2004/9大纲执笔人:
李慧颖大纲审定人:
彭永康
第三章实验要求及评分标准
实验要求:
通过本实验,使学生熟悉介绍SQL2000Server的系统结构,以及数据库的结构设计等方面的问题,以一个学习实例集中讨论实施一个MicrosoftSQL服务器所需的技术技能。
包括数据存储、创建和管理数据库,数据的检索、修改和完整性及分布数据管理。
掌握数据库操作的基本内容。
提高学生观察、分析和解决问题的能力,培养学生严谨的工作作风和实事求是的科学态度,为学习后继课程和未来的科学研究及实际工作打下良好的基础。
实验报告格式:
实验完毕,根据预习和实验中的现象及数据记录等,及时而认真地写出实验报告。
实验报告一般包括以下内容:
(一)实验名称
(二)实验目的
(三)实验内容(要求详细说明实验过程及记录,要有自己的内容和见解,不能完全照抄实验指导书。
)
(四)实验小结
评分标准:
1、以书面考核和上机实际操作结合的方式进行考核。
2、实验成绩评定方法:
实验课成绩单独按五级分记录考核成绩。
评定各级成绩时,可参考以下标准:
(一)优秀(很好)
能正确理解实验的目的要求,能独立、顺利而正确地完成各项实验操作,会分析和处理实验中遇到的问题,能掌握所学的各项实验技能,能较好地完成实验报告及其它各项实验作业,有一定创造精神和能力。
有良好的实验习惯和工作作风。
(二)良好(较好)
能理解实验的目的和要求,能认真而正确地完成各项实验操作,能分析和处理实验中遇到的一些问题。
能掌握所学实验技能的绝大部分,对难点较大的操作完成有困难。
能一般完成实验报告和其它实验作业。
有较好的实验习惯和工作作风。
(三)中等(一般)
能粗浅理解实验目的要求,能认真努力进行各项实验操作,但技巧较差。
能分析和处理实验中一些较容易的问题,掌握实验技能的大部分。
有30%掌握得不好。
能一般完成各项实验作业和报告。
处理问题缺乏条理。
工作作风较好。
能认真遵守各项规章制度。
学习努力。
(四)及格(较差)
只能机械地了解实验内容,能一般按图、或按实验步骤“照方抓药”完成实验操作,能完成60%所学的实验技能,有些虽作但不准确。
遇到问题常常缺乏解决的办法,在别人启发下能作些简单处理,但效果不理想。
能一般完成实验报告,能认真遵守实验室各项规章制度,工作中有小的习惯性毛病(如工作无计划,处理问题缺乏条理)。
(五)不及格(很差)
盲目地“照方抓药”,只掌握50%的所学实验技能。
有些实验虽能作,但一般效果不好,操作不正确。
工作忙乱无条理。
一般能遵守实验室规章制度,但常有小的错误。
实验报告较多的时候有结果,遇到问题时说不明原因,在教师指导下也较难完成各项实验作业。
或有些小聪明但不努力,不求上进。
第四章实验内容
4.1SQL实验一
实验目的与要求:
熟悉数据库设计环境和SQL命令;掌握DDL建立关系表及向表中添加数据;掌握简单查询命令。
实验内容:
(1)以自己姓名为数据库名新建数据库;
(2)在新数据库中新建学生表、课程表和选课表;
(3)在新表中输入数据;
(4)对新表进行查询、删除、修改操作。
方法一:
实验步骤:
1、打开“开始”菜单进入“程序”级联菜单,找到MicrosoftSQLServer打开企业管理器;
2、打开控制台根目录,找到数据库,右键单击,选择“新建数据库···”,按照提示新建以自己姓名为数据库名的数据库;
3、打开新建的数据库,鼠标指向“表”,右键单击,新建学生表(Sno,Sname,Ssex,Sage,Sdept)、课程表(Cno,Cname,Pre_Cno,Credits)和选课表(Sno,Cno,Grade)。
4、鼠标指向刚建立的表,在右键单击弹出的快捷菜单中选择“打开表”,在级联菜单中选择“返回所有行”,进行输入数据,关闭保存。
5、鼠标指向刚建立的表,在右键单击弹出的快捷菜单中选择“删除”进行删除表操作。
6、鼠标指向刚建立的表,在右键单击弹出的快捷菜单中选择“设计表”进行修改表操作。
方法二:
实验步骤:
1、利用查询分析器创建学生课程数据库。
用鼠标单击“开始”后,将鼠标分别指向程序、SQLserver,在SQLserver下单击analyzer;在窗口下键入CRATEDATABASES-C命令并保存,文件名为s-c.sql.用鼠单击任务栏的绿色向右箭头运行该命令。
这样,S-C数据库就建成了。
2、利用查询分析器创建基本表Student(sno,sname,ssex,sage,sdept)、course(cno,cname,ccpno,ccredit)、sc(sno,cno,grade)。
在查询分析器任务栏的数据库选为S-C。
在窗体下键入如下参考命令:
CREATETABLEStudent(snoCHAR(5)NOTNULLUNIQUE,
snameCHAR(8),
ssexCHAR
(2),
sageINT,
sdeptCHAR(20));
保存,文件名为student.sql,用鼠单击任务栏的绿色向右箭头运行.
在窗体下键入如下参考命令:
CREATETABLECourse(cnoCHAR(5)NOTNULLUNIQUE,
cnameCHAR(20)UNIQUE,
cpnoCHAR(5),
CcreditINT);
保存,文件名为course.sql,用鼠单击任务栏的绿色向右箭头运行,观察结果。
在窗体下键入如下参考命令:
CREATETABLESC(snoCHAR(5)NOTNULLUNIQUE,
cnoCHAR(5)NOTNULLUNIQUE,
gradeINT);
保存,文件名为sc.sql,用鼠单击任务栏的绿色向右箭头运行.
这样在S-C数据库中建成了三个表:
Student,Course,SC.
在窗口下分别键入DROPTABLEStudent及DROPTABLESC命令,用鼠单击任务栏的绿色向右箭头运行,观察结果。
再重新运行student.sql及sc.sql,.,观察结果。
3、利用查询分析器修改student表。
在查询分析器窗体下键入如下参考命令:
ALTERTABLEStudent
ADDscomeDATE
MODIFYsdeptVARCHAR(20)
运行并观察结果。
4、利用企业管理器向表中输入数据。
5、无条件查询。
完成如下实例。
例1查询全体学生的详细记录。
这是一个无条件的选择查询,其命令为:
SELECT*/*这里的“*”等价于ALL*/
FROMStudents;
例2查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。
这是一个无条件的投影查询,其命令为:
SELECTSname,Sno,Sdept
FROMStudents;
例3查询全体学生的姓名(Sname)、出生年份及学号(Sno)。
由于SELECT子句的<目标列表达式>不仅可以是表中的属性列,也可以是表达式,故可以查询经过计算的值。
其命令为:
SELECTSno,Sname,2001-Sage
FROMStudents;
例4查询选修了课程的学生学号。
其命令为:
SELECTDISTINCTSno
FROMReports;
6、条件查询
例5查询数学系全体学生的学号(Sno)和姓名(Sname)。
其命令为:
SELECTSno,Sname
FROMStudents
WHERESdept='数学';
例6查询所有年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。
其命令为:
SELECTSname,Sage
FROMStudents
WHERESage=18ANDSage<=22;
例7查询年龄不在18-22岁之间的学生姓名(Sname)及年龄(Sage)。
其命令为:
SELECTSname,Sage
FROMStudents
WHERESageNOTBETWEEN18AND22;
例8查询自动化系、数学和计算机系学生的学号(Sno)、姓名(Sname)和性别(Ssex)。
其命令为:
SELECTSno,Sname,SsexFROMStudents
WHERESdeptIN('自动化','数学','计算机');
等价于:
SELECTSname,Ssex
FROMStudents
WHERESdept='自动化'ORSdept='数学'ORSdept='计算机';
例9查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。
其命令为:
SELECTSname,Sno,Ssex
FROMStudents
WHERESnameLIKE'刘%';
例10查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。
SELECTSname,Sage
FROMStudents
WHERESnameNOTLIKE'刘%';
例11查询所有有成绩的学生学号(Sno)和课程号(Cno)。
其命令为:
SELECTSno,CnoFROMReportsWHEREGradeISNOTNULL;
4.2SQL实验二
实验目的与要求:
掌握数据库完整性的概念和SQL实现;理解数据库完整性的作用;掌握连接查询、子查询、相关子查询、统计函数的使用。
实验内容:
(1)利用查询分析器,建立带有完整性约束的数据表,进行输入数据、删除、修改等操作;
(2)建立和删除、修改索引;
(3)进行连接查询、子查询、相关子查询等操作。
实验步骤:
(1)启动SQL查询分析器;
(2)选择SQL SERVER后,按确认;
(3)选择数据库;
(4)验证如下例题:
表2.1关系Students表2.2关系Courses
Sno
Sname
Ssex
Sage
Sdept
S01
S02
S03
S04
S05
S06
王建平
刘华
范林军
李伟
黄河
长江
男
女
女
男
男
男
21
19
18
19
18
20
自动化
自动化
计算机
数学
数学
数学
Cno
Cname
Pre_Cno
Credits
C01
C02
C03
C04
C05
C06
C07
英语
数据结构
数据库
DB_设计
C++
网络原理
操作系统
C05
C02
C03
C07
C05
4
2
2
3
3
3
3
表2.3关系Reports
Sno
Cno
Grade
S01
S01
S02
S02
S02
S03
S03
S04
C01
C03
C01
C02
C03
C01
C02
C03
92
84
90
94
82
72
90
75
1、定义基本表
例1建立表2.1所示的学生表Students,每个属性名的意义为Sno-学号、Sname-姓名、Ssex-性别、Sage-年龄、Sdept-所在系。
这里要求Sno和Sname不能为空值,且取值唯一。
CREATETABLEStudents/*列级完整性约束条件*/
(SnoCHAR(5)NOTNULL,/*Sno不能为空值*/
SnameCHAR(20)NOTNULL,/*Sname不能为空值*/
SsexCHAR
(2),
SageINT,
SdeptCHAR(15),
CONSTRAINTun_SnoUNIQUE(Sno),/*Sno取值唯一的约束*/
CONSTRAINTun_SnameUNIQUE(Sname));/*Sname取值唯一的约束*/
说明:
在MicrosoftSQLServer2000的查询分析器(QueryAnalyzer)中使用单条SQL语句,其末尾不需要分号“;”作为命令结尾标记。
通常,SQLServer2000对大多数末尾带有分号的SQL命令都能顺利执行,但对少数的SQL命令,末尾若带分号,则SQLServer2000会给出错误信息提示。
例2建立表2.2所示的课程表Courses,其属性名意义分别为Cno-课程号,Cname-课程名,Pre_Cno-先修课程号,Credits-学分。
CREATETABLECourses
(CnoCHAR(5)NOTNULL,/*Cno不能为空值*/
CnameCHAR(20)NOTNULL,/*Cname不能为空值*/
Pre_CnoCHAR(5),
CreditsINT,
CONSTRAINTun_CnoUNIQUE(Cno));/*Cno取值唯一的约束*/
例3建立表2.3所示的成绩表Reports。
其中的属性名意义分别为Sno-学号,Cno-课程号和Grade-考试成绩。
CREATETABLEReports
(SnoCHAR(5)NOTNULL,/*Sno不能为空值*/
CnoCHAR(5)NOTNULL,/*Cno不能为空值*/
GradeINT,
CONSTRAINTSno_CnoUNIQUE(Sno,Cno));/*Sno+Cno取值唯一的约束*/
2、修改基本表
例4向基本表Students中增加“入学时间”属性列,其属性名为Sentrancedate,数据类型为DATETIME型。
ALTERTABLEStudentsADDSentrancedateDATETIME;
例5删除Sname(姓名)必须取唯一值的约束。
ALTERTABLEStudentsDROPCONSTRAINTun_Sname;
注意:
SQLServer2000增加了删除属性的命令。
比如,删除属性列Sentrancedate的命令为:
ALTERTABLEStudentsDROPCOLUMNSentrancedate;
说明:
为了保证后面例子能够顺利运行,请大家一定将属性列Sentrancedate从Students表中删除。
为了调试SQL语句方便,这里没有在表Reports中增加参照完整性约束,甚至没有定义主键。
等本章学完后,第7章的实验系统就是把这些约束全部加上了。
3、删除基本表
例6删除Students表。
DROPTABLEStudents;
说明:
此表删除后,请立即用例1将其建立起来,以便后面的例子使用。
4、向表中添加元组
例7将一个学生元组(S01,王建平,男,21,计算机)添加到基本表Students中。
INSERT
INTOStudents
VALUES('S01','王建平','男',21,'自动化');
说明:
请用这个命令将其余学生的元组也添加到基本表Students中。
向Courses表插入元组(‘C01’,’英语’,’’,4)的命令为:
INSERT
INTOCourses
VALUES('C01','英语','',4);
例8将学习成绩的元组(‘S01’,’C01’)添加到基本表Reports中。
INSERT
INTOReports(Sno,Cno)
VALUES(‘S01’,’C01’);
说明:
(1)请大家用这个命令将其余选课元组也添加到基本表Reports中。
(2)在Reports表中再次插入元组(‘S01’,’C01’),观察结果提示,了解完整性约束的意义。
5、建立索引
例9为学生选课数据库中的Students,Courses,Reports三个表建立索引。
其中Students表按Sno(学号)升序建唯一索引,Courses表按Cno(课程号)升序建唯一索引,Reports表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。
其语句为:
CREATEUNIQUEINDEXStu_SnoONStudents(Sno);
CREATEUNIQUEINDEXCou_CnoONCourses(Cno);
CREATEUNIQUEINDEXRep_ScnoONReports(SnoASC,CnoDESC);
6、删除索引
例10删除基本表Reports上的Rep_SCno索引。
DROPINDEXReports.Rep_Scno;
7、连接查询
(1)不同表之间的连接查询
例11查询每个学生及其选修课程的情况。
本查询实际上是涉及Students与Reports两个表的连接操作。
这两个表之间的联系是通过公共属性Sno实现的,因此,其操作命令为:
SELECTStudents.*,Reports.*
FROMStudents,Reports
WHEREStudents.Sno=Reports.Sno;
说明:
若在以上等值连接中把目标列中重复的属性列去掉则为自然连接,其命令为
SELECTStudents.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROMStudents,Reports
WHEREStudents.Sno=Reports.Sno;
例12查询每个学生的学号(Sno)、姓名(Sname)、选修的课程名(Cname)及成绩(Grade)。
本查询涉及到三个表的连接操作,完成该查询的SQL语句如下:
SELECTStudents.Sno,Sname,Cname,Grade
FROMStudents,Reports,Courses
WHEREStudents.Sno=Reports.SnoANDReports.Cno=Courses.Cno;
(2)自身连接
例13查询每一门课的间接先修课(即先修课的先修课)。
在Courses表关系中,只有每门课的直接先修课信息,而没有先修课的先修课。
要得到这个信息,必须先对一门课找到其先修课,再按此先修课的课程号,查找它的先修课程。
这就需要要将Courses表与其自身连接。
为方便连接运算,这里为Courses表取两个别名分别为A,B。
则完成该查询的SQL语句为:
SELECTA.Cno,A.Cname,B.Pre_Cno
FROMCoursesA,CoursesB
WHEREA.Pre_Cno=B.Cno;
(3)外连接
例14把例13中的等值连接改为左连接。
该左连接操作在SQLServer2000中的命令格式为:
SELECTStudents.Sno,Sname,Ssex,Sdept,Cno,Grade
FROMStudents
LEFTJOINReportsON
Students.S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 原理 课程设计