数据库图书管理建表与修改表
根据调研选定实体及相应属性画出E-R图
2、将E-R模型转换为对应关系模型,并指出主码和外码
图书book(书号,类别,出版社,作者,书名,定价,备注);
读者reader(编号,姓名,单位,性别,电话);
借阅borrow(书号,读者编号,借阅日期,还书日期)。
3. 建数据库及表,定义各属性的域 。并完成主码、外码的定义。
根据上面的表结构,要求:① 对每个属性选择合适的数据类型;② 定义每个表的主码、是否允许空值和默认值等列级数据约束;③ 对每个表的名字和表中属性的名字尽可能用英文符号标识。
实现相关约束(预习自学内容):①建立上述三个表的联系,即实现:借阅表与图书表之间、借阅表与读者表之间的外码约束;② 实现读者性别只能是“男”或“女”的约束等。
(1)新建数据库
CREATE DATABASE Book_Reader_DB_20170513
CONTAINMENT = NONE
ON PRIMARY
(
NAME = 'Book_Reader_DB_20170513',
FILENAME = 'C:\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\Book_Reader_DB_20170513.mdf' ,
SIZE = 8192KB ,
MAXSIZE = 2048GB,
FILEGROWTH = 65536KB
)
LOG ON
(
NAME = 'Book_Reader_DB_20170513_log',
FILENAME = 'C:\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\Book_Reader_DB_20170513_log.ldf' ,
SIZE = 8192KB ,
MAXSIZE = 2048GB ,
FILEGROWTH = 65536KB
)
(2)新建图书表
【操作语句】
create table Book
(
Bid char(6) primary key,
Btype nvarchar(10) not null,
Bname nvarchar(50) not null,
Bauthor nvarchar(20) not null,
Pressname nvarchar(30) not null,
Bprice float not null ,
Btip nvarchar(50)
)
(3)新建读者表
【操作语句】
create table Reader
(
Rid char(8) primary key,
Rname nvarchar(10) not null,
Rsex nchar(2) not null check(Rsex='男' or Rsex='女'),
Rdepartment nvarchar(20) not null,
Rnumber char(11)
)
(4)新建借阅表
【操作语句】
create table RB
(
Rid char(8) foreign key references Reader(Rid),
Bid char(6) foreign key references Book(Bid),
BorrowDate datetime not null default getdate(),
ReturnDate datetime,
primary key(Rid, Bid)
)
4、使用inesert语句向表中插入适当数据
--向Reader表插入数据:
insert Reader values('2017258','东方','女','软件学院','12345677654'),
('2017290','西门吹雪','男','软件学院','24190520724'),
('2017250','上官','女','软件学院','35729264967'),
('2017345','南宫问天','男','计算机学院','35705724064'),
('2017336','北冥雪','女','计算机学院','19036330639')
--向Book表插入数据:
insert Book values('111000','计算机','计算机组成原理','盖茨','清华出版社',32.8,'出版于2012年'),
('111110','计算机','计算机网络','扎克','清华出版社',28.2,'出版于2015年'),
('111120','计算机','计算机发展史','艾比恩姆','清华出版社',30.6,'出版于2013年'),
('111119','数据库','SQL Server从入门到精(fang)通(qi)','王琳','中国人民大学出版社',32.8,'出版于2012年'),
('111205','数据库','MY SQL实践','苏铭','中国科技大学出版社',38.3,'出版于2016年'),
('111250','操作系统','Linux就该这么学','托沃兹','北京大学出版社',32.1,null)
--向RB表(借阅表)插入数据:
insert RB values('2017258','111000','2018-10-28','2018-11-13'),
('2017258','111120','2018-10-28',null),
('2017290','111119','2018-10-25','2018-11-27'),
('2017250','111119','2018-10-24','2018-11-28'),
('2017336','111205','2018-10-28','2018-11-13'),
('2017345','111000','2018-10-28','2018-11-13'),
('2017345','111250','2018-10-10','2018-10-28')
update和alter的使用:
(1)在实验一的基础上使用数据定义语言在图书表中增加两个属性:数量和购买日期。
【定义语句】
alter table Book add Bcount int not null default 0
alter table Book add Bbuytime datetime
【实验结果】
(2)使用update语句来修改图书表中的数量和购买日期数据
【操作语句】
update Book set Bcount=200, Bbuytime='2015-2-3' where Btype='计算机'
update Book set Bcount=300, Bbuytime='2015-3-5' where Btype='数据库'
update Book set Bcount=500, Bbuytime='2017-7-7' where Btype='操作系统'