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

📄 bookdb.sql

📁 一个图书管理系统
💻 SQL
字号:
use master
go

IF EXISTS (SELECT * 
	   FROM   master..sysdatabases 
	   WHERE  name = 'BookDB')
	DROP DATABASE BookDB
GO


--创建数据库
create database BookDB
on 
(
	name='Book_1',
	filename='c:\book_1.mdf',
	size=1,
	maxsize=10,
	filegrowth=1
),
filegroup filegroup1
(
	name='Book_2',
	filename='c:\book_2.mdf',
	size=1,
	maxsize=10,
	filegrowth=1
)
log on
(
	name='Book1_log',
	filename='c:\Book1_log.ldf',
	size=1,
	maxsize=unlimited,
	filegrowth=1
)
go
use BookDB
go

--创建用户表,登录用
create table T_User
(
	userName varchar(20) primary key not null, --用户名
	userPwd varchar(20) not null               --拥护密码
)

insert into T_User values('Admin','admin')
insert into T_User values('Tom','123456')
insert into T_User values('Jack','654321')
insert into T_User values('Water','watermima')

--出版社信息表publishInfo  
create table publishInfo
(
	pubID varchar(10) primary key,   --出版社ID
	pubName varchar(40),    --出版社名
	pubAdress varchar(50),           --出版社地址
	pubPhone varchar(20),            --出版社电话
	pubEmail varchar(20)             --出版社Email
)

insert into publishInfo values('pub-00001','电子工业出版社','四川成都','022-3657865','pbu@163.com')
insert into publishInfo values('pub-00002','清华大学出版社','北京','010-36345865','pbu@263.com')
insert into publishInfo values('pub-00003','人民大学出版社','北京','010-36655865','pbugrf@263.com')

--创建图书信息表books
create table books
(
	bookId varchar(30) primary key,  --图书编号
	bookName varchar(50) not null,   --图书名
	bookType varchar(40) not null,   --图书类型
	bookPrice money,                 --图书单价
        bookSum int not null,            --图书总数量
	bookAuthor varchar(20) null,     --图书作者
	pubID varchar(10) foreign key references publishInfo(pubID),   --出版社ID
	bookTime datetime                --购书时间
)

insert into books values('HBWH00000001','Java 2核心技术(上)','计算机类',88.00,8,'TOM','pub-00001','2003-3-12')
insert into books values('HBWH00000002','Java 2核心技术(下)','计算机类',108.00,8,'TOM','pub-00001','2003-3-12')
insert into books values('HBWH00000003','Marketing','管理类',34.00,6,'Jack','pub-00002','2004-7-8')
insert into books values('HBWH00000004','钢铁是怎样炼成的','文学类',24.00,20,'Wsoton','pub-00002','2000-9-18')
insert into books values('HBWH00000005','临床医学','医学类',24.00,120,'海岩','pub-00001','2004-9-8')
insert into books values('HBWH00000006','管理学原理','管理类',54.00,120,'Rostion','pub-00003','2004-7-8')
insert into books values('HBWH00000007','会计学','医学类',36.00,210,'Jom Rice','pub-00003','2004-5-18')
insert into books values('HBWH00000008','新编英语教程','外语类',44.00,70,'Jary','pub-00003','2004-4-23')
insert into books values('HBWH00000009','C++','计算机类',74.00,170,'Hoston','pub-00002','2002-4-23')
insert into books values('HBWH00000010','ASP动态网页设计','计算机类',94.00,250,'Logoer','pub-00002','2001-4-23')

--创建顾客信息表Custormers
create table Custormers
(
	custID varchar(30) primary  key , --顾客ID
        custName varchar(30),             --顾客姓名
	custPhone varchar(20),            --顾客电话
	custEmail varchar(40),            --顾客Email	
	custSum   numeric(6,2)            --顾客总消费金额 
)

--创建消费信息表Cust_Books
create table Cust_Books
(
	custID varchar(30) foreign key references Custormers(custID), --顾客ID
	bookId varchar(30) foreign key references books(bookId),  --图书编号
	bookNumber int,             --购书数量
	buyTime datetime            --购书时间
)


--存储过程,用于插入用户登录信息数据
go
create procedure pro_Insert
@userName varchar(20),
@userPwd varchar(20)

as
	if exists(select * from T_User where userName=@userName)
		return 0
	else
		begin
			insert into T_User values(@userName,@userPwd)
			return 1
		end

go

--存储过程,用于插入消费信息数据 
create procedure pro_Cust_Books
@custID varchar(30),
@custName varchar(30),
@custPhone varchar(20),
@custEmail varchar(40),
@bookId varchar(30),
@bookNumber int,
@buyTime datetime
as
	declare @num int,@price money,@sum money
	select  @num=bookSum from books where bookId=@bookId
	select  @price=bookPrice from books where bookId=@bookId
	select  @sum=@price*@bookNumber
	if @num<@bookNumber
		return 0
        else 
           begin
		--begin tran
		insert into Custormers(custID,custName,custPhone,custEmail)  values(@custID,@custName,@custPhone,@custEmail)
		insert into Cust_Books values(@custID,@bookId,@bookNumber,@buyTime)
		update Custormers set custSum=@sum where custID=@custID
		return 1
		--commit tran
	   end

