创建3个表,通过ALTER语句添加约束
书(Book) 的基本信息
列名 | 含义 | 类型及长度 | 是否可为空 |
bno | 书号 | char (8) | 否 |
category | 类别 | varchar(10) | 是 |
title | 书名 | varchar(40) | 否 |
press | 出版社 | varchar(40) | 否 |
book_year | 年份 | int | 否 |
anthor | 作者 | varchar(20) | 是 |
price | 价格 | Demical(7,2) | 否 |
book_total | 总藏书量 | int | 否 |
借书证(Card)的基本信息
列名 | 含义 | 类型及长度 | 是否可为空 |
cno | 借书证号 | char (7) | 否 |
cname | 姓名 | char (8) | 否 |
departdement | 单位 | varchar(40) | 是 |
type | 类别 | char(1) | 否 |
借书记录(Borrow)的基本信息
列名 | 含义 | 类型及长度 | 是否可为空 |
cno | 借书证号 | char (7) | 否 |
Bno | 书号 | char (8) | 否 |
borrow_date | 借书日期 | smalldatetime | 否 |
return_date | 还书日期 | smalldatetime | 是 |
--建表
CREATE TABLE Book
(
bno char(8) PRIMARY KEY NOT NULL,
category varchar(10),
title varchar(40) NOT NULL,
press varchar(30) NOT NULL,
book_year int NOT NULL,
anthor varchar(20),
price decimal(7,2) NOT NULL,
book_total int NOT NULL
)
CREATE TABLE Card
(
cno char(7) NOT NULL,
cname char(8) NOT NULL,
department varchar(40),
type char(1) NOT NULL
)
CREATE TABLE Borrow
(
cno char(7) NOT NULL,
bno char(8) NOT NULL,
borrow_date smalldatetime NOT NULL,
return_date smalldatetime
)
定义如下完整性约束条件:
(1)各基本表主码,并且要求主属性不能为空。
(2) 如果有外码,定义各基本表外码。
(3)要求检查基本表“借书证”中属性Type的值是否为(‘T',‘G’,‘U',‘O')。
(4)借书记录Borrow 基本表中borrow_date 默认日期为系统当前时间。(5)确定各基本表哪些字段需要建立索引。
--修改基本表
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [完整性约束] ]
[ DROP <完整性约束> ]
[ ALTER <列名> <数据类型> ]
--添加主码
ALTER TABLE Book ADD CONSTRAINT PK_book PRIMARY KEY (bno)
ALTER TABLE Card ADD CONSTRAINT PK_card PRIMARY KEY (cno)
ALTER TABLE Borrow ADD CONSTRAINT PK_borrow PRIMARY KEY (bno,cno,borrow_date)
--添加外码
ALTER TABLE Borrow ADD CONSTRAINT FK_book FOREIGN KEY (bno) REFERENCES Book (bno),
CONSTRAINT FK_card FOREIGN KEY (cno) REFERENCES Card (cno)
--添加检查约束
ALTER TABLE Card ADD CONSTRAINT CHECK_type CHECK (type='T'or type='G'or type='U'or type='O')
--添加系统默认时间 **** for column_name
ALTER TABLE Borrow ADD CONSTRAINT DEFAULT_borrow_date DEFAULT GETDATE() FOR borrow_date
--创建索引
CREATE UNIQUE INDEX I_bno ON Book (bno)
CREATE UNIQUE INDEX I_cno ON Card (cno)
CREATE UNIQUE INDEX I_bno_cno ON Borrow (cno,bno)