⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 图书管理数据库.sql

📁 图书馆管理系统
💻 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 + -