广工数据库原理与应用实验报告

广工数据库原理与应用实验报告
广工数据库原理与应用实验报告

实验报告

课程名称数据库原理与应用学生学院自动化学院

专业班级物联网专业1班学号 48

学生姓名李泓庚

指导教师

2016 年 5 月 27日

实验3 数据定义

一.实验目的

使用SQL语言实现数据库的创建、删除、基本表的创建、删除、更新工作,以及索引的创建、删除工作。

二.实验软件环境

SQL Server 2008、SQL manager studio

三.实验内容

1.定义数据库

定义一个借阅数据库,要求所定义的数据库大小为3M,且数据库名称为Labery_学号。

2.定义下列数据库基本表

在所定义的借阅数据库Labery_学号中,按要求定义如下数据库表:1)书(book)2)借书证(Card)3)借书记录(Borrow)

3.完整性约束条件:

主要内容为:

1)确定各基本表的主码;2)确定各基本表的外码;

3)要求在定义各基本表的同时,确定如下完整性约束条件:

1、定义各基本表主码,并且要求主属性不能为空;

2、如果有外码,定义各基本表外码;

3、要求检查借书证中属性Type的值是否为('T','G','U','O'));

4、借书记录Borrow基本表中borrow_date默认日期为当前时间。

5、确定各基本表哪些字段需要建立索引。

四.实验的结果及分析

五.思考题

1)如果在创建关系数据库基本表时,未创建完整性约束条件,对于数据库会有

何影响

答:以后增加数据库数据时,有可能插入无效或重复的数据。当想删除有多张表中的一张

时,由于删除了该表导致其他表数据不完整不能用。

2)如果在创建关系数据库基本表时,未创建索引,对于数据库的运行性能会有何影响

答:索引是以牺牲内存空间换取检索时间的,未创建索引时会使运行时的检索变得很慢。

六.实验心得体会

本次实验接触了较为基础的数据库处理操作,如创建数据库,建表等操作,在做这些操作前,要考虑各个元素的约束,如主码,外码还有非空,唯一等约束,还有各个表之间的联系,这些都要预先考虑清楚,否则将会造成数据库中的数据关系混乱,以致影响应用程序的调用,后果不堪设想。

实验4 数据更新

一.实验目的

要求学生熟练掌握和使用Transact-SQL及SQL server 企业管理器向数据库中输入数据、修改数据和删除数据的操作。要求学生按要求实现基本表数据更新,并在数据更新过程中,验证各类数据完整性约束条件,即实体完整性、参照完整性及用户定义完整性约束条件。

二.实验软件环境

SQL Server 2008、SQL manager studio

三.实验内容

1、数据输入

分别向book、card、borrow三个基本表中输入10条数据(备注:考虑到以后的可操作性,希望数据的数据具有一定的现实意义),其次插入的数据满足数据完整性约束条件及表与表之间的关联性的要求。

2、修改数据

修改book、card、borrow三个基本表的数据,并要求将book表中price属性的值全部打8折、‘清华大学出版社’的书籍总藏书量增加100本等,同时满足数据完整性约束条件。

3、删除操作

删除book、card、borrow三个数据表中的某些数据,并注意数据完整性约束条件的限制。要求删除borrow 表中借书日期为1年前的数据,以及要求删除‘电子工业出版社’的书籍。

四.实验的结果及分析

五.思考题

1)如果在实验3中,没有定义数据完整性约束条件,则在数据录入或删除过程中会对数据库造成什么影响

答:录入数据时,有可能插入无效或重复的数据。删除数据时系统没提示有可能残留一些

待删除的数据,导致其他表数据不完整不能用。

2)思考如何利用SQL Server 2000中所提供的时间函数实现对时间的操作,如需要查询当前时间50天以前的图书的借阅数据该如何处理

答:调用getdate()函数可以返回当前系统日期,如下:Select * from borrow where borrow_date<=getdate()-50

六.实验心得体会

通过本实验基本学会掌握和使用Transact-SQL及SQL server 企业管理器向数据库中输入数据、修改数据和删除数据的操作,实现带参照完整性的数据操作。同时,在数据输入、修改和删除时应当谨慎地对数据进行操作,避免严重损失。

实验5 简单查询和连接查询

一.实验目的

使学生熟练掌握简单表的数据查询、数据联接查询以及数据排序的操作方法,并加深对SQL和Transact-SQL 语言的查询语句的理解。

二.实验软件环境

SQL Server 2008、SQL manager studio

三.实验内容

要求完成以下查询要求:

1、将计算机类的书存入永久的计算机图书表;

2、将借书日期在05年以前的借阅记录存入临时超期借阅表;

3、查询发生了借阅关系的借书证卡号,并按卡号降序排列;

4、查询清华大学出版社出版的图书情况;

5、查询目前被借出去的书籍的书号、借书证号以及借出日期,并按借出日期排序;

6、查询“程军”老师所借阅的书籍的书名;

7、查询借书者的编号,姓名,单位,所借书号,书名和借阅日期,并按读者编号排序。

四.实验的结果及分析

五.思考题

1、对于“查询程军老师所借阅的书籍的书名”的查询语句,分别使用左连接、右连接和自然连接命令,试比较所产生的结果有何不同,说明其原因,并指出对于该查询要求,哪种连接更符合实际要求。

