数据库实验报告文档格式.docx
《数据库实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《数据库实验报告文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
该数据库包括四个表:
建议:
在定义表中字段时,尽量使用意义的英文单词。
“系别代码表“表名:
dep
“教师表”表名:
teacher
“学生表”表名:
student
“课程表”表名:
course
“选课表”表名:
sc
“系别代码表“ 表名:
其结构如下:
(该表的主键为“系代码”)
字段名称
字段类型
字段大小/格式
是否可为空
约束条件
系代码depid
VARCHAR
8
否
PK
系名depname
20
Notnull
“教师表”表名:
(该表的主键为“教师号”)
教师号tid
教师名tname
职称title
是
所属院系编号depid
“学生表”表名:
其结构如下:
(该表的主键为“学生号”)
学号sid
11
学生名sname
院系编号depid
性别sex
2
出生年月birthd
DATETIME
邮箱semail
家庭地址homeaddr
40
“课程表”表名:
(该表的主键是课程号)
课程号cid
课程名cname
30
学分credits
DECIMAL
3,1(小数位数1)
“选课表”表名:
Notnull,PK
成绩score
3.备份数据库
BACKUPDATABASEstudTODISK='
d:
\stud.bak'
WITHINIT;
4.恢复数据库
RESTOREDATABASEstudFROMDISK='
WITHREPLACE;
为每个表准备大约10记录,使用Insert语句将这些数据插入到相应表中,数据录入完成后,将数据库备份到磁盘上,在以后的的试验中备用。
5、实验原理:
使用数据库管理系统DB、DDL创建数据库及数据库对象。
源代码如下:
createdatabaseSTUD;
createtabledep(depidvarchar(8)notnull,depnamevarchar(20)notnull,primarykey(depid));
createtableteacher(tidvarchar(8)notnull,tnamevarchar(8)notnull,
titlevarchar(8)notnull,depidvarchar(8),primarykey(tid));
createtablestudent(sidvarchar(11)notnullprimarykey,snamevarchar(8)notnull,depidvarchar(8),
sexvarchar
(2)notnull,birthdaydatetime,semailvarchar(20),homeaddressvarchar(40));
createtablecourse(cidvarchar(8)notnullprimarykey,cnamevarchar(30)notnull,creditsdecimal(3,1)notnull);
createtablesc(sidvarchar(11)notnull,cidvarchar(8)notnull,tidvarchar(8)notnull,scoredecimal(3,1),primarykey(sid,cid));
backupdatabaseSTUDtodisk='
withinit;
恢复数据库:
restoredatabasestudfromdisk='
withreplace
6、实验器材(设备、元器件等)
联想m490
windows8.1
SQLSEVER2012
7、实验步骤:
1.创建数据库:
STUD
2.创建表:
.
“教师表”表名:
“选课表”表名:
3.备份数据库:
8、实验数据及结果分析:
源码:
createtablecourse(cidvarchar(8)notnullprimarykey,cnamevarchar(30)notnull,
creditsdecimal(3,1)notnull);
createtablesc(sidvarchar(11)notnull,cidvarchar(8)notnull,tidvarchar(8)notnull,
scoredecimal(3,1),primarykey(sid,cid));
截图:
9、实验结论、心得体会和改进建议:
1、结论:
实验中所用语句都符合规范,并且成功创建了数据库,5张表,结果见上。
2、心得体会:
通过实际的操作,将课程里学到的拿来东西运用,对课程的理解更加深入,掌握了数据库的创建,表的创建,以及数据的插入和查找这些基本数据库操作,收货很大,为以后的学习更进一步的课程和做技术奠定了基础。
实验二
一、实验名称:
数据库的完整性
二、实验学时:
三、实验目的:
通过设置表的检查约束、外键约束体会数据库完整性的含义,约束条件下数据修改操作的限制,以及实现修改操作的技巧。
四、实验内容:
(1)设置约束条件
●设置教师表,学生表中的院系字段(depid)的外键约束
●设置选课表的三个外键约束(学号,课程号,教师号)
●设置选课表中成绩字段的取值范围是0到100
●设置学生表中性别字段的取值为 “男”或“女”
●设置学生表电子邮件字段的取值必须包含@符号
(2)使用“Insert”语句向数据库添加数据,数据可自拟,注意顺序。
五、实验原理:
数据库库的完整性、约束条件、结构化查询语言.
六、实验器材(设备、元器件)
七、实验步骤:
即按实验内容做的。
八、实验数据及结果分析:
altertableteacheraddconstraintteach_1foreignkey(depid)referencesdep(depid);
altertablestudentaddconstraintstud_1foreignkey(depid)referencesdep(depid);
altertablescaddconstraintsc_1foreignkey(sid)referencesstudent(sid);
altertablescaddconstraintsc_2foreignkey(cid)referencescourse(cid);
altertablescaddconstraintsc_3foreignkey(tid)referencesteacher(tid);
altertablescaddconstraintsc_4check(score>
=0andscore<
=100);
altertablestudentaddconstraintstud_2check(sexin('
男'
'
女'
));
altertablestudentaddconstraintstud_3check(semaillike'
_%@_%'
);
注:
这个报错应该是我第一次运行已成功,然后改了一点标识名称又点了一次执行,结果就报错了,但约束应该第一是执行成功了的,如图:
选课表的三个外键约束:
九、实验结论、心得体会和改进建议:
通过实际的操作,将课程里学到的拿来东西运用,对课程的理解更加深入,掌握了数据库的参照完整性约束,在已经建立好的数据库中定义外键,约束条件下数据修改操作的限制,以及实现修改操作的技巧,此次试验收获很大,,可以说是掌握了数据库的一个至关重要的技术,那就是参照完整性,为以后的学习更进一步的课程和做技术奠定了基础。
在插入数据时,由于用了自己的学号,忘了设置sname时是11位,所以发生以下错误:
而后删除2位后没问题,但在做修改学号执行updatestudentsetsid=201206010101wheresid=1233时还是溢出,不知为何。
建议插入的数据代码统一给出,方便实验结果的判定,减少学生和老师的工作量。
实验三
数据查询
3、实验目的:
练习用SELECT查询语句,设置查询条件,实现单表查询。
练习使用SELECT语句从多个表中查询数据,表的内连接、左外连接、右外连接的使用以及设置连接条件,理解连接条件和查询条件的在目的和功能上的区别。
(1)查询年龄在20—22之间的学生姓名(通过出生日期和当前日期计算年龄)year(getdate())-year(birthd)
(2)查询所有教授的信息
(3)查询姓“张”的学生的学号、姓名、邮件地址
(4)求每门课程的选课人数、最高分、最低分、平均分,要求在查询结果中显示课程号和课程名;
(5)查询既选修了1号课程,又选修了2号课程的学生学号
(6)查询既选修了1号课程,又选修了2号课程的学生姓名
(7)查询选修了全部课程的学生姓名
结构化查询语言、表的连接、关系运算、分组查询
1.selectsnamefromstudentwhereyear(getdate())-year(birthday)between20and22
2.select*fromteacherwheretitle='
教授'
3.selectsid,sname,birthday,homeaddress,semailfromstudentwheresnamelike'
张%'
;
selectsid,sname,birthday,homeaddress,semailfromstudentwheresnamelike'
w%'
4.selectcname,sc.cid,count(*)as'
选课人数'
max(score)as'
最高分'
min(score)as'
最低分'
avg(score)as
'
平均成绩'
fromsc,coursewheresc.cid=course.cidgroupbycname,sc.cid;
5..selectstudent.sidfromstudent,scwherestudent.sid=sc.sidandcid='
6001'
andsc.sidin(selectsc.sidfromscwherecid='
6002'
selectstudent.snamefromstudent,scwherestudent.sid=sc.sidandcid='
Select*fromscajoinscbona.sid=b.sidwherea.cid='
andb.cid='
6、实验器材(设备、元器件)
联想pc
win8.1,
SQLSEVER2012EXPRESS.
恢复数据库,将数据库备份stud恢复到DB2中
执行SQL命令完成实验内容
5.selectstudent.sidfromstudent,scwherestudent.sid=sc.sidandcid='
1、实验结论:
本次完成了实验的目的,基本将书本的第三章查询,无论是连接查询,还是组合查询等,都做到了更深的认识和融会贯通。
可以看出,本次实验全部结果与预期的相符合,实验中所用语句都符合规范且都正确,操作全部成功,证明实验正确。
2.、心得体会:
本次实验练习使用SELECT查询语句,查询种类多样,从多种方面进行查询,在实际的操作中,我深刻体会到内连接,左外连接,右外连接以及多重查找的具体步骤。
练习使用聚集函数count(),AVG()等在SQL命令中实现统计功能,使用了GROUPBY实现分组查询。
经过对这几个函数的反复使用,深刻的记住了其用法和格式,巩固了在书本上学得的知识,将其与课本知识结合起来,使我更加深刻理解了SELECT语句的强大,理解了连接条件和查询条件的区别。
当然,在第三个语句要显示课程号与课程名,没有想起在select和groupby可以直接添加,所以纠结了一会儿。
不过本次实验收获很大。
3、改进建议:
也是由于实验数据指导没有完全给出,导致在查找同时选择课程1和2的人时,第一次没有结果,原来是自己插入时根本就没有实现那样。
导致浪费了时间。
还有第三个个人觉得,内容偏少,不全面。
实验四
数据库建模
本实验要求学生学习数据库建模工具PowerDesigner的使用方法,掌握最基本的使用方法。
本实验将重点练习。
1.使用PDM,以图形化界面方式创建表及确定各表之间的关系,在实验报告中给出模型图;
2.通过“生成数据库”功能生成创建数据库的脚本,在实验报告中给出脚本内容;
数据库的基本知识与数据库建模工具PowerDesign的基本操作。
联想pc,win8.1,SQLSEVER2012EXPRESS.
七.实验步骤:
1.通过生成PhysicalDataModel(PDM)以图形化界面创建表及确定各表之间的关系。
(1)打开了PD以后,选择New,并在Modeltype里面选择PhysicalDataModel,同时选择可使用的DBMS,由于这个版本没有SQLsever2012,所以选了2008版。
然后点击确定,如图1所示。
图1
(2)从Palette工具面板中单击创建Table的工具图标,如图2所示:
图2
(3)选中该表,右击选择”Properties”对该表进行编辑(修改名称、增加列等)如图3所示:
图3
(4)选择”Columns”标签,给student这个表添加列。
在添中列的时候应该指明列的类型,并指是否允许为空,是否为主键等各种属性,如图4所示:
图4
(5)按生成student表同样的办法生成department表,teacher,等表,只是具体属性不一样,如图5所示:
图5
(6)学生表中的学生所在系是department表中的一个外键,这时我们需要建立一个表的引用。
如图6所示:
图6
2.根据第一步生成的表导出数据库的脚本
(1)选择Database→GenerateDatabase,打开“ParametersforSybaseSQLAnywhere”窗口(图7)。
(2)在Filename框中接受缺省的文件名crebas.sql,在Directory框中接受缺省的目录名。
(3)接受其它缺省的生成参数和选项。
3.利用PD的逆向工程生成PDM并进行修改
逆向工程的实验我们以从数据库生成脚本生成PDM为例。
从数据库生成脚本生成PDM,按下列步骤进行:
(1)选择File→ReverseEngineering→Database”窗口。
新窗口如图9所示:
图9
(2)单击“Usingascriptfile”单选按钮,并添加一个SQL脚本文件。
(3)单击“OK”,新的PDM出现在窗口中,如图11所示:
八.实验数据及结果分析:
1.模型图:
根据实验一与二逆向工程的模型图为:
2.数据库的脚本:
/*==============================================================*/
/*DBMSname:
MicrosoftSQLServer2008*/
/*Createdon:
2014/6/40:
12:
56*/
/*============================