实验报告2

更新时间:2023-12-03 11:43:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1个实验.数据库与数据表定义 ——第3章实验四

(1) 创建一个BookDB数据库,要求至少一个数据文件和一个日志文件。

create database BookDB on

(name=BookDB,

filename='C:\\work\\BookDB.mdf', size=4, maxsize=16, filegrowth=2) log on

(name=BookLog,

filename='C:\\work\\BookLog.ldf', size=1, maxsize=5, filegrowth=1)

(2) 创建图书管理相关4张关系表

(3) 创建基本表时,要求分别为每张关系表合理建立主、外键约束。 create table BookClass(

classNo char(3) not null, --图书分类号

className varchar(20) not null,--图书分类名称 constraint BookClassPk primary key(classNo) )

create table Book( bookNo

char(10) not null, -- 图书编号

not null , --分类号

not null , --图书名称

null

, --出版社名称

classNo char(3)

bookName varchar(40)

authorName varchar(8) not null, -- 作者姓名 publishingName varchar(20) publishingNo char(17) null price numeric(7,2) null

, --出版社编号

, --出版日期

, --单 价

publishingDate datetime null

shopDate datetime null, -- 入库时间 shopNum numeric(3) null, -- 入库数量 constraint BookPk primary key(bookNo),

constraint BookFk foreign key(classNo)references BookClass(classNo) )

create table Reader( readerNo char(8) readerName Sex

char(2)

Not null, -- 读者编号

Not null, -- 姓 名

, --身份证号

, --性 别

varchar(8)

null

identifycard char(18) null

workUnit varchar(50) null, -- 工作单位

borrowCount tinyint null, -- 借书数量 constraint ReaderPk primary key(readerNo) )

create table Borrow( readerNo

char(8)

not null , --

读者编号 借阅日期 应归还日期

bookNo char(10) not null , --

图书编号

borrowDate datetime not null, -- shouldDate datetime not null , --

returnDate datetime null, -- 归还日期

constraint BorrowPk primary key(readerNo, bookNo),

constraint BorrowFk1 foreign key(readerNo)references Reader(readerNo), constraint BorrowFk2 foreign key(bookNo)references Book(bookNo) )

(4) 表结构的修改,要求:

① 修改图书表结构,要求出版社名称和入库时间不允许为空。 alter table Book drop column publishingName

alter table Book add publishingName varchar(20) alter table Book drop column shopDate

alter table Book add shopDate datetime not null -- 入库时间

not null --出版社名称

② 修改读者表结构,要求读者身份证号不允许为空。

alter table Reader drop column identifycard

alter table Reader add identifycard char(18) null --身份证号

第2个实验.索引与视图定义 ——第3章实验五

(1) 根据基本表创建以下索引:

① 在图书表中按出版社编号建立一个非聚集索引PublishingnoIdx。

create index PublishingnoIdx on Book(publishingNo )

② 在读者表中按身份证号建立一个非聚集索引IdentifycardIdx。

create index IdentifycardIdx on Reader(identifycard)

③ 在读者表中,首先按工作单位的升序,然后按借书数量降序建立一个非聚集索引WorkunitCountIdx。

create index WorkunitCountIdx on Reader(workUnit, borrowCount desc) (2) 创建一个只含清华大学出版社信息的图书视图BookView。

create view BookView as

select * from Book where publishingName='清华大学出版社'

(3)创建一个包含读者编号、读者姓名、读书编号、图书名称、借阅日期、归还日期的视图BorrowView。

create view BorrowView as

select b.readerNo,c.readerName,b.bookNo,a.bookName,b.borrowDate,

b.returnDate

from Book a, Borrow b, Reader c

where c.readerNo=b.readerNo and b.bookNo=a.bookNo

(4) 创建一个视图,要求显示至少借阅了3本书的读者信息ReaderView。

create view ReaderView as select * from Reader where readerNo in( select readerNo from Borrow group by readerNo having count(*)>=3 )

(5) 在视图BorrowView中查询2010年4月22日以前借阅的图书。

select *

from BorrowView

where

year(borrowdate)<=2010

and

month(borrowdate)<=4

and

day(borrowdate)<22

(6) 在视图ReaderView中查询借阅了高等教育出版社出版的图书的读者信息。

select *

from ReaderView where readerNo in(

select a.readerNo from Borrow a,Book b where a.bookNo=b.bookNo and b.publishingName='高等教育出版社'

)

(7)在视图BorrowView基础上再建一个包含合生元有限公司读者所借图书信息的视图BorrowView1。

create view BorrowView1 as select *

from BorrowView where readerNo in(

select readerNo from Reader where workUnit='合生元有限公司' )

(8) 删除视图BorrowView。

drop view BorrowView

第3个实验.数据更新操作 ——第3章实验六

根据BookDB中四张关系表,完成以下更新操作:

(1) 分别给这四张表添加信息,要求图书分类表、图书表、读者表各插入5个元组,借阅表插入20个元组。

insert BookClass values('001','经济类') insert BookClass values('002','外语类') insert BookClass values('003','计算机类') insert BookClass values('004','建筑类') insert BookClass values('005','文学类')

insert Book values('B200101001','001','政治经济学','宋涛','中国人民大学出版社','P1991010100010001',31.80,'19910101','19950111',100)