答:使用左连接:select book.* from book left join borrow on = and cno='U002') 使用右连接:select book.* from borrow right join book on = and cno='U002')

使用自然连接:select book.* from borrow,book where = and cno='U002'

该查询使用自然连接更符合实际要求。

六.实验心得体会

通过本实验基本学会掌握简单表的数据查询、数据联接查询以及数据排序的操作方法,并加深对SQL和Transact-SQL语言的查询语句的理解。

实验6 嵌套查询

一.实验目的

使学生熟练掌握数据查询中嵌套查询语句的操作方法,并加深对Transact-SQL语言的查询语句的理解。

二.实验软件环境

SQL Server 2008、SQL manager studio

三.实验内容

要求完成以下查询要求:

1、哪一年出版的图书的总藏书数量最多

2、查询每本借书证的借书册数

3、今年未借过书的借书证

4、哪个系的同学借书最多

5、今年哪种类别的书借出最多

四.实验的结果及分析

五.思考题

1、试用多种形式表示实验中的查询语句,并进行比较。

答:如以上的第三小题,既可以用select cno from card

where cno not in(select cno from borrow where year(borrow_date)=year(getdate()))

也可以用exists语句:

select cno from card

where not exists(select * from borrow where year(borrow_date)=year(getdate()) and =cno)

六.实验心得体会

通过本实验基本学会掌握数据查询中嵌套查询语句的操作方法,并加深对Transact-SQL语言的查询语句的理解。

实验7 集合查询、分组查询、函数查询

一.实验目的

使学生熟练掌握数据查询中分组、统计、计算和组合的操作方法,并加深对Transact-SQL语言的查询语句的理解。

二.实验软件环境

SQL Server 2008、SQL manager studio

三.实验内容

要求完成以下查询要求:

1、查询计算机类和机械工业出版社出版的图书;

2、查询藏书量在10本以上的书(书名、作者、出版社、年份);

3、查询“数据库系统原理教程,王珊,清华大学出版社出版”还有多少本;

4、查询最近两年(2006、2007)都未被借过的书;

5、查询藏书种数、总册数、最高价、最低价;

6、查询哪些出版社的总藏书超过100种;

7、查询目前已借出多少册书;

8、查询这样的图书类别:要求该类别中最高的图书定价不低于该类别的图书平均定价的2倍;

9、查询“机械工业出版社”的各类图书的平均定价;

10、查询计算机类图书的书号、名称及价格,并计算册数和总价格。

四.实验的结果及分析

五.思考题

对于较为复杂的SELECT查询语句,比较通过创建临时表或创建视图的方式来简化查询语句的特点,并在大数据量的情况下,这三种情况对数据库性能会有何影响。

答:在大数据量的情况下在临时表中保持数据的子集,以在随后的连接中使用,这样能大大改善性能,如果访问很频繁,加载就会加重,tempdb的性能就会对整个DB产生重要的影响。而SELECT查询语句则可能要重复查询工作。而视图虽然使操作简单,安全性高,但由于视图是虚拟的表,在使用包括视图引用的SQL 语句时,除了执行所键入的SQL语句中的查询或更新之外,还要告诉DBMS执行定义视图的查询,这就影响了查询的效率。

六.实验心得体会

通过本实验基本学会掌握数据查询中分组、统计、计算和组合的操作方法,并加深对Transact-SQL语言的查询语句的理解。

实验8 存储过程

一.实验目的

在SQL Server的查询分析器中,掌握创建存储过程的方法和步骤,并掌握存储过程的使用方法以及存储过程的查看、修改和删除。

二.实验软件环境

SQL Server 2008、SQL manager studio

三.实验内容

要求完成以下要求:

1)利用已有的Book、Card、Borrow表,创建一个带参数的存储过程Borr_book。该存储过程的作用是:当输入基本表Card中的任意一个“姓名”时,将从三个表中返回该借阅者的借书证号、借阅的书名和借阅时间。

2)执行Borr_book存储过程,查询“刘永辉”的借书证号、借阅的书名和借阅时间。

3)使用系统存储过程sp_helptext查看存储过程Borr_book的文本信息。

4)为基本表“书”创建一个存储过程“jmxs”。当执行该存储过程时,将返回“T”类型借阅者的所有信息。

5)执行jmxs存储过程,查看“T”类型的借阅者的情况。

6)删除jmxs存储过程。

四.实验的结果及分析

1)

create procedure borr_book @sname char(8),@cno char(7) output,@title varchar(40) output,@borrow_date smalldatetime output as

select ,title,borrow_date from book,card,borrow

where = and = and sname=@sname

Go

五.思考题

1)如何在一个存储过程里调用另一个存储过程。

答:可以用CALL 存储过程名(参数列表) 调用先前定义过的另一个存储过程。

2)如何从一个存储过程中调用另一个存储过程的返回值。

答:使用带返回值的output参数。

3)如何对用户自定义的存储过程的正确性进行验证。

六.实验心得体会

通过本实验基本学会掌握SQL Server中视图、临时表、存储过程和触发器的创建方法以及利用视图简化查询语句的方法,加深对视图作用的理解。

相关文档
最新文档