📄 图书管理数据库.sql
字号:
-- =============================================
-- Create 图书管理数据库
-- =============================================
IF EXISTS (SELECT *
FROM master..sysdatabases
WHERE name = N'图书管理数据库')
DROP DATABASE 图书管理数据库
GO
CREATE DATABASE 图书管理数据库
ON PRIMARY
( NAME = Library_data1,
FILENAME = N'd:\data\Library_data1.mdf',
SIZE = 1MB,
MAXSIZE = 20MB,
FILEGROWTH = 10%),
( NAME = Library_data2,
FILENAME = N'd:\data\Library_data2.mdf',
SIZE = 1MB,
MAXSIZE = 20MB,
FILEGROWTH = 10%)
LOG ON
( NAME = Library_log1,
FILENAME = N'd:\data\Library_log1.ldf',
SIZE = 512KB,
MAXSIZE = 20MB,
FILEGROWTH = 10%),
( NAME = Library_log2,
FILENAME = N'd:\data\Library_log2.ldf',
SIZE = 512KB,
MAXSIZE = 20MB,
FILEGROWTH = 10%)
GO
-- =============================================
-- Create 图书基本信息表
-- =============================================
use 图书管理数据库
IF EXISTS(SELECT name
FROM sysobjects
WHERE name = N'图书基本信息表'
AND type = 'U')
DROP TABLE 图书基本信息表
GO
CREATE TABLE 图书基本信息表 (
图书编号 char(15) PRIMARY KEY
CONSTRAINT CK_ISBN CHECK (图书编号 LIKE 'TP-[0-9][0-9]%')
DEFAULT 'TP-000001',
图书种类 char(20) NOT NULL,
书名 char(30) NOT NULL,
第一作者 char(8) NOT NULL,
价格 decimal(6,2) ,
出版日期 smalldatetime ,
出版社 char(20) NOT NULL,
是否在库 char(1) CONSTRAINT CK_是否在库 CHECK (是否在库='1' or 是否在库='0'),
图书简介 varchar(500)
)
GO
-- =============================================
-- Create 查阅者基本信息表
-- =============================================
use 图书管理数据库
IF EXISTS(SELECT name
FROM sysobjects
WHERE name = N'查阅者基本信息表'
AND type = 'U')
DROP TABLE 查阅者基本信息表
GO
CREATE TABLE 查阅者基本信息表 (
读者编号 char(10) PRIMARY KEY,
读者姓名 char(10) NOT NULL,
所属单位 char(30) NOT NULL,
职称 char(20) NOT NULL
)
GO
-- =============================================
-- Create 图书借阅表
-- =============================================
use 图书管理数据库
IF EXISTS(SELECT name
FROM sysobjects
WHERE name = N'图书借阅表'
AND type = 'U')
DROP TABLE 图书借阅表
GO
CREATE TABLE 图书借阅表 (
图书编号 char(15)
CONSTRAINT CK_ISBN1 CHECK (图书编号 LIKE 'TP-[0-9][0-9]%')
DEFAULT 'TP-123456',
读者编号 char(10) NOT NULL
CONSTRAINT CK_UID1 CHECK (读者编号 LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
书名 char(30) ,
借书日期 smalldatetime NOT NULL ,
还书日期 smalldatetime NULL,
CONSTRAINT PK_BORROW PRIMARY KEY(图书编号,读者编号,借书日期),
FOREIGN KEY (图书编号) REFERENCES 图书基本信息表(图书编号),
FOREIGN KEY (读者编号) REFERENCES 查阅者基本信息表(读者编号)
)
GO
-- =============================================
-- Create 罚款记录表
-- =============================================
use 图书管理数据库
IF EXISTS(SELECT name
FROM sysobjects
WHERE name = N'罚款记录表'
AND type = 'U')
DROP TABLE 罚款记录表
GO
CREATE TABLE 罚款记录表 (
读者编号 char(10)
CONSTRAINT CK_UID2 CHECK (读者编号 LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
图书编号 char(15)
CONSTRAINT CK_ISBN2 CHECK (图书编号 LIKE 'TP-[0-9][0-9]%')
DEFAULT 'TP-123456',
罚款日期 smalldatetime ,
罚款数目 numeric(6,2) ,
CONSTRAINT PK_PUNISH PRIMARY KEY (读者编号,图书编号,罚款日期),
FOREIGN KEY (读者编号) REFERENCES 查阅者基本信息表(读者编号),
FOREIGN KEY (图书编号) REFERENCES 图书基本信息表(图书编号))
GO
-- =============================================
-- Create 图书借阅历史表
-- =============================================
use 图书管理数据库
IF EXISTS(SELECT name
FROM sysobjects
WHERE name = N'图书借阅历史表'
AND type = 'U')
DROP TABLE 图书借阅历史表
GO
CREATE TABLE 图书借阅历史表 (
图书编号 char(15)
CONSTRAINT CK_ISBN3 CHECK (图书编号 LIKE 'TP-[0-9][0-9]%')
DEFAULT 'TP-123456',
读者编号 char(10) NOT NULL
CONSTRAINT CK_UID3 CHECK (读者编号 LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
书名 char(30) ,
借书日期 smalldatetime NOT NULL ,
还书日期 smalldatetime NULL,
CONSTRAINT PK_BORROW1 PRIMARY KEY(图书编号,读者编号,借书日期),
)
GO
-- =============================================
-- Create 读者所属单位表
-- =============================================
use 图书管理数据库
IF EXISTS(SELECT name
FROM sysobjects
WHERE name = N'读者所属单位表'
AND type = 'U')
DROP TABLE 读者所属单位表
GO
CREATE TABLE 读者所属单位表 (
单位名称 char(30) PRIMARY KEY
)
GO
-- =============================================
-- Create 职称表
-- =============================================
use 图书管理数据库
IF EXISTS(SELECT name
FROM sysobjects
WHERE name = N'职称表'
AND type = 'U')
DROP TABLE 职称表
GO
CREATE TABLE 职称表 (
职称名称 char(20) PRIMARY KEY
)
GO
-- =============================================
-- Create 登陆表
-- =============================================
use 图书管理数据库
IF EXISTS(SELECT name
FROM sysobjects
WHERE name = N'登陆表'
AND type = 'U')
DROP TABLE 登陆表
GO
CREATE TABLE 登陆表 (
用户名 char(10) NOT NULL PRIMARY KEY ,
密码 char(6) NULL)
GO
-- =============================================
-- Create 图书种类表
-- =============================================
use 图书管理数据库
IF EXISTS(SELECT name
FROM sysobjects
WHERE name = N'图书种类表'
AND type = 'U')
DROP TABLE 图书种类表
GO
CREATE TABLE 图书种类表 (
图书种类 char(20) PRIMARY KEY
)
GO
-- =============================================
-- Create table basic template
-- =============================================
use 图书管理数据库
IF EXISTS(SELECT name
FROM sysobjects
WHERE name = N'种类表'
AND type = 'U')
DROP TABLE 种类表
GO
CREATE TABLE 种类表 (
种类 char(20) primary key
)
GO
-- =============================================
-- Create 出版社表
-- =============================================
use 图书管理数据库
IF EXISTS(SELECT name
FROM sysobjects
WHERE name = N'出版社表'
AND type = 'U')
DROP TABLE 出版社表
GO
CREATE TABLE 出版社表 (
出版社 char(20) PRIMARY KEY NOT NULL,
)
GO
--===============================================
--催还通知单
--==============================================
use 图书管理数据库
IF EXISTS(SELECT NAME
FROM SYSOBJECTS
WHERE NAME = N'催还通知单'
AND TYPE = 'U')
DROP TABLE 催还通知单
GO
CREATE TABLE 催还通知单(
图书编号 char(15)
CONSTRAINT CK_ISBN4 CHECK (图书编号 LIKE 'TP-[0-9][0-9]%')
DEFAULT 'TP-123456',
读者编号 char(10) NOT NULL
CONSTRAINT CK_UID4 CHECK (读者编号 LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
书名 char(30) ,
借书日期 datetime NOT NULL ,
还书日期 smalldatetime NULL,
CONSTRAINT PK_BORROW2 PRIMARY KEY(图书编号,读者编号,借书日期),
)
GO
-- =============================================
-- Create borrow procedure
-- =============================================
-- creating the store procedure
use 图书管理数据库
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'borrow'
AND type = 'P')
DROP PROCEDURE borrow
GO
CREATE PROCEDURE borrow
@bkid char(15) = ''
AS
BEGIN
UPDATE 图书基本信息表
SET 是否在库='0'
WHERE 图书编号=@bkid
END
GO
-- =============================================
-- Create procedure basic template
-- =============================================
-- creating the store procedure
use 图书管理数据库
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'retbk'
AND type = 'P')
DROP PROCEDURE retbk
GO
CREATE PROCEDURE retbk
@string char(10) = ''
AS
BEGIN
UPDATE 图书基本信息表
SET 是否在库='1'
WHERE 图书编号=@string
END
GO
-- =============================================
-- Create procedure basic template
-- =============================================
-- creating the store procedure
use 图书管理数据库
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'multisearch'
AND type = 'P')
DROP PROCEDURE multisearch
GO
CREATE PROCEDURE multisearch
@text1 varchar(30) ,
@text2 varchar(15) ,
@text3 varchar(20)
AS
begin
set @text1='%'+rtrim(@text1)+'%'
if (@text2='出版社')
--begin
--print rtrim(@text1)
select * from 图书基本信息表 where 出版社 like @text1 and 图书种类 like @text3
--end
else if (@text2='书名')
select * from 图书基本信息表 where 书名 like @text1 and 图书种类 like @text3
else if (@text2='第一作者')
select * from 图书基本信息表 where 第一作者 like @text1 and 图书种类 like @text3
end
GO
-- =============================================
-- Create 删除触发器
-- =============================================
use 图书管理数据库
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'del_bk'
AND type = 'TR')
DROP TRIGGER del_bk
GO
CREATE TRIGGER del_bk
ON 图书基本信息表
instead of DELETE
AS
BEGIN
delete 图书基本信息表 where 图书编号 in (select 图书编号 from deleted where 是否在库='1')
print 'deleted'
END
GO
-- =============================================
-- Create 禁止借书触发器
-- =============================================
use 图书管理数据库
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'ins_borrow'
AND type = 'TR')
DROP TRIGGER ins_borrow
GO
CREATE TRIGGER ins_borrow
ON 图书借阅表
instead of INSERT
AS
BEGIN
insert 图书借阅表 select * from inserted where 读者编号 not in (select 读者编号 from 图书借阅表 where getdate()-借书日期>30)
END
GO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -