管理员表
列名 用户名 性别 口令 列名 类型名 借阅期限 tinyint 图书表 列名 ISBN 书名 作者 出版社 出版时间 单价 类型名 状态 列名 部门名 电话 列名 工号 姓名 性别 姓名 Email 部门名 列名 业务编号 ISBN 工号 借办理人 借出日期 还办理人 归还日期 列名 int char(20) Char(4) Char(10) datetime Char(10) datetime 催还记录表 类型 约束 Char(4) Nchar(4) Char(2) Nchar(4) Char(30) Nchar(10) 借还记录表 类型 约束 Pk 自动标示 Fk references 图书表.isbn Fk references 教师表.工号 NOT NULL NOT NULL 类型 Char(20) Nchar(20) Nchar(20) Nchar(20) DateTime money Nchar(10) Nchar(2) 部门表 类型 NChar(10) char(11) 教师表 类型 pk NOT NULL NOT NULL,且默认为男 类型 Char(10) Char(2) Nchar(20) 类型表 类型 NChar(10) pk pk 约束 NOT NULL,且默认为男 NOT NULL 约束 NOT NULL 约束 pk NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL FK references 类型表.图书类型 状态 in (库存,借出) 约束 pk NOT NULL 约束 NOT NULL NOT NULL Fk references 部门表.部门名 业务编号 ISBN 工号 办理人 催还日期 int char(11) Char(4) Char(10) datetime Pk 自动标示 Fk references 图书表.isbn Fk references 教师表.工号 NOT NULL NOT NULL 1) 2)
使用SQL语句,创建数据库,数据库名为BookStore
使用SQL语句,在数据库中创建表,设定表的主键约束、外键约束、
语句:Create Databse Bookstore
检查约束、非空约束。
语句:
CREATE TABLE 管理员表(
管理员名nchar(10) NOT NULL,
性别Char(2) not null DEFAULT '男' , 口令nchar(20) NOT NULL,
CONSTRAINT PK_管理员 PRIMARY KEY CLUSTERED (管理员名 ASC) ) ON [PRIMARY] GO CREATE TABLE 类型表(
类型名nchar(10) NOT NULL, 借阅期限tinyint NOT NULL,
CONSTRAINT PK_类型PRIMARY KEY CLUSTERED (类型名 ASC) ) ON [PRIMARY] GO
CREATE TABLE 图书表(
ISBN char(20) NOT NULL,
书名 nchar(20) NOT NULL, 作者 nchar(20) NOT NULL, 出版社 nchar(20)NOT NULL , 出版时间 datetime NOT NULL , 单价 money NOT NULL,
类型名 nchar(10) NOT NULL,
状态 nchar(2) NOT NULL CHECK(状态in('库存','借出')), CONSTRAINT PK_图书 PRIMARY KEY CLUSTERED (ISBN ASC),
CONSTRAINT FK_图书_类型FOREIGN KEY(类型名)REFERENCES 类型表(类型名) ON UPDATE CASCADE ON DELETE CASCADE ) ON [PRIMARY]
GO
CREATE TABLE 部门表(
部门名 nchar(10) NOT NULL, 电话 char(11) ,
CONSTRAINT PK_部门表 PRIMARY KEY CLUSTERED ( 部门名 ASC)
) ON [PRIMARY] GO
CREATE TABLE 教师表(
工号 char(4) NOT NULL, 姓名 nchar(4) NOT NULL,
性别 Char(2) not null DEFAULT '男' , Email char(30) NOT NULL,
部门名 nchar(10) NOT NULL,
CONSTRAINT PK_教师表PRIMARY KEY CLUSTERED (工号ASC),
CONSTRAINT FK_部门表_教师表FOREIGN KEY(部门名)REFERENCES 部门表(部门名) ON UPDATE CASCADE ON DELETE CASCADE, ) ON [PRIMARY] GO
CREATE TABLE 借还记录表(
业务编号 int identity(0,1) NOT NULL , ISBN char(20) NOT NULL,
工号 char(4) NOT NULL,
代办理人char(10) NOT NULL, 借出日期datetime NOT NULL, 还办理人char(10) NULL, 归还日期datetime NULL,
CONSTRAINT PK_借还记录表PRIMARY KEY CLUSTERED (业务编号ASC),
CONSTRAINT FK_借还记录表_教师表FOREIGN KEY(工号)REFERENCES 教师表(工号) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT FK_借还记录表_借还记录表FOREIGN KEY(ISBN) REFERENCES 图书表(ISBN) ON UPDATE CASCADE ON DELETE CASCADE ) ON [PRIMARY] GO
CREATE TABLE 催还记录表(
业务编号int identity(0,1) NOT NULL, ISBN char(20) NOT NULL,
工号 char(4) NOT NULL, 办理人 char(10) NOT NULL, 催还日期 datetime ,
CONSTRAINT PK_催还记录表PRIMARY KEY CLUSTERED(业务编号 ASC),
CONSTRAINT FK_催还记录表_教师表FOREIGN KEY(工号) REFERENCES 教师表(工号) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT FK_催还记录表_图书FOREIGN KEY(ISBN) REFERENCES 图书表(ISBN) ON UPDATE CASCADE ON DELETE CASCADE ) ON [PRIMARY]
GO
3) 写以下增删改查操作的SQL语句
1. 增加三条类型表数据
语句:
INSERT INTO 类型表(类型名,借阅期限) VALUES('计算机',150) INSERT INTO 类型表(类型名,借阅期限)VALUES('文学',180) INSERT INTO 类型表(类型名,借阅期限)VALUES('经济',30)
--delete 类型表
--select * from 类型表
2. 增加三条部门表数据 语句:
INSERT INTO 部门表(部门名,电话) VALUES('网络系','020-8188483') INSERT INTO 部门表(部门名,电话) VALUES('外语系','020-8188482') INSERT INTO 部门表(部门名,电话) VALUES('管理系','020-8188481') --select * from 部门表 3. 增加三条教师表数据 语句:
INSERT INTO 教师表(工号,姓名,性别,Email ,部门名) VALUES('J001','张三','女','zs@163.com','网络系')
INSERT INTO 教师表(工号,姓名,性别,Email ,部门名)VALUES('J002','李四','男','LS@163.com','网络系')
INSERT INTO 教师表(工号,姓名,性别,Email ,部门名)VALUES('J003','王五','男','ww@163.com','外语系')
--select * from 教师表
4. 增加五条图书表数据 语句:
INSERT INTO 图书表(ISBN,书名,作者,出版社,出版时间,单价,类型名,状态)
VALUES('9789302218661','C#','江红','清华大学出版社','2012.2.10',45,'计算机','库存')
INSERT INTO 图书表(ISBN,书名,作者,出版社,出版时间,单价,类型名,状态) VALUES('9787802229761','人生博弈密码','吕叔春','中国华侨出版社','2009.2.1',36.8,'文学','库存')
INSERT INTO 图书表(ISBN,书名,作者,出版社,出版时间,单价,类型名,状态)
VALUES('9787301150894','经济学原理','梁小民','北京大学出版社','2009.4.1',54,'经济','借出')
--select * from 图书表
5. 增加三条管理员表数据 语句:
INSERT INTO 管理员表(管理员名,性别,口令) VALUES('吴管','男','wg001') INSERT INTO 管理员表(管理员名,性别,口令) VALUES('李管','女','Lg002') INSERT INTO 管理员表(管理员名,性别,口令) VALUES('徐管','男','Xg003')
--select * from 管理员表 --select * from 教师表 --select * from 部门表 --select * from 类型表 --select * from 图书表 --select * from 管理员表
6. 某教师今天借了某书,涉及两个操作,一是图书表的状态改为“借出”,二是增加一个借还表记
录 语句:
insert 借还记录表(ISBN ,工号,代办理人,借出日期,还办理人,归还日期)
values('9787802229761','J001','wg001','2012.3.20','Lg002','')
--select * from 借还记录表 --delete 借还记录表
update 图书表 set 状态='借出'
where ISBN='9787802229761'
--select * from 图书表
7. 将某书的单价改为32元。 语句:
update 图书表 set 单价=32
where ISBN='9787802229761'
--select * from 图书表
8. 查询某教师的借还书记录 语句:
--select * from 教师表 --select * from 部门表 --select * from 类型表 --select * from 图书表 --select * from 管理员表 --select * from 借还记录表
select a.工号,姓名,部门名,书名
from 教师表 a join 借还记录表 c on a.工号=c.工号
join 图书表 b on c.ISBN=b.ISBN where a.工号='J001' go
9. 查询某本书的流转记录 语句:
--select * from 借还记录表
select a.工号,姓名,部门名,书名,借出日期,归还日期 from 教师表 a,图书表 b,借还记录表 c
where a.工号=c.工号 and b.ISBN=c.ISBN and b.ISBN='9787802229761'
4) 写出创建以下视图的SQL语句
1. 借出图书视图 语句:
--select * from 借还记录表 --select * from 图书表
Create view 借出图书视图 As