实验报告2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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='高等教育出版社'

)

相关文档
最新文档