数据库实验二

  • 格式:doc
  • 大小:46.50 KB
  • 文档页数:12

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

仲恺农业工程学院实验报告纸

信息科学与技术学院网络工程专业 131 班组数据库原理及应用课

实验二数据查询与修改

一、实验目的

1、掌握使用简单查询、连接查询以及嵌套查询完成数据查询的方法

2、掌握应用SQL进行数据更新的方法;

3、掌握视图的创建与更新方法。

二、实验内容

第一部分:使用附加方式恢复数据库LibraryLib,完成如下各题:

1、《数据库原理及应用实验指导》P45 1.数据查询练习(1)-(6)

(1)查询各个超期罚款用户及其罚款总数,结果按罚款总数降序排列。

(2)查询已经超期一个月以上的还未归还图书的用户借书证编号。

(3)查询已经超期一个月以上的还未归还图书的用户名称、联系方式以及超期图书名。

(4)查询在同一天借阅了不同图书的用户借书证号。

(5)查询借书从来没有被超期罚款的用户信息。

(6)检索有图书所购册数大于或等于图书价格超过“50”的图书任一所购册数的图书的价格。

分析:先找出图书价格超过“50”的图书的所购册书假设a

要查的是所购册数>= any a 的图书的价格

第一部分:实验2.2 数据修改

1.使用SQL语句向“用户信息表Users”中插入元组(用户标识:LiS;用户权限:1;密码:2;用户名称:李生;性别:男(0);部门:计算系;已借图书:0)。

问:本题可以省略into子句中的属性名吗?如果要省略,需要注意什么?

2.向Publish(出版社信息) 表插入一条新的记录,在该记录中,出版社名

为:国防工业

出版社,地址为:北京市海淀大街籍海楼,出版社email为:gfgypublish@。

3.对每个出版社,求出所购图书总数和图书总价格,并把结果存入新建表“图书统计Temp_CNTBK”表中。

4.读者“ZouY”于今天通过管理员“LuoHH”借阅了一本“Visual FoxPro 及其应用系统开发”图书,使用T-SQL语句向Borrow表中插入该记录,并更改Book表中库存册书信息。

说明:本题有一定难度,请先思考如果插入这么一条记录,需要哪些信息,又如何获取到,关键是获取后将其存入一些变量中即可

5.使用SQL语句将所有读者借书应归还日期向后延长一天。

6.将“清华大学出版社”的图书所购册书和库存册书增加10本。

7.删除所有实际归还日期为“2009-04-17”以前且所借图书的名称中含有“数据库”字样的超期罚款记录。

8.删除“出版社信息表Publish”中出版社名称为“机械工业出版社”的元组,讨论该删除操作所受到的约束。

第二部分:实验2.3 视图

1.使用企业管理器创建一个行列子集视图View_Book,给出清华大学出版社的图书的的图书名称、书号、价格、书的页数和购买册书。

2.创建分组视图,将出版社标识及每个出版社的图书的最高价格和最低价格定义为一个视图。

3.创建一个基于题目1所建立视图的视图,定义一个视图,包括清华大学出版社的图书名称,以及购买该图书的总价格。

4.创建一个基于多个基表的视图,该视图由用户帐户、姓名、他在借书的名称组成。

5.查询用户“ZhangQF”所借图书的名称。

6.删除视图View_Publish。

第四部分:为选做题

使用附加方式恢复数据库student-course,然后完成下述各题

1. 查询计算机系(CS)、年龄在21岁以上的学生的姓名、年龄、出生年份;可能会用到函数getdate()以及Year()

2. 查询信息系(IS)和计算机(CS)系学生年龄不在21-23岁之间的学生的姓名、系别和年龄;

3. 查询所有名字里面第二个字为“敏”的学生的姓名、学号和性别;

4. 查询选修了4号课程的学生的学号和成绩,查询结果按学号的升序和分数的降序排序;

5. 查询出超过2个人选修且平均成绩大于82分的课程号和平均分。

6. 数据结构成绩高于平均分(数据结构)的学生名字、系别。

本题若改为:查询数据结构成绩高于它自己所选修课程的平均分的学生名字、系别,该怎么写查询语句。

7. 查询出所有课程平均成绩高于张立平均成绩的同学姓名。

三、实验步骤

1.1

select UserID,FineMoney

from ExtraDateFee

Order by FineMoney desc

1.2

select BookID

from BorrowHistory

where BorrowReturnDate-BorrowEndDate>30;

1.3

select erID,UserTelephone,BookName

from Book,BorrowHistory,Users

where BorrowHistory.BorrowReturnDate-BorrowHistory.BorrowEndDate>30

and BorrowHistory.bookID=Book.bookID and erID=erID;

1.4

select distinct erID

from borrow B1,borrow B2

where B1.BookID!=B2.BookID and year(B1.BorrowBeginDate)=year(B2.BorrowBeginDate) and month(B1.BorrowBeginDate)=month(B2.BorrowBeginDate)

and day(B1.BorrowBeginDate)=day(B2.BorrowBeginDate);

1.5

select*

from Users

where not exists(

select UserID

from ExtraDateFee

where erID=erID

);

1.6

select B1.BookPrice

from Book B1

where B1.BookNum >=

(select B2.BookNum

from Book B2

where BookPrice>50

)

2.1

insert

into

Users(UserID,UserPassword,UserPower,UserName,UserSex,UserDepart,UserBorrowedBooks) values('LiS','1','2','李生','0','计算系','0');

2.2

insert

into

Publish(PublishID,PublishName,PublishAddress,PublishTelephone,PublishEmail,PublishP ostCode)

values('3','国防工业出版社','北京市海淀大街籍海楼',' ','gfgypublish@',' ');