go
--创建触发器Tri_user_books
create trigger Tri_Cust_Books
on Cust_Books
for insert
as
	declare @bookNumber int,@bookId varchar(30)
	select @bookNumber=bookNumber from inserted 
	select @bookId=bookId from inserted	
	update books set bookSum=bookSum-@bookNumber where bookId=@bookId

go
exec pro_Cust_Books 'CUS-00000001','wj','027-45672343','wkd@163.com','HBWH00000001',3,'2003-5-7'

go 
--创建存储过程,自动产生出版社编号
create procedure pro_pubID
	@pubID varchar(10) output
as
        declare @sum int
        select @pubID=pubID from publishInfo
        if @pubID is null      --当无记录时起始单号
              select  @pubID='pub-1'
          else
              begin 
	        select @pubID = max(pubID) from publishInfo 
	        select @sum=len(@pubID) 
	        select @pubID=substring(@pubID,5,@sum)
		select @pubID=
		  case
			when @pubID>=0 and @pubID<9 then 'pub-0000'+convert(varchar,@pubID+1)
			when @pubID>=9 and @pubID<99 then 'pub-000'+convert(varchar,@pubID+1)
			when @pubID>=99 and @pubID<999 then 'pub-00'+convert(varchar,@pubID+1)
			when @pubID>=999 and @pubID<9999 then 'pub-0'+convert(varchar,@pubID+1)
			when @pubID>=9999 and @pubID<99999 then 'pub-'+convert(varchar,@pubID+1)
		  end
                end
go 
--declare @out varchar(10)
--exec pro_pubID @out output
--select @out
--创建存储过程,自动产生出图书编号
go
create procedure pro_bookID
	@bookId varchar(30) output
as
        declare @sum int
        select @bookId=bookId from books
        if @bookId is null      --当无记录时起始单号
              select  @bookId='HBWH1'
          else
              begin 
	        select @bookId = max(bookId) from books 
	        select @sum=len(@bookId) 
	        select @bookId=substring(@bookId,5,@sum)
		select @bookId=
		  case
			when @bookId>=0 and @bookId<9 then 'HBWU0000000'+convert(varchar,@bookId+1)
			when @bookId>=9 and @bookId<99 then 'HBWU000000'+convert(varchar,@bookId+1)
			when @bookId>=99 and @bookId<999 then 'HBWU00000'+convert(varchar,@bookId+1)
			when @bookId>=999 and @bookId<9999 then 'HBWU0000'+convert(varchar,@bookId+1)
			when @bookId>=9999 and @bookId<99999 then 'HBWU000'+convert(varchar,@bookId+1)
			when @bookId>=99999 and @bookId<999999 then 'HBWU00'+convert(varchar,@bookId+1)
			when @bookId>=999999 and @bookId<9999999 then 'HBWU0'+convert(varchar,@bookId+1)
			when @bookId>=9999999 and @bookId<99999999 then 'HBWU'+convert(varchar,@bookId+1)
		  end
                end
go 
--declare @out varchar(30)
--exec pro_bookID @out output
--select @out
go
--创建存储过程,自动产生出顾客编号
create procedure pro_custID
	@custID varchar(30) output
as
        declare @sum int
        select @custID=custID from Custormers
        if @custID is null      --当无记录时起始单号
              select  @custID='HBWH1'
          else
              begin 
	        select @custID = max(custID) from Custormers 
	        select @sum=len(@custID) 
	        select @custID=substring(@custID,5,@sum)
		select @custID=
		  case
			when @custID>=0 and @custID<9 then 'CUS-0000000'+convert(varchar,@custID+1)
			when @custID>=9 and @custID<99 then 'CUS-000000'+convert(varchar,@custID+1)
			when @custID>=99 and @custID<999 then 'CUS-00000'+convert(varchar,@custID+1)
			when @custID>=999 and @custID<9999 then 'CUS-0000'+convert(varchar,@custID+1)
			when @custID>=9999 and @custID<99999 then 'CUS-U000'+convert(varchar,@custID+1)
			when @custID>=99999 and @custID<999999 then 'CUS-00'+convert(varchar,@custID+1)
			when @custID>=999999 and @custID<9999999 then 'CUS-0'+convert(varchar,@custID+1)
			when @custID>=9999999 and @custID<99999999 then 'CUS-'+convert(varchar,@custID+1)
		  end
                end
go
--declare @out varchar(30)
--exec pro_custID @out output
--select @out

--创建视图
create view view_Books
as
select b.bookType,b.bookName,b.bookAuthor,b.bookPrice,p.pubName,b.bookSum from publishInfo p join books b on p.pubID=b.pubID

go

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -