数据库实验报告册.docx
- 文档编号:988841
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:31
- 大小:532.32KB
数据库实验报告册.docx
《数据库实验报告册.docx》由会员分享,可在线阅读,更多相关《数据库实验报告册.docx(31页珍藏版)》请在冰点文库上搜索。
数据库实验报告册
合肥师范学院
实验报告册
2014/2015学年第1学期
系别
计算机学院
实验课程
数据库原理
专业
班级
姓名
学号
指导教师
李宜兵
实验名称
课时
实验报告成绩
实验
(一)——数据库基本操作
2
实验
(二)——SQL语句
6
实验(三)——数据库完整性与安全性实验
4
实验(四)——数据库编程
4
备注:
实验一——数据库基本操作
一、实验目的
1.熟悉MSSQLSERVER运行界面,掌握服务器的基本操作。
2.掌握界面操作方法完成用户数据库建立、备份和还原。
3.建立两个实验用的数据库,使用企业管理器和查询分析器对数据库和表进行基本操作。
二、实验预习内容
在认真阅读教材及实验指导书的基础上,上机前请预习以下内容,并在空白处填写相应的步骤或命令。
1.熟悉SQLSERVER2000的运行环境,练习服务器基本操作:
打开、停止、关闭。
2.使用SQLSERVER2000中的企业管理器完成以下任务。
数据库名称:
STC
表:
STU(snochar(9),snamevarchar(50),ssexchar
(2),sageint,sdeptchar
(2));
COURSE(cnochar(3),cnamevarchar(50),cpnochar(3),creditint);
SC(snochar(9),cnochar(3),gradeint);
说明:
以上为表结构,以snochar(9)为例,说明sno属性设置为字符类型,宽度为9,int指整型数据。
1)建立数据库STC,分别建立以上三张表,并完成数据录入。
(表结构及数据参见教材)
2)分析并建立各表的主码,用下划线在上面表结构中标出主码。
createtablestu
(snochar(9)primarykey,
snamevarchar(50),ssexchar
(2),sageint,sdeptchar
(2)
);
select*fromcourse
createtablecourse
(cnochar(3)primarykey,cnamevarchar(50),cpnochar(3),creditint,
foreignkey(cpno)referencescourse(cno)
);
createtablesc
(snochar(9),cnochar(3),gradeint,
primarykey(sno,cno),
foreignkey(sno)referencesstu(sno),
foreignkey(cno)referencescourse(cno)
);
insert
intostu
values('95001','李勇','男','20','cs');
Stu表:
Course表:
Sc表:
3)建立各表之间的关联,请简述操作步骤。
建立关联:
右击SC表,设计表---在任意一个空白处右击---关系---表和列规范---选择主键表course对应的主码cno和外键表sc对应的cno以及主键表stu对应的主码sno和外键表sc对应的sno—确定即可
4)参考实验指导书的【第5章数据库的备份和还原】,使用企业管理器对数据库STC进行备份,并尝试在个人电脑与机房电脑上进行还原,请简述备份、还原操作的步骤。
右击STC数据库----任务—备份—备份到(添加到你要备份到的地方)---确定。
右击STC数据库----任务—还原----数据库---(从原数据库或源设备)----选择路径--确定。
3.在SQLSERVER2000的查询分析器中使用SQL语言完成以下任务。
参考实验指导书《数据库系统实验指导教程》【实验1.1数据定义】,建立数据库SCHOOL,分别建立students、teachers、courses、choices四张表,表结构见实验指导书P236【附录A】。
1)用SQL语言创建数据库、建表。
建表时为各表建立关键字、设置外码,数据暂不录入,请写出对应的SQL命令。
createtablestudents
(sidchar(10)primarykey,
snamechar(30)notnull,
emailchar(30),
gradeint
);
createtableteachers
(tidchar(10)primarykey,
tnamechar(30)notnull,
emailchar(30),
salaryint,
);
createtablecourses
(cidchar(10)primarykey,
cnamechar(30)notnull,
hourint,
);
createtablechoices
(nointprimarykey,
sidchar(10)notnull,
tidchar(10)notnull,
cidchar(10)notnull,
scoreint,
foreignkey(sid)referencesstudents(sid),
foreignkey(tid)referencesteachers(tid),
foreignkey(cid)referencescourses(cid),);
2)为students表、courses建立按主键増序排列的索引,请写出相应的SQL命令。
createindexsonstudents(sidasc)
createindexconcourses(cidasc)
3)删除course上的索引,请写出相应的SQL命令。
dropindexconcourses
4)在SCHOOL数据库中的students表中增加一个“出生日期”字段,类型为日期时间型,请写出对应的SQL命令。
Altertablestudentsadd“出生日期”datetime
5)删除students中的“出生日期”字段,请写出对应的SQL命令。
Altertablestudentsdropclumn出生日期
6)删除SCHOOL数据库中的students表,请写出对应的SQL命令。
droptablestudentscascade
4.使用企业管理器创建数据库SCHOOL,实现内容与实验预习内容3完全相同。
5.使用企业管理器,将SCHOOL数据库分离出MSSQLSERVER,请简述步骤。
点开数据库---找到school数据库----(右击)所有任务----分离数据库----确定。
6.使用企业管理器,使用【数据库/所有任务/附加数据库】将SCHOOL数据库添加进SQLSERVER,并查看数据。
7.使用查询分析器,删除数据库STC,请写出对应的SQL命令。
Dropdatabasestc
8.结束本次实验
三、实验课后训练
1.使用企业管理器练习数据的导入导出。
1)将SCHOOL数据库students表中的数据导出到STC数据库对应的stu表中;
2)向STC数据库courses表导入SCHOOL数据库courses表中的数据;
3)自行练习实验指导书【实验5.3SQLSERVER数据库的导入与导出】部分;
2.自行练习实验指导书【实验1.1数据定义】部分。
4、实验报告
1.简述本次实验所用到的SQL命令及其功能。
命令:
creatdatabase<数据库名>功能:
建立数据库
命令:
Creattable<表名>(<列名><数据类型>[列级完整性约束条件])
[,<表级完整性约束条件>]
功能:
定义基本表
命令:
altertable<表名>
[add<新列名><数据类型>[完整性约束]]-----增加新列和新的完整性约束条件
[Drop<完整性约束名>]----删除指定的完整性约束条件
[altercolumn<列名><数据类型>];---修改原有的列定义,包括列名和数据类型。
功能:
修改基本表
2.在MSSQLSERVER中数据库的“分离|添加”与“备份|还原”是相同的功能吗?
答:
在MSSQLSERVER中数据库的“分离|添加”与“备份|还原”的功能是不相同的。
分离之后的数据库在用户不更改路径的情况下会分离在系统默认的路径上,且分离之后在数据库的下属栏中找不到分离的数据库,除非重新按指定路径添加。
而备份的数据库还会显示在数据库的下属栏中。
3.实验总结(实验过程中出现的问题、解决方法、结果如何或其它)
本次试验过程中遇到了很多问题,因为是第一次使用这个软件,有好多东西都不知道在哪,比如,不知道如何建立关联,如何备份还原数据库等,经过询问同学才知道。
对书上的知识不是很了解,不知道如何建立索引和删除索引,在看书之后才知道如何做。
经过这次实验,以后做实验要好好预习。
实验二——SQL语句
一、实验目的
1.熟悉SQL的数据查询语言,能使用SQL进行单表查询、连接查询、嵌套查询、集合查询和统计查询,能理解空值的处理;
2.熟悉数据库的数据更新操作,能使用SQL语句对数据库进行数据的插入、更新、删除操作;
3.熟悉SQL支持的有关视图的操作,能创建、查询及取消视图;
4.了解NULL在数据库中的特殊含义,掌握使用SQL进行与空值相关的操作;
二、实验预习内容
在认真阅读教材及实验指导书【实验1.2数据查询】、【实验1.3数据更新】、【实验1.4视图】和【实验1.6空值和空集的处理】的基础上,上机前请预习以下内容,并在空白处填写相应的步骤或命令。
1.使用SCHOOL数据库,在SQLSERVER2000的查询分析器中使用SQL语言完成以下操作。
请在空白处填写相应的SQL命令。
1)查询年级为2001的所有学生的名称,按编号顺序排列;
selectsnamefromstudentswheregrade='2001'orderbysid
2)查询所有课程名称中含有data的课程编号;
selectcidfromcourseswherecnamelike'%data%'
3)统计所有老师的平均工资;
selectAVG(salary)平均工资
fromteachers
4)查询至少选了3门课的学生编号;
selectsid
fromchoices
groupbysidhavingcount(*)>=3
5)查询学号为80009026的学生的姓名、所选课名及成绩;
selectsname,cname,score
fromstudents,courses,choices
wherestudents.sid=80009026andchoices.sid=students.sid
andchoices.cid=courses.cid
6)查询没有学生选的课程编号;
selectcid
fromcourses
wherecidnotin
(
selectcid
fromchoices)
7)查询既选了C++又选了Java课程的学生编号;
selectsid
fromchoices,courses
wherechoices.cid=courses.cidandcname='c++'
andsidin(
selectsid
fromchoices,courses
wherechoices.cid=courses.cidandcname='java')
)
8)查询选了C++但没选Java课程的学生编号;
selectsid
fromchoices,courses
wherechoices.cid=courses.cidandcname='c++'
andsidnotin(
selectsid
fromchoices,courses
wherechoices.cid=courses.cidandcname='java')
9)向STUDENTS表中插入“LiMing”的个人信息(编号:
700045678,名字:
LiMing,Email:
LX@,年级:
1992);
insertintostudents
values('700045678','liming','LX@','1992')
10)将“LiMing”的年级改为2002;
updatestudents
setgrade='2002'
wheresname='liming'
11)删除所有选了Java课程的学生选课记录;
delete
fromchoices
wherecid=
(selectcid
fromcourses
wherecname='java')
12)求出每门课的课程号、选课人数,结果存入数据库表T1中。
createtableT1
(cidchar(10)primarykey,
renshuint
)
insert
intot1
selectcid,count(distinctsid)
fromchoices
groupbycid;
13)查询所有选课记录的成绩并换算为五分制(注意NULL的情况);
selectdistinctscore,score/20五分制
fromchoices;
14)查询成绩小于0的选课记录,统计总数、平均分、最大值和最小值(注意查询结果中NULL的情况);
selectsid,cid
fromchoices
wherescore<0
selectdistinctcount(*)总数,
avg(score)平均值,
max(score)最大值,
min(score)最小值
fromchoices
15)按成绩顺序排序显示CHOICES表中所有记录。
(使用ORDERBY排序,注意NULL的情况);
select*
fromchoices
orderbyscore;
16)创建视图V1,显示学生姓名、所选课名称、任课教师名;
createviewv1(sname,cname,tname)
as
selectsname,cname,tname
fromteachers,choices,students,courses
wherechoices.cid=courses.cid
andchoices.sid=students.sid
andchoices.tid=teachers.tid
17)取消V1视图;
dropviewv1
2.使用STC数据库,在SQLSERVER2000的查询分析器中使用SQL语言完成以下操作。
请在空白处填写相应的SQL命令或其它内容。
1)创建视图V2,显示计算机(CS)系学生信息;(结合下面的b)小题,V2视图创建2次,分别使用/不使用WITHCHECKOPTION选项)
(1)不加WITHCHECKOPTION
(2)加WITHCHECKOPTION
createviewv2
as
select*fromstu
wheresdept='cs'
createviewv2
as
select*fromstu
wheresdept='cs'
WITHCHECKOPTION
2)插入元组(99999,张三,20岁,男,PH)到V2中,运行结果如何?
(观察WITHCHECKOPTION对结果的影响);
(1)不加WITHCHECKOPTION的结果
(2)加WITHCHECKOPTION的结果
insert
intov2
values('99999','张三','男',20,'PH')
insert
intov2
values('99999','张三','男',20,'PH')
3)在V2基础上,查询所有计算机系女生信息;
select*
fromV2
wheressex='女'
3.结束本次实验
三、实验课后训练
1.掌握SQLSERVER中流控制语句及其它常用编程语句;
1)使用查询分析器,编写代码,输出乘法口诀表。
2.自行练习实验指导书P24【实验1.2数据查询】1.2.5自我实践部分;
3.自行练习实验指导书P30【实验1.3数据更新】1.3.5自我实践部分;
4.自行练习实验指导书P36【实验1.4视图】1.4.5自我实践部分;
5.自行练习实验指导书P49【实验1.6空值和空集的处理】1.6.5自我实践部分;
四、实验报告
1.SQLSERVER中变量声明的命令是什么?
输出命令是什么?
Declare@variable_name//局部变量名称
Datatype//数据类型
2.SQLSERVER中实现分支和循环的语句分别是什么?
分支:
casewhen条件1then结果1
when条件2then结果2
[else其他结果]end
循环:
while(条件--只能是表达式)
语句或语句块
[break]--强制退出
3.在SQLSERVER里使用ORDERBY排序时,NULL值如何处理?
使用GROUPBY分组时,NULL值又如何处理的?
在使用ORDERBY进行排序时,有ASC(升序)和DESC(降序)两种方式。
无论采用哪种方式,NULL值总被当作最小值处理。
即在按升序排列时,取空值的元组将最先显示,按降序排时,取空值的元组将会最后显示。
使用GROUPBY进行排序,取空值的项不是被忽略,而是将NULL看成一个取值,在处理的时候把所有取空值的项都看成一样,因而形成一个分组。
4.实验总结(实验过程中出现的问题、解决方法、结果如何或其它)
有好多次运行都是有检查完成但是执行错误,经检查才知道是上面的数据库默认是master,而不是要执行的数据库。
由于粗心导致的字母拼写错误,导致执行结果出错。
不会使用嵌套语句,经过分析书上的程序段,略微懂了一点。
向表中插入记录,应该用insertinto表名values(列属性).创建视图用createview(视图名)asfrom表名。
经过试验验证,明白withcheckoption可以自动筛选不符合条件的记录。
实验三——数据库完整性与安全性
一、实验目的
1.理解实体完整性、参照完整性、用户自定义完整性的概念,学习三类完整性的实现,了解违反完整性的结果;
2.掌握MSSQLSERVER中的有关用户登录认证及管理方法,熟练使用自主存取控制进行权限管理;
二、实验预习内容
在认真阅读教材及实验指导书【2.1实体完整性】、【2.2参照完整性】、【2.3用户自定义完整性】、【2.4触发器】、【2.5综合案例】和【3.1用户标识与鉴别】、【3.2自主存取控制】、【3.3视图机制在自主存取控制上的应用】、【3.4Public角色在安全性中的应用】、【3.8综合案例】的基础上,上机前请预习以下内容,并在空白处填写相应的步骤或命令。
1.使用SCHOOL数据库
1)创建一张新表CLASS,包括Class_id(varchar(4)),Name(varchar(10)),Department(varchar(20))三个属性列,其中Class_id为主码;
createtableclass
(Class_idvarchar(4)primarykey,
Namevarchar(10),
Departmentvarchar(20)
)
2)执行两次相同的插入操作(’0001’,’01csc’,’cs’),结果如何;
insert
intoCLASS
values('0001','01CSC','CS')
第一次插入:
第二次插入:
2.使用SQL命令创建一张学生互助表,要求:
包括学生编号、学生姓名、学生帮助对象的编号,每个学生有且仅有一个帮助对象,帮助的对象必须是已存在的学生。
createtable学生互助表
(sidvarchar(10)primarykey,
snamevarchar(30),
s_idvarchar(10)unique,
foreignkey(s_id)references学生互助表(sid)
);
3.使用STC数据库,修改设置,完成以下2种不同的要求,请写出对应的语句或简述操作过程:
1)当更新、删除STU表中记录时,若SC表中有此学生的记录,则拒绝;
Altertablesc
Addconstraintc1foreignkey(sno)referencesstu(sno)
Onupdatenoaction
Ondeletenoaction
2)当更新、删除STU表中记录时,若SC表中有此学生的记录,则自动更新或删除;
Altertablesc
Addconstraintc2foreignkey(sno)referencesstu(sno)
Onupdatecascade
Ondeletecascade
4.使用SQL命令完成以下任务:
1)创建Worker表(表结构见指导书P73)
createtableworker
(numberchar(5),
namechar(8)constraintU1unique,
sexchar
(1),
sageintconstraintU2check(sage<=28),
deapartmentchar(20),
constraintPK_workerprimarykey(number)
)
2)定义约束U1、U2,其中U1规定Name字段取值唯一,U2规定sage字段上限是28;
3)插入一条合法记录;
insert
intoworker
values('123','小明','m',20,'cs')
4)插入一条违反U2约束的记录,简述观察到的结果如何?
并分析原因;
insert
intoworker
values('123','小明','m',29,'cs')
原因:
sage的值必须<=28。
5)去除U1约束;
altertableworker
dropconstraintU1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告