《数据库实验报告大全-广工-蔡延光版(共29页).doc》由会员分享,可在线阅读,更多相关《数据库实验报告大全-广工-蔡延光版(共29页).doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 自动化 学院 自动化 专业 班 学号姓名 实验时间 2011.3.14 教师评定 实验题目 数据定义 实验报告一一、 实验目的与要求目的:使用SQL语言实现数据库的创建、删除;基本表的创建、删除、更新工作;以及索引的创建、删除工作。要求:1、在SQL SERVER 2000查询分析器中,利用SQL语言中CREATE、DROP命令实现数据库的创建及删除工作。2、在SQL SERVER 2000查询分析器中,利用SQL语言中CREATE、ALTER及DROP命令进行基本表的创建、更新、删除工作,并实现基本表中各类完整性约束条件的限定。3、在SQL SERVER 2000
2、查询分析器中,利用SQL语言中CREATE、ALTER及DROP命令进行基本表中索引的创建、更新、删除工作。4、完成上述工作后,在SQL SERVER 2000企业管理器中,查看是否成功创建实验所要求数据库、基本表、各类完整性约束条件及索引等内容。二、 实验方案所有实验内容必须在SQL Server 2000的查询分析器中完成,设置查询分析器的结果区为Standard Execute(标准执行)或Executed Grid(网格执行)方式发布执行命令并在结果区中查看查询结果,如果结果不正确则需要进行修改,直到正确为止。要求完成如下内容:1定义数据库定义一个借阅数据库,要求所定义的数据库大小为1
3、M,且数据库名称为Labery_学号。 2定义下列数据库基本表 在所定义的借阅数据库Labery_学号中,按要求定义如下数据库表:1) 书(book)列名别名类型及长度是否可为空书号bnochar(8)否类别categoryvarchar(10)否书名titlevarchar(40)否出版社pressvarchar(30)是年份book_yearInt否作者authorchar(20)是价格pricedecimal(7,2)否总藏书量book_totalInt否2) 借书证(card)列名别名类型及长度是否可为空卡号cnochar(7)否姓名namechar(8)否单位departmentva
4、rchar(40)是类别typechar(1)否3) 借书记录(borrow)列名别名类型及长度是否可为空卡号cnochar(7)否书号bnochar(8)否借书日期borrow_datesmalldatetime否还书日期return_datesmalldatetime 是3完整性约束条件:主要内容为:1) 确定各基本表的主码;2) 确定各基本表的外码;3) 要求在定义各基本表的同时,确定如下完整性约束条件1、 定义各基本表主码,并且要求主属性不能为空;2、 如果有外码,定义各基本表外码;3、 要求检查借书证中属性Type的值是否为(T,G,U,F);4、 借书记录borrow基本表中bor
5、row_date默认日期为当前时间。4)确定各基本表哪些字段需要建立索引。三、 实验结果和数据处理1. SQL语句:CREATE DATABASE Labery_ON PRIMARY(NAME=Labery_,FILENAME=C:Documents and SettingsAdministrator桌面数据库实验.MDF,SIZE=1MB,MAXSIZE=6MB,FILEGROWTH=1MB)运行结果:2. SQL语句:USE labery_;CREATE TABLE book(bno char(8) not null primary key, category varchar(10) no
6、t null, title varchar(40) not null, press varchar(30), book_year int not null, author char(20), price decimal(7,2) not null, book_total int not null)运行结果:SQL语句:CREATE TABLE card(cno char(7) not null primary key, name char(8) not null, department varchar(40), type char(1) not null check(type in(T,G,U
7、,F)运行结果:SQL语句:CREATE TABLE borrow(cno char(7) not null foreign key(cno)references card(cno), bno char(8) not null foreign key(bno)references book(bno), borrow_date smalldatetime not null default getdate(), return_date smalldatetime)运行结果:建立索引:CREATE INDEX b_book_year ON book(book_year desc)CREATE IND
8、EX b_borrow_date ON borrow(borrow_date desc)四、 结论通过本实验基本学会使用SQL语言实现数据库的创建、删除;基本表的创建、删除、更新工作;以及索引的创建、删除工作。五、 问题与讨论 1) 如果在创建关系数据库基本表时,未创建完整性约束条件,对于数据库会有何影响?答:以后增加数据库数据时,有可能插入无效或重复的数据。当想删除有多张表中的一张时,由于删除了该表导致其他表数据不完整不能用。2) 如果在创建关系数据库基本表时,未创建索引,对于数据库的运行性能会有何影响?答:索引是以牺牲内存空间换取检索时间的,未创建索引时会使运行时的检索变得很慢。 自动化
9、学院 自动化 专业 班 学号姓名实验时间 2011.3.14 教师评定 实验题目 数据更新 实验报告二一、 实验目的与要求目的:要求学生熟练掌握和使用TransactSQL及SQL server 企业管理器向数据库中输入数据、修改数据和删除数据的操作。要求学生按要求实现基本表数据更新,并在数据更新过程中,验证各类数据完整性约束条件,即实体完整性、参照完整性及用户定义完整性约束条件。要求:1、使用SQL SERVER 2000查询分析器,并用INSERT、UPDATE、DELETE语句进行基本表数据更新,要求在进行数据的更新时,所修改的记录不仅满足数据完整性约束条件,并注意各个数据表之间的关联性
10、;2、在数据更新过程中,通过分析SQL命令执行后数据的差异,来验证SQL命令的正确性,并通过查看运行结果的合法性,来验证各类完整性约束条件正确性。3、熟练使用企业管理器进行数据库的建立和维护操作,并掌握利用查询分析器进行数据维护的方法。二、 实验方案第1、2项实验内容必须在SQL Server 2000的查询分析器中完成,设置查询分析器的结果区为Standard Execute(标准执行)或Executed Grid(网格执行)方式发布执行命令并在结果区中查看查询结果,如果结果不正确则需要进行修改,直到正确为止。具体实验步骤如下:1、数据输入分别向book、card、borrow三个基本表中输
11、入10条数据(备注:考虑到以后的可操作性,希望数据的数据具有一定的现实意义),其次插入的数据满足数据完整性约束条件及表与表之间的关联性的要求。表1 书书号类别书名出版社年份作者价格总藏书量O001计算机类数据库系统机械工业出版社2004张三2840002计算机类操作系统清华大学出版社2000李四3530003数学类高等数学科学出版社1998王五15100004数学类离散数学机械工业出版社2006赵六2220005计算机类C语言清华大学出版社2005钱七4010006文学类心灵鸡汤电子工业出版社2002NULL1950007文学类白鹿原1999NULL2560008历史类中国近代史文艺出版社20
12、01李立3240009历史类中国古代史文艺出版社2001李立3240010计算机类JAVA语言机械工业出版社2004王明382表2 借书证卡号姓名单位类别T001李媛媛自动化学院TT002王丽丽自动化学院TT003张强计算机学院TT004赵刚理学院TG001吴明自动化学院GG002钱清计算机学院GU001李峰自动化学院UU002白岚艺术学院UF001张卫国FF002李爱国F表3 借书记录卡号书号借书日期(月/日/年)还书日期(月/日/年)T00100012011-1-12011-1-4T00100022011-1-12011-1-4T00100052011-1-12011-1-4T001001
13、02011-1-12011-1-4T00300012011-2-152011-3-4T00300022011-2-152011-3-4T003000320011-2-152011-3-4T00300042011-2-152011-3-4G00200052011-2-52011-3-14G00200072011-8-10G00200102011-8-10U00100092011-2-22011-3-9U00100082011-2-22011-3-9U00200072011-2-22011-3-9U00200042011-2-22011-3-9F00100012011-2-122011-3-11F
14、00100022009-2-122011-3-11F00100032011-2-122011-3-11F00200062011-1-20 2、修改数据修改book、card、borrow三个基本表的数据,并要求将book表中price属性的值全部打8折、清华大学出版社的书籍总藏书量增加10本等,同时满足数据完整性约束条件。3、删除操作删除book、card、borrow三个数据表中的某些数据,并注意数据完整性约束条件的限制。要求删除borrow表中借书日期为1年前的数据,以及要求删除电子工业出版社的书籍。三、 实验结果和数据处理1、输入数据SQL语句:INSERT INTO book VALU
15、ES(0001,计算机,数据库系统,机械工业出版社,2004,张三,28,4)INSERT INTO book VALUES(0002,计算机,操作系统,清华大学出版社,2000,李四,35,3)INSERT INTO book VALUES(0003,数学类,高等数学,科学出版社,1998,王五,15,10)INSERT INTO book VALUES(0004,数学类,离散数学,机械工业出版社,2006,赵六,22,2)INSERT INTO book VALUES(0005,计算机,C语言,清华大学出版社,2005,钱七,40,1)INSERT INTO book VALUES(000
16、6,文学类,心灵鸡汤,电子工业出版社,2002,null,19,5)INSERT INTO book VALUES(0007,文学类,白鹿原,null,1999,null,25,6)INSERT INTO book VALUES(0008,历史类,中国近代史,文艺出版社,2001,李立,32,4)INSERT INTO book VALUES(0009,历史类,中国近代史,文艺出版社,2001,李立,32,4)INSERT INTO book VALUES(0010,JAVA语言,数据库系统,机械工业出版社,2004,王明,38,2)Select * from book运行结果如下:INSER
17、T INTO card VALUES(T001,李媛媛,自动化学院,T)INSERT INTO card VALUES(T002,王丽丽,自动化学院,T)INSERT INTO card VALUES(T003,张强,计算机学院,T)INSERT INTO card VALUES(T004,赵刚,理学院,T)INSERT INTO card VALUES(G001,吴明,自动化学院,G)INSERT INTO card VALUES(G002,钱清,计算机学院,G)INSERT INTO card VALUES(U001,李峰,自动化学院,U)INSERT INTO card VALUES(U
18、002,白岚,艺术学院,U)INSERT INTO card VALUES(F001,张卫国,NULL,F)INSERT INTO card VALUES(F002,李爱国,NULL,F) Select * from card运行结果如下:INSERT INTO borrow VALUES(T001,0001,2011-1-1,2011-1-4)INSERT INTO borrow VALUES(T001,0002,2011-1-1,2011-1-4)INSERT INTO borrow VALUES(T001,0005,2011-1-1,2011-1-4)INSERT INTO borrow
19、 VALUES(T001,0010,2011-1-1,2011-1-4)INSERT INTO borrow VALUES(T003,0001,2011-2-15,2011-3-4)INSERT INTO borrow VALUES(T003,0002,2011-2-15,2011-3-4)INSERT INTO borrow VALUES(T003,0003,2011-2-15,2011-3-4)INSERT INTO borrow VALUES(T003,0004,2011-2-15,2011-3-4)INSERT INTO borrow VALUES(G002,0005,2011-2-5
20、,2011-3-14)INSERT INTO borrow(cno,bno,borrow_date) VALUES(G002,0007,2011-8-10)INSERT INTO borrow(cno,bno,borrow_date) VALUES(G002,0010,2011-8-10)INSERT INTO borrow VALUES(U001,0009,2011-2-2,2011-3-9)INSERT INTO borrow VALUES(U001,0008,2011-2-2,2011-3-9)INSERT INTO borrow VALUES(U002,0007,2011-2-2,20
21、11-3-9)INSERT INTO borrow VALUES(U002,0004,2011-2-2,2011-3-9)INSERT INTO borrow VALUES(F001,0001,2009-2-12,2011-3-11)INSERT INTO borrow VALUES(F001,0002,2009-2-12,2011-3-11)INSERT INTO borrow VALUES(F001,0003,2009-2-12,2011-3-11)INSERT INTO borrow(cno,bno,borrow_date) VALUES(F002,0006,2011-1-20)Sele
22、ct *from borrow运行结果:2、 修改数据UPDATE BOOK SET PRICE=0.8*PRICEUPDATE BOOK SET book_total=book_total+10 WHERE press=清华大学出版社3、 删除操作delete from borrow where borrow_date=getdate()-365delete from borrow where bno in(select bno from book where press=电子工业出版社)delete from book where press=电子工业出版社四、 结论通过本实验基本学会掌握
23、和使用TransactSQL及SQL server 企业管理器向数据库中输入数据、修改数据和删除数据的操作,实现带参照完整性的数据操作。五、 问题与讨论 1)如果在实验一中,没有定义数据完整性约束条件,则在数据录入或删除过程中会对数据库造成什么影响?答:录入数据时,有可能插入无效或重复的数据。删除数据时系统没提示有可能残留一些待删除的数据,导致其他表数据不完整不能用。2)思考如何利用SQL Server 2000中所提供的时间函数实现对时间的操作,如需要查询当前时间50天以前的图书的借阅数据该如何处理?答:调用getdate()函数可以返回当前系统日期,如下:Select * from bor
24、row where borrow_date=all(select sum(book_total) from book group by book_year)2、 select count(*)/count(distinct cno)as avgnum from borrow 3、select cno from cardwhere cno not in(select cno from borrow where year(borrow_date)=year(getdate()4、select category from book,borrowwhere book.bno=borrow.bno an
25、d year(borrow_date)=year(getdate() group by category having count(*)=all(select count(*) from book,borrow where book.bno=borrow.bno and year(borrow_date)=year(getdate() group by category)5、select card.department from card,borrowwhere o=o group by department having count(*)=all(select count(*) from c
26、ard,borrow where o=o group by department)四、结论通过本实验基本学会掌握数据查询中嵌套查询语句的操作方法,并加深对Transact-SQL语言的查询语句的理解。五、问题与讨论 1、试用多种形式表示实验中的查询语句,并进行比较。答: 如以上的第三小题,既可以用select cno from cardwhere cno not in(select cno from borrow where year(borrow_date)=year(getdate()也可以用exists语句:select cno from cardwhere not exists(sel
27、ect * from borrow where year(borrow_date)=year(getdate()and o=cno) 自动化 学院 自动化 专业 班 学号 姓名 实验时间 2011.3.21教师评定 实验题目 集合查询、分组查询、函数查询 实验报告五一、 实验目的与要求目的:使学生熟练掌握数据查询中分组、统计、计算和组合的操作方法,并加深对Transact-SQL语言的查询语句的理解。要求:在SQL Server的查询分析器中使用UNION(并操作)完成组合查询实验,并利用SELECT语句及GROUP BY 与聚集函数实现分组、统计和计算等查询工作。实验内容主要有:1、分组查询
28、实验:包括分组条件表达、选择组条件的表达方法。2、使用函数查询的实验:包括统计函数和分组统计函数的使用方法。3、组合查询实验。4、计算和分组计算查询的实验。二、 实验方案所有查询必须在SQL Server 2000的查询分析器中完成,设置查询分析器的结果区为Standard Execute(标准执行)或Executed Grid(网格执行)方式发布执行命令并在结果区中查看查询结果,如果结果不正确则需要进行修改,直到正确为止。要求完成以下查询要求:1、 计算机类和机械工业出版社出版的图书;2、 总藏书量在五本以上的书(书名、作者、出版社、年份);3、 “数据库系统,张三编,机械工业出版社”这本书
29、现有的藏书量;4、 今年(2011年)未被借过的书;5、 馆藏图书(包括已借出的和未借出的)的类别数、总册数、最高价、最低价;6、 馆藏的书籍(包括已借出的和未借出的)中哪些出版社的书的类别超过2个;7、 目前已借出多少册书;8、 查询年份最久远的书(即迄今为止出版时间最早的书);9、查询“机械工业出版社”的各类图书的平均定价;10、计算各出版社计算机类图书的全部册数和总价格。三、实验结果和数据处理1、输入SQL语句:select * from book where category=计算机unionselect * from book where press=机械工业出版社2、 select
30、 title,author,press,book_year from book where book_total53、select book_total from book where title=数据库系统and author=张三and press=机械工业出版社4、Select book.* from book,borrow where book.bno=borrow.bno and year(borrow_date)year(getdate()unionselect * from book where bno not in (select bno from borrow)5、selec
31、t count(distinct category)as category_num,count(*)as total_num,max(price)as high_price,min(price)as low_pricefrom book,borrow where book.bno=borrow.bno 6、select press from book,borrowwhere book.bno=borrow.bnogroup by presshaving count(distinct category)27、 select count(*)as borrow_num from borrow8、s
32、elect min(book_year)as earliest_book from book9、select avg(price)as avg_price from bookwhere press=机械工业出版社10、select press,sum(book_total) as 计算机类图书全部册数,sum(price*book_total)as 计算机类图书总价格from book where category=计算机group by press四、结论通过本实验基本学会掌握数据查询中分组、统计、计算和组合的操作方法,并加深对Transact-SQL语言的查询语句的理解。五、问题与讨论 1
33、、对于该查询语句查询机械工业出版社出版的各类图书的平均定价,请分别用使用GROUP BY 和GROUP BY ALL子句表示,通过比较其结果,请分析该两个子句的异同,及使用场合。答:select category,avg(price)as avg_price from bookwhere press=机械工业出版社group by category当使用以下语句时:select category,avg(price)as avg_price from bookwhere press=机械工业出版社group by all category从以上结果比较可知:如果使用 ALL 关键字,那么查询结
34、果将包括由 GROUP BY 子句产生的所有组(其中包括某些没有符合搜索条件的组)。 2、 对于较为复杂的SELECT查询语句,比较通过创建临时表或创建视图的方式来简化查询语句的特点,并在大数据量的情况下,这三种情况对数据库性能会有何影响。答:在大数据量的情况下在临时表中保持数据的子集,以在随后的连接中使用,这样能大大改善性能,如果访问很频繁,加载就会加重,tempdb的性能就会对整个DB产生重要的影响 。而SELECT查询语句则可能要重复查询工作。而视图虽然使操作简单,安全性高,但由于视图是虚拟的表,在使用包括视图引用的SQL语句时,除了执行所键入的SQL语句中的查询或更新之外,还要告诉DB
35、MS执行定义视图的查询,这就影响了查询的效率。 自动化 学院 自动化 专业 班 学号 姓名 实验时间 2011.3.21教师评定 实验题目 存储过程、触发器 实验报告六一、 实验目的与要求目的:视图:使学生掌握SQL Server中视图的创建方法以及利用视图简化查询语句的方法,加深对视图作用的理解。临时表:使学生掌握SQL Server中临时表的创建方法以及利用临时表简化查询语句的方法,并与视图做比较。存储过程:使学生掌握SQL Server中存储过程的创建方法及其使用方法。触发器:使学生掌握SQL Server中触发器的创建方法及其使用方法。要求:视图:在SQL Server的查询分析器中,实现数据库视图的创建、查看、修改和删除工作,并思考如何利用视图,并与SELECT 语句相结合来简化复杂的查询命令。临时表:在SQL Server的查询分析器中,实现数据库临时表的创建、查看工作,并与视图相比较。存储过程:使用企业管理器创建存储过程,能正确调用、执行存储过程。触发器:使用企业管理器创建触发器,正确理解INSERT、UPDATE、DELETE触发器的用途和对数据的影响。二、 实验方案视图:通过创建视图及通过与SELECT语句相结合,实现如下内容:1) 查询哪一年出版的图书的藏书量(包括已借出的和未借出的)最多;2) 今年哪个类别的书出借最多? 临时表: