实验报告2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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,-- 图书编号
classNo char(3)not null,--分类号
bookName varchar(40)not null,--图书名称
authorName varchar(8)not null,-- 作者姓名
publishingName varchar(20)null,--出版社名称
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)Not null,-- 读者编号
readerName varchar(8)Not null,-- 姓名
Sex char(2)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)not null--出版社名称
alter table Book drop column shopDate
alter table Book add shopDate datetime 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='高等教育出版社'
)