数据库实验报告大全广工蔡延光版.docx
《数据库实验报告大全广工蔡延光版.docx》由会员分享,可在线阅读,更多相关《数据库实验报告大全广工蔡延光版.docx(37页珍藏版)》请在冰豆网上搜索。
数据库实验报告大全广工蔡延光版
自动化学院自动化专业班学号
姓名实验时间教师评定
实验题目数据定义
实验报告一
一、实验目的与要求
目的:
使用SQL语言实现数据库的创建、删除;基本表的创建、删除、更新工作;以及索引的创建、删除工作。
要求:
1、在SQLSERVER2000查询分析器中,利用SQL语言中CREATE、DROP命令实现数据库的创建及删除工作。
2、在SQLSERVER2000查询分析器中,利用SQL语言中CREATE、ALTER及DROP命令进行基本表的创建、更新、删除工作,并实现基本表中各类完整性约束条件的限定。
3、在SQLSERVER2000查询分析器中,利用SQL语言中CREATE、ALTER及DROP命令进行基本表中索引的创建、更新、删除工作。
4、完成上述工作后,在SQLSERVER2000企业管理器中,查看是否成功创建实验所要求数据库、基本表、各类完整性约束条件及索引等内容。
二、实验方案
所有实验内容必须在SQLServer2000的查询分析器中完成,设置查询分析器的结果区为StandardExecute(标准执行)或ExecutedGrid(网格执行)方式.发布执行命令.并在结果区中查看查询结果,如果结果不正确则需要进行修改,直到正确为止。
要求完成如下内容:
1.定义数据库
定义一个借阅数据库,要求所定义的数据库大小为1M,且数据库名称为Labery_学号。
2.定义下列数据库基本表
在所定义的借阅数据库Labery_学号中,按要求定义如下数据库表:
1)书(book)
列名
别名
类型及长度
是否可为空
书号
bno
char(8)
否
类别
category
varchar(10)
否
书名
title
varchar(40)
否
出版社
press
varchar(30)
是
年份
book_year
Int
否
作者
author
char(20)
是
价格
price
decimal(7,2)
否
总藏书量
book_total
Int
否
2)借书证(card)
列名
别名
类型及长度
是否可为空
卡号
cno
char(7)
否
姓名
name
char(8)
否
单位
department
varchar(40)
是
类别
type
char
(1)
否
3)借书记录(borrow)
列名
别名
类型及长度
是否可为空
卡号
cno
char(7)
否
书号
bno
char(8)
否
借书日期
borrow_date
smalldatetime
否
还书日期
return_date
smalldatetime
是
3.完整性约束条件:
主要内容为:
1)确定各基本表的主码;
2)确定各基本表的外码;
3)要求在定义各基本表的同时,确定如下完整性约束条件
1、定义各基本表主码,并且要求主属性不能为空;
2、如果有外码,定义各基本表外码;
3、要求检查借书证中属性Type的值是否为('T','G','U','F'));
4、借书记录borrow基本表中borrow_date默认日期为当前时间。
4)确定各基本表哪些字段需要建立索引。
三、实验结果和数据处理
1.SQL语句:
CREATEDATABASELabery_18
ONPRIMARY(NAME=Labery_18,
FILENAME='C:
\DocumentsandSettings\Administrator\桌面\数据库实验\',
SIZE=1MB,
MAXSIZE=6MB,
FILEGROWTH=1MB)
运行结果:
2.SQL语句:
USElabery_18;
CREATETABLEbook
(bnochar(8)notnullprimarykey,
categoryvarchar(10)notnull,
titlevarchar(40)notnull,
pressvarchar(30),
book_yearintnotnull,
authorchar(20),
pricedecimal(7,2)notnull,
book_totalintnotnull)
运行结果:
SQL语句:
CREATETABLEcard
(cnochar(7)notnullprimarykey,
namechar(8)notnull,
departmentvarchar(40),
typechar
(1)notnullcheck(typein('T','G','U','F')))
运行结果:
SQL语句:
CREATETABLEborrow
(cnochar(7)notnullforeignkey(cno)referencescard(cno),
bnochar(8)notnullforeignkey(bno)referencesbook(bno),
borrow_datesmalldatetimenotnulldefaultgetdate(),
return_datesmalldatetime)
运行结果:
建立索引:
CREATEINDEXb_book_yearONbook(book_yeardesc)
CREATEINDEXb_borrow_dateONborrow(borrow_datedesc)
四、结论
通过本实验基本学会使用SQL语言实现数据库的创建、删除;基本表的创建、删除、更新工作;以及索引的创建、删除工作。
五、问题与讨论
1)如果在创建关系数据库基本表时,未创建完整性约束条件,对于数据库会有何影响
答:
以后增加数据库数据时,有可能插入无效或重复的数据。
当想删除有多张表中的一张时,由于删除了该表导致其他表数据不完整不能用。
2)如果在创建关系数据库基本表时,未创建索引,对于数据库的运行性能会有何影响
答:
索引是以牺牲内存空间换取检索时间的,未创建索引时会使运行时的检索变得很慢。
自动化学院自动化专业班学号
姓名实验时间教师评定
实验题目数据更新
实验报告二
一、实验目的与要求
目的:
要求学生熟练掌握和使用Transact-SQL及SQLserver企业管理器向数据库中输入数据、修改数据和删除数据的操作。
要求学生按要求实现基本表数据更新,并在数据更新过程中,验证各类数据完整性约束条件,即实体完整性、参照完整性及用户定义完整性约束条件。
要求:
1、使用SQLSERVER2000查询分析器,并用INSERT、UPDATE、DELETE语句进行基本表数据更新,要求在进行数据的更新时,所修改的记录不仅满足数据完整性约束条件,并注意各个数据表之间的关联性;
2、在数据更新过程中,通过分析SQL命令执行后数据的差异,来验证SQL命令的正确性,并通过查看运行结果的合法性,来验证各类完整性约束条件正确性。
3、熟练使用企业管理器进行数据库的建立和维护操作,并掌握利用查询分析器进行数据维护的方法。
二、实验方案
第1、2项实验内容必须在SQLServer2000的查询分析器中完成,设置查询分析器的结果区为StandardExecute(标准执行)或ExecutedGrid(网格执行)方式.发布执行命令.并在结果区中查看查询结果,如果结果不正确则需要进行修改,直到正确为止。
具体实验步骤如下:
1、数据输入
分别向book、card、borrow三个基本表中输入10条数据(备注:
考虑到以后的可操作性,希望数据的数据具有一定的现实意义),其次插入的数据满足数据完整性约束条件及表与表之间的关联性的要求。
表1书
书号
类别
书名
出版社
年份
作者
价格
总藏书量
O001
计算机类
数据库系统
机械工业出版社
2004
张三
28
4
0002
计算机类
操作系统
清华大学出版社
2000
李四
35
3
0003
数学类
高等数学
科学出版社
1998
王五
15
10
0004
数学类
离散数学
机械工业出版社
2006
赵六
22
2
0005
计算机类
C语言
清华大学出版社
2005
钱七
40
1
0006
文学类
心灵鸡汤
电子工业出版社
2002
NULL
19
5
0007
文学类
白鹿原
1999
NULL
25
6
0008
历史类
中国近代史
文艺出版社
2001
李立
32
4
0009
历史类
中国古代史
文艺出版社
2001
李立
32
4
0010
计算机类
JAVA语言
机械工业出版社
2004
王明
38
2
表2借书证
卡号
姓名
单位
类别
T001
李媛媛
自动化学院
T
T002
王丽丽
自动化学院
T
T003
张强
计算机学院
T
T004
赵刚
理学院
T
G001
吴明
自动化学院
G
G002
钱清
计算机学院
G
U001
李峰
自动化学院
U
U002
白岚
艺术学院
U
F001
张卫国
F
F002
李爱国
F
表3借书记录
卡号
书号
借书日期(月/日/年)
还书日期(月/日/年)
T001
0001
2011-1-1
2011-1-4
T001
0002
2011-1-1
2011-1-4
T001
0005
2011-1-1
2011-1-4
T001
0010
2011-1-1
2011-1-4
T003
0001
2011-2-15
2011-3-4
T003
0002
2011-2-15
2011-3-4
T003
0003
20011-2-15
2011-3-4
T003
0004
2011-2-15
2011-3-4
G002
0005
2011-2-5
2011-3-14
G002
0007
2011-8-10
G002
0010
2011-8-10
U001
0009
2011-2-2
2011-3-9
U001
0008
2011-2-2
2011-3-9
U002
0007
2011-2-2
2011-3-9
U002
0004
2011-2-2
2011-3-9
F001
0001
2011-2-12
2011-3-11
F001
0002
2009-2-12
2011-3-11
F001
0003
2011-2-12
2011-3-11
F002
0006
2011-1-20
2、修改数据
修改book、card、borrow三个基本表的数据,并要求将book表中price属性的值全部打8折、‘清华大学出版社’的书籍总藏书量增加10本等,同时满足数据完整性约束条件。
3、删除操作
删除book、card、borrow三个数据表中的某些数据,并注意数据完整性约束条件的限制。
要求删除borrow表中借书日期为1年前的数据,以及要求删除‘电子工业出版社’的书籍。
三、实验结果和数据处理
1、输入数据SQL语句:
INSERTINTObookVALUES('0001','计算机','数据库系统','机械工业出版社',2004,'张三',28,4)
INSERTINTObookVALUES('0002','计算机','操作系统','清华大学出版社',2000,'李四',35,3)
INSERTINTObookVALUES('0003','数学类','高等数学','科学出版社',1998,'王五',15,10)
INSERTINTObookVALUES('0004','数学类','离散数学','机械工业出版社',2006,'赵六',22,2)
INSERTINTObookVALUES('0005','计算机','C语言','清华大学出版社',2005,'钱七',40,1)
INSERTINTObookVALUES('0006','文学类','心灵鸡汤','电子工业出版社',2002,null,19,5)
INSERTINTObookVALUES('0007','文学类','白鹿原',null,1999,null,25,6)
INSERTINTObookVALUES('0008','历史类','中国近代史','文艺出版社',2001,'李立',32,4)
INSERTINTObookVALUES('0009','历史类','中国近代史','文艺出版社',2001,'李立',32,4)
INSERTINTObookVALUES('0010','JAVA语言','数据库系统','机械工业出版社',2004,'王明',38,2)
Select*frombook运行结果如下:
INSERTINTOcardVALUES('T001','李媛媛','自动化学院','T')
INSERTINTOcardVALUES('T002','王丽丽','自动化学院','T')
INSERTINTOcardVALUES('T003','张强','计算机学院','T')
INSERTINTOcardVALUES('T004','赵刚','理学院','T')
INSERTINTOcardVALUES('G001','吴明','自动化学院','G')
INSERTINTOcardVALUES('G002','钱清','计算机学院','G')
INSERTINTOcardVALUES('U001','李峰','自动化学院','U')
INSERTINTOcardVALUES('U002','白岚','艺术学院','U')
INSERTINTOcardVALUES('F001','张卫国',NULL,'F')
INSERTINTOcardVALUES('F002','李爱国',NULL,'F')
Select*fromcard运行结果如下:
INSERTINTOborrowVALUES('T001','0001','2011-1-1','2011-1-4')
INSERTINTOborrowVALUES('T001','0002','2011-1-1','2011-1-4')
INSERTINTOborrowVALUES('T001','0005','2011-1-1','2011-1-4')
INSERTINTOborrowVALUES('T001','0010','2011-1-1','2011-1-4')
INSERTINTOborrowVALUES('T003','0001','2011-2-15','2011-3-4')
INSERTINTOborrowVALUES('T003','0002','2011-2-15','2011-3-4')
INSERTINTOborrowVALUES('T003','0003','2011-2-15','2011-3-4')
INSERTINTOborrowVALUES('T003','0004','2011-2-15','2011-3-4')
INSERTINTOborrowVALUES('G002','0005','2011-2-5','2011-3-14')
INSERTINTOborrow(cno,bno,borrow_date)VALUES('G002','0007','2011-8-10')
INSERTINTOborrow(cno,bno,borrow_date)VALUES('G002','0010','2011-8-10')
INSERTINTOborrowVALUES('U001','0009','2011-2-2','2011-3-9')
INSERTINTOborrowVALUES('U001','0008','2011-2-2','2011-3-9')
INSERTINTOborrowVALUES('U002','0007','2011-2-2','2011-3-9')
INSERTINTOborrowVALUES('U002','0004','2011-2-2','2011-3-9')
INSERTINTOborrowVALUES('F001','0001','2009-2-12','2011-3-11')
INSERTINTOborrowVALUES('F001','0002','2009-2-12','2011-3-11')
INSERTINTOborrowVALUES('F001','0003','2009-2-12','2011-3-11')
INSERTINTOborrow(cno,bno,borrow_date)VALUES('F002','0006','2011-1-20')
Select*fromborrow运行结果:
2、修改数据
UPDATEBOOKSETPRICE=*PRICE
UPDATEBOOKSETbook_total=book_total+10WHEREpress='清华大学出版社'
3、删除操作
deletefromborrowwhereborrow_date<=getdate()-365
deletefromborrowwherebnoin(selectbnofrombookwherepress='电子工业出版社')
deletefrombookwherepress='电子工业出版社'
四、结论
通过本实验基本学会掌握和使用Transact-SQL及SQLserver企业管理器向数据库中输入数据、修改数据和删除数据的操作,实现带参照完整性的数据操作。
五、问题与讨论
1)如果在实验一中,没有定义数据完整性约束条件,则在数据录入或删除过程中会对数据库造成什么影响
答:
录入数据时,有可能插入无效或重复的数据。
删除数据时系统没提示有可能残留一些待删除的数据,导致其他表数据不完整不能用。
2)思考如何利用SQLServer2000中所提供的时间函数实现对时间的操作,如需要查询当前时间50天以前的图书的借阅数据该如何处理
答:
调用getdate()函数可以返回当前系统日期,如下:
Select*fromborrowwhereborrow_date<=getdate()-50
自动化学院自动化专业班学号
姓名实验时间教师评定
实验题目简单查询和连接查询
实验报告三
一、实验目的与要求
目的:
使学生熟练掌握简单表的数据查询、数据联接查询以及数据排序的操作方法,并加深对SQL和Transact-SQL语言的查询语句的理解。
要求:
使用SQLSERVER2000查询分析器,并用SELECT语句及WHERE查询条件进行简单查询及连接查询实验,其次使用ORDERBY排序子句实现输出结果的排序。
主要实验内容包括:
1、简单查询
2、连接查询
二、实验方案
所有查询必须在SQLServer2000的查询分析器中完成,设置查询分析器的结果区为StandardExecute(标准执行)或ExecutedGrid(网格执行)方式.发布执行命令.并在结果区中查看查询结果,如果结果不正确则需要进行修改,直到正确为止。
要求完成以下查询要求:
1、将计算机类的书存入永久的计算机图书表;
2、查询发生了借阅关系的借书证卡号,并按卡号降序排列;
3、查询清华大学出版社出版的图书情况;
4、查询目前被借出去的书籍的书号、借书证号以及借出日期,并按借出日期排序;
5、查询“李媛媛”老师所借阅的书籍的书名;
6、查询借书者的编号,姓名,单位,所借书号,书名和借阅日期,并按读者编号排序。
三、实验结果和数据处理
1、输入SQL语句:
CREATETABLEbcompute
(bnochar(8)notnullprimarykey,
categoryvarchar(10)notnull,
titlevarchar(40)notnull,
pressvarchar(30),
book_yearintnotnull,
authorchar(20),
pricedecimal(7,2)notnull,
book_totalintnotnull)
insertintobcompute
select*frombookwherecategory='计算机'
2、selectdistinctcnofromborroworderbycnodesc
3、select*frombookwherepress='清华大学出版社'
4、selectbno,cno,borrow_datefromborrow
wherereturn_dateisnullorderbyborrow_date
5、selecttitlefrombook,card,borrow
where=and=and(name='李媛媛')
6、select,name,department,,title,borrow_datefromborrow,card,book
where=and=orderby
三、结论
通过本实验基本学会掌握简单表的数据查询、数据联接查询以及数据排序的操作方法,并加深对SQL和Transact-SQL语言的查询语句的理解。
四、问题与讨论
1、对于该条查询语句——查询"U002"所借阅的书籍的信息,分别使用左连接、右连接和自然连接命令,试比较所产生的结果有何不同,说明其原因,并指出对于该查询要求,哪种连接更符合实际要求。
答:
使用左连接:
selectbook.*frombookleftjoinborrowon=andcno='U002')
使用右连接:
selectbook.*fromborrowrightjoinbookon=andcno='U002')
使用自然连接:
selectbook.*fromborrow,bookwhere=andcno='U002'
该查询使用自然连接更符合实际要求。
自动化学院自动化专业班学号
姓名实验时间教师评定
实验题目嵌套查询
实验报告四
一、实验目的与要求
目的: