福建农林大学数据库实验报告Word格式.docx
《福建农林大学数据库实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《福建农林大学数据库实验报告Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
l.通过企业管理器,建立图书借阅数据库
在数据库图标上右击,选择“新建数据库”,输入“图书_读者”,单击“确定”按钮,关闭对话框。
在企业管理器窗口中出现“图书-读者”数据库标志,这表明建库工作已经完成。
图1在数据库弹出菜单中选择“新建数据库”
2.在建好的图书借阅数据库中建立图书、读者和借阅3个表
(1)建立“图书”表。
选中图书_读者数据库中的表文件夹,单由鼠标右键,在弹出的菜单中选择“新建表”,如图2所示。
图2建立表格
(2)输入结构
书号:
char长度10,不允许空值。
并设置为主键。
类别:
char长度12,允许空值。
出版社:
varchar长度50,不允许空值。
作者:
varchar长度50,允许空值。
名称:
定价:
char长度10,允许空值。
建立表格如图3所示。
图3输入表结构
(3)建立“读者”表和“借阅”表。
与建立“图书”表的形式一致,如表2。
(4)输入结构
“读者”表:
编号:
char长度20,不允许空值。
单位:
性别:
char长度10,不允许空值。
电话:
“借阅”表:
书号:
读者编号:
借阅日期:
datetime,不允许空值。
将“书号”与“读者编号”设置为主键。
3.指出图书读者数据库各表的主码、外码和数据约束
在表“图书”中把书号作为主键,步骤如下:
右击‘书号’,点击‘设置主键’,在图书中把‘读者编号’设置成主键,在借阅表中建立与图书,和读者的关系,如图:
在表“读者”中对‘性别’进行check结束:
表“读者”和表“借阅”的设置主键和表“图书”一样
表“图书”的主码是书号,外码也是书号,数据约束是主码不能为空
表“读者”的主码是编号,外码也是编号,数据约束是性别只能为男或女
表“借阅”的主码是书号,外码是读者编号,数据约束是主码和外码不能为空
6、实验总结
通过此次实验,我掌握了建立一个数据库的方法,以及建立表和表之间的关系,对表中
的属性进行约束,书上的毕竟只是理论,掌握理论不一定会实践,实践会了才是真的会。
实验二数据库的建立和维护实验
熟练掌握使用SQL、Transact-SQL和SQLServer企业管理器向数据库输入数据、修改数据和删除数据的操作。
(1)以一条记录为例,写出用SQL表示的向图书表中插入、修改和删除数据的语句。
(2)用SQL实现在读者表中增加“借书册数”字段,统计借书者在1998年~1999年间所借书的册数,并将结果送入读者表中的借书册数字段的操作语句。
(3)写出操作的过程和操作结果(数据库中各表的数据)并用截图表示出来。
1.以一条记录为例,写出用SQL表示的向图书表中插入、修改和删除数据的语句
(1)通过企业管理器,在图书借阅数据库的图书、读者和借阅3个表中各输入10条记录。
图书:
读者:
借阅:
(2)通过企业管理器实现对图书借阅数据库的图书、读者和借阅3个表中数据的插入。
删除和修改操作。
删除:
选择要删除的数据,右击选择‘删除’
插入:
在最后一行‘NULL’中可以填写要插入的信息。
修改:
选择要修改的数据直接修改。
(3)向自设计的数据库应用系统的库中的各表,输入多条实际数据,并实现数据的增、删、改操作。
增加操作:
修改操作:
Course表:
原表:
修改后:
Student表:
SC表:
删除操作:
删除后:
2.实现在读者表中增加“借书册数’字段,统计借书者在1998年~1999年间所借书的册数,并将结果送入读者表中的借书册数字段的操作。
结果:
通过本次实验,我了解了SQL语言对表格进行查询、行插入、删除和修改的编程。
这次实验让我了解了更多关于数据库实际使用方法,也让我对数据库的了解更深入。
实验三数据库的简单查询和连接查询实验
掌握SQLServer查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。
熟练掌握简单表的数据查询、数据排序和数据联结查询的操作方法。
(1)对图书借阅数据库中的图书、借阅、读者等表用Transact-SQL写出实验操作的查询语句(事先应按实验一的数据结构对这些表填入数据,然后按进行简单查询和连接查询操作实验)。
(2)写出实验步骤并将实验结果截图。
(3)实验中出现的问题和体会。
1.基本操作实验
(1)简单查询实验
l)用Transact-SQL语句表示下列操作.在学生选课库中实现其数据查询操作:
求数学系学生的学号和姓名。
selectSno,Sname
fromStudent
whereSdept='
MA'
;
求选修了课程的学生学号。
selectdistinctSno
fromSC;
求选修C1课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
selectSno,Grade
fromSC
whereCno='
1'
orderbyGradedesc,Snoasc;
获选修课程C1且成绩在80~90分之间的学生学号和成绩,并将成绩乘以系数0.8输出。
selectSno,0.8*Grade
andGradebetween80and90;
求数学系或计算机系姓张的学生的信息。
selectStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
fromStudent,SC
whereStudent.Sno=SC.SnoandSnamelike'
张%'
and(Sdept='
orSdept='
CS'
);
求缺少了成绩的学生的学号和课程号。
selectSno,Cno
whereGrade=0;
2)在图书借阅库中实现其查询操作:
将计算机类的书存入永久的计算机图书表中,将借书日期在1999年以前的借阅记录存入临时的超期借阅表。
select*
into计算机图书
from图书
where类别='
计算机'
into#超期借阅
from借阅
where借阅日期<
'
1999.01.01'
结果为:
(2)连接查询实验
用Transact-SQL语句表示,并在学生选课库中实现下列数据连接查询操作:
查询每个学生的情况以及他(她)所选修的课程。
selectStudent.Sno,Sname,Ssex,Sage,Sdept,Cno
whereStudent.Sno=SC.Sno;
求学生的学号、姓名、选修的课程名及成绩。
selectStudent.Sno,Sname,Cname,Grade
fromStudent,SC,Course
whereStudent.Sno=SC.SnoandCourse.Cno=SC.cno;
求选修C1课程且成绩为90分以上的学生学号、姓名及成绩。
selectStudent.Sno,Sname,Grade
whereStudent.Sno=SC.SnoandCno='
andGrade>
90;
查询每一门课的间接先行课(即先行课的先行课)。
selectfirst.Cno,second.Cpno
fromCoursefirst,Coursesecond
wherefirst.Cpno=second.Cno;
2.提高操作实验
(1)按表1的格式,建立职工部门库和职工表、部门,并向表中输入数据。
表1职工和部门表数据
职工表部门表
职工号
姓名
性别
年龄
部门
1010
李勇
男
20
11
1011
刘晨
女
19
1012
王敏
22
12
1013
张立
21
13
部门号
部门名称
电话
生产科
566
计划科
578
一车间
467
14
科研所
(2)Transact-SQL语句表示职工和部门之间的内连接、左外部连接和右外部连接,在职工部门库中实现其数据内连接和各种外查询操作。
(1)
createtable职工
(职工号char(4)primarykey,
姓名varchar(max),
性别char
(2),
年龄smallint,
部门varchar(max));
createtable部门
(部门号char(4)primarykey,
部门名称varchar(max),
电话varchar(max));
(2)外连接:
左连接:
\
右连接:
use职工部门
from职工
rightjoin部门on职工.职工号=部门.部门号;
本次实验,通过用SQL语言对表进行查询操作,让我更加熟练地掌握SQL的编程方法,了解到了平时我们在文件查找数据与通过数据库的查询语句进行查询的不同,让我更加认同了数据库这类软件。
实验四数据库的嵌套查询、组合查询和统计查询实验
进一步掌握SQLServer查询分析器的使用方法,加深SQL和Transact-SQL语言的嵌套查询语句的理解。
(1)对图书借阅数据库中的图书、借阅、读者等表用Transact-SQL写出实验操作的查询语句(事先应按实验一的数据结构对这些表填入数据,然后按进行嵌套查询、组合查询和统计查询的操作实验)。
1.基本操作实验
用Transact-SQL语句表示,在学生选课库中实现其数据嵌套查询操作。
(1)求选修了高等数学的学生学号和姓名。
whereSnoin(selectSno
fromSC
whereCnoin(selectCno
fromCourse
whereCname='
高等数学'
));
(2)求C1课程的成绩高于张三的学生学号和成绩。
whereGradein(selectGrade
whereGrade>
(selectGrade
whereSnoin(selectSno
fromStudent
whereSname='
张三'
andCno='
)))
(3)求其他系中年龄小于计算机系年龄最大者的学生。
selectSage,Sname
whereSage<
(selectmax(Sage)
whereSdept='
(4)求其他系中比计算机系学生年龄都小的学生。
whereSdept!
='
andSage<
(selectmin(Sage)
(5)求选修了C2课程的学生姓名。
selectSname
2'
(6)求没有选修C2课程的学生姓名。
selectdistinctSname
whereStudent.Sno=SC.SnoandCno!
(7)查询选修了全部课程的学生的姓名。
whereStudent.Sno=SC.SnoandCno=all(selectCno
fromSC);
(8)求至少选修了学号为“95001”的学生所选修的全部课程的学生学号和姓名。
selectdistinctSno,Sname
wherenotexists(select*
fromSCSCY
whereSCY.Sno='
200215121'
andnotexists
(select*
fromSCSCZ
whereSCZ.Sno=Student.Snoand
SCZ.Sno=SCY.Sno
));
在图书借阅库中实现其查询操作。
(1)查找这样的图书类别:
要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍。
(2)求机械工业出版社出版的各类图书的平均定价,用GROUPBY表示。
select类别,avg(定价)
where出版社='
机械工业'
groupby类别;
(3)列出计算机类图书的书号、名称及价格,最后求出册数和总价格。
select书号,书名,定价
selectcount(书号),sum(定价)
(4)列出计算机类图书的书号、名称及价格,并求出各出版社这类书的总价格,最后求出全部册数和总价格。
select出版社,SUM(定价)
groupby出版社;
selectSUM(定价),COUNT(书号)
(5)查询计算机类和机械工业出版社出版的图书。
select书号,书名
and出版社='
2.提高操作实验
(1)将自设计的数据库应用项目中的数据查询操作分类,用Transact-SQL语句表示其中的简单、连接和嵌套查询,并通过SQLServer查询分析器实现其查询操作。
用嵌套查询选修了全部课程的学生的姓名;
(2)将自设计的数据库应用项目中的分组、统计、计算和组合查询用Transact-SQL语句表示,并通过SQLServer查询分析器实现其查询操作。
用统计列出计算机类图书的书号、名称及价格,最后求出册数和总价格
此次实验做的过程很曲折,因为是第一次,最终在同学的帮助下才完成本次实验。
通过本次实验新学会了对数据库的一些使用方法:
连接查询、嵌套查询等,还有聚集函数、分组分类等的用法,也使我掌握了数据库查询中的分组、统计、计算与组合的操作方法。
实验五数据库的视图和图表的定义及使用实验
使学生掌握SQLServer中的视图创建向导和图表创建向导的使用方法,加深对视图和SQLServer图表作用的理解。
(1)用Transact-SQL写出创建视图的语句;
(2)实验步骤见实验指导书;
实验结果用截图表示出来;
(3)实验中的问题和提高。
(1)在SQLServer企业管理器中调出CreateViewWizard,按下列Transact-SQL描述
的视图定义,创建借阅_计算机图书视图。
CREATEVIEW借阅_计算机图书
ASSELECT图书.*,借阅.*
FROM图书,借阅
WHERE图书.编号=借阅.书号AND图书.类别=‘计算机’
(2)在SQLserver企业管理器中调出CreateViewWizard(创建图表向导),完成在图书_读者数据库中建立一个图书_借阅图表操作。
要求该图表包括图书和借阅两个表,并包括图书与借阅之间的“图书.书号=借阅.书号”外码与被参照表之间的关联。
(3)查看上述实验结果。
如果结果有误,予以纠正。
将自设计的数据库应用项目中的子模式,用Transact-SQL语句描述其视图定义并在SQLServer企业管理器中,用视图创建向导创建这些视图。
(1)下面用SQL语言创建借阅_计算机图书视图:
通过这次实的创建视图以及视图的定义,让我了解到了视图表使我们更加容易直观得到我们想要的信息组合,而又不变动原来的数据。
通过对视图的操作,了解到其实视图并不是那么难,与基本表的操作差不多。
只是他们的的属性不同:
视图是张虚表,而基本表是实实在在存在的表。
这次实验学习到了视图的重要性。