insert Book values('B200201001','002','大学英语','郑树棠','外语教学与研究出版社','P1992010100010001',35.20,'19920101','19960111',130)

insert Book values('B200301001','003','数据库系统原理','吴京慧','清华大学出版社','P1993010100010001',58.20,'19930101','19950111',160)

insert Book values('B200101002','001','微观经济学','张蕊','高等教育出版社','P1991010100010002',41.80,'19910102','19950112',110)

insert Book values('B200101003','001','宏观经济学','袁明圣','中国财经经济出版社','P1991010100010003',51.80,'19910103','19950113',120)

insert Book values('B200201002','002','商务英语','马升烨','上海外语学院出版社','P1992010100010002',45.20,'19920102','19960112',140)

insert Book values('B200201003','002','商务英语','江宇佳','西安交通大学出版社','P1992010100010003',55.20,'19920103','19960113',150)

insert Book values('B200301002','003','组网技术','万征','浙江大学出版社','P1993010100010002',38.20,'19930102','19950112',170)

insert Book values('B200301003','003','人工智能','费翔林','电子工业出版社','P1993010100010003',43.20,'19930103','19950113',180)

insert Book values('B200301004','003','算法设计与分析','陈慧南','科学出版社','P1993010100010004',58.20,'19930104','19950114',190)

insert Reader values('R2005001','张小娟','F','412723199001014321','统一股份有限公司',0) insert Reader values('R2006001','刘凤','F','412723199003014321','联合股份有限公司',0) insert Reader values('R2007001','高代鹏','M','412723199005014321','洪都股份有限公司',0) insert Reader values('R2008001','陈辉','M','412723199111014321','南昌市电脑研制公司',0) insert Reader values('R2009001','李虹冰','F','412723199208014321','富士康科技集团',0) insert Reader values('R2005002','张露','F','412723199002014321','兴隆股份有限公司',0) insert Reader values('R2006002','喻自强','M','412723199004014321','万事达股份有限公司',0) insert Reader values('R2007002','张晓梅','F','412723199112014321','世界技术开发公司',0) insert Reader values('R2008002','张良','M','412723199110014321','上海生物研究室',0) insert Reader values('R2009002','韩福平','M','412723199209014321','合生元有限公司',0)

insert Borrow values('R2005001','B200101001','20110901','20111001',null) insert Borrow values('R2006001','B200101001','20110907','20111007','20111005') insert Borrow values('R2007001','B200201001','20110913','20111013','20111010') insert Borrow values('R2008001','B200301001','20110915','20111015','20111013') insert Borrow values('R2009001','B200301001','20110918','20111018',null) insert Borrow values('R2005001','B200101002','20110902','20111002','20111001') insert Borrow values('R2005001','B200101003','20110903','20111003',null) insert Borrow values('R2005002','B200101001','20110904','20111004','20111003') insert Borrow values('R2005002','B200101002','20110905','20111005',null) insert Borrow values('R2005002','B200101003','20110906','20111006','20111008') insert Borrow values('R2006001','B200101002','20110908','20111008','20111006') insert Borrow values('R2006001','B200101003','20110909','20111009','20111012') insert Borrow values('R2009002','B200201001','20110910','20111010','20111008') insert Borrow values('R2006002','B200201002','20110911','20111011','20111008') insert Borrow values('R2006002','B200201003','20110912','20111012','20111008') insert Borrow values('R2007001','B200201002','20110914','20111014',null) insert Borrow values('R2007001','B200201003','20110915','20111015','20111010') insert Borrow values('R2009002','B200201001','20110916','20111016','20111014') insert Borrow values('R2007002','B200201002','20110917','20111017','20111014') insert Borrow values('R2007002','B200201003','20110917','20111017','20111014')

(2)将借阅次数少于3次的图书数量减半,借阅次数高于50次的图书数量增加50%。

update Book

set shopNum=shopNum/2 where bookNo in( select bookNo from Book

group by bookNo having count(*)<3 )

update Book

set shopNum=shopNum*(1+0.5) where bookNo in( select bookNo from Book group by bookNo having count(*)>50 )

(3)将富士康科技集团读者的借书期限延长至3个月。

update Borrow

set shouldDate= shouldDate+90 where ReaderNo in( select ReaderNo from Reader

where workUnit like '富士康%' )

(4)根据借阅表修改每个读者的借书数量。

update Reader

set borrowCount=Max from Reader a,(

select count(*) Max,ReaderNo from Borrow group by ReaderNo ) b

where a.readerNo=b.readerNo

(5)将江西财经学院的读者工作单位修改为江西财经大学。

update Reader

set workUnit='江西财经学院' from Reader

where workUnit='江西财经学院'

(6)删除从未借过书的读者。

delete from Reader where readerNo in( select ReaderNo from Borrow group by ReaderNo having count(*)=0

)

(7)删除借阅了大学英语的借阅记录。

delete from Borrow where bookNo in( select bookNo from Book

where bookName='大学英语' )

(8)将入库数量最多的图书单价下调5%。

update Book

set price=price*(1-0.05) where shopNum=( select max(shopNum) from Book )

(9)将“经济管理类”的图书单价提高10%。

update Book

set price=price*(1+0.1) where bookNo in( select bookNo from BookClass

where classNo='经济管理类' )

(10)删除价格超过60元的图书。

delete from Book where price>60

本文来源:https://www.bwwdw.com/article/jfxt.html

Top