枯木逢春猶再發(fā),人無兩度再少年??
系統(tǒng)主要模塊如下:
(1) 書店銷售管理系統(tǒng)設(shè)計與實現(xiàn)—圖書入庫管理及查詢統(tǒng)計
圖書入庫管理:維護(hù)入庫圖書信息(如圖書編號、書名、作者、價格、圖書分類、出版社等)。自動計算庫存。
圖書查詢統(tǒng)計:按圖書分類,出版社、書名、作者等條件查詢圖書的詳細(xì)信息。支持模糊查詢。
(2) 書店銷售管理系統(tǒng)設(shè)計與實現(xiàn)—銷售管理
銷售管理:銷售過的圖書都記錄在銷售列表中,方便統(tǒng)計收入。圖書銷售后,實時記錄圖書庫存,按每天統(tǒng)計銷售額、按每個月或季度統(tǒng)計銷售額并生成報表,并能根據(jù)銷售數(shù)量統(tǒng)計生成暢銷書名單。
(3) 書店銷售管理系統(tǒng)設(shè)計與實現(xiàn)—書店會員管理
書店會員管理:提供會員信息的維護(hù)功能,可設(shè)置會員等級,不同級別的會員享受不同的折扣,可以變更折扣額度。
目錄
一、數(shù)據(jù)字典
? 1.圖書實體表
? 2.會員實體表
? 3. 會員類型表
? 4. 銷售實體表
? 5. 銷售明細(xì)實體表
二、概念模型設(shè)計
? 1. 圖書基本信息E-R圖
? 2. 會員實體E-R圖
? 3.會員類型E-R圖
? 4.銷售實體E-R圖
? 5.銷售明細(xì)E-R圖
? 6.總體E-R圖
三、邏輯結(jié)構(gòu)設(shè)計
? 邏輯模型圖
四、物理結(jié)構(gòu)設(shè)計
? 設(shè)計與實現(xiàn)
?? 表的創(chuàng)建
?? 數(shù)據(jù)插入
五、SQL查詢
? 1. 分組統(tǒng)計、模糊查詢
? 2. 天銷售額
? 3. 天銷售榜前三
? 4.月銷售額
? 5. 月銷售榜前三
? 6.自動計算庫存,支付金額(觸發(fā)器)
一、數(shù)據(jù)字典
1. 圖書實體表
字段名 | 別名 | 數(shù)據(jù)類型 | 長度 | 約束 |
---|---|---|---|---|
圖書編號 | bookIsbn | 字符型 | 20位 | 主碼 |
圖書名稱 | bookName | 字符型 | 20位 | not null |
作者 | bookAuthor | 字符型 | 20位 | not null |
圖書類別 | bookType | 字符型 | 20位 | not null |
價格 | bookPrice | 浮點型 | \ | not null |
出版社 | bookPublisher | 字符型 | 20位 | not null |
庫存 | bookCount | 整型 | \ | not null |
2.會員實體表
字段名 | 別名 | 數(shù)據(jù)類型 | 長度 | 約束 |
---|---|---|---|---|
會員id | vipId | 字符型 | 20位 | 主碼 |
會員等級 | vipLevel | 整型 | \ | 外鍵 |
會員名字 | vipName | 字符型 | 20位 | not null |
會員性別 | vipSex | 字符型 | 20位 | not null |
會員年齡 | vipAge | 字符型 | 20位 | not null |
會員電話 | vipTel | 字符型 | 20位 | not null |
3. 會員類型表
字段名 | 別名 | 數(shù)據(jù)類型 | 長度 | 約束 |
---|---|---|---|---|
會員等級 | vipId | 字符型 | 20位 | 主鍵 |
會員等級名 | vipName | 字符型 | 20位 | not null |
會員等級折扣 | vipLevelDisCount | float | \ | not null |
4. 銷售實體表
字段名 | 別名 | 數(shù)據(jù)類型 | 長度 | 約束 |
---|---|---|---|---|
銷售單號 | saleId | 字符型 | 20位 | 主鍵 |
會員ID | vipId | 字符型 | 20位 | 外鍵 |
銷售日期 | saleDate | 日期型 | \ | not null |
5. 銷售明細(xì)實體表
字段名 | 別名 | 數(shù)據(jù)類型 | 長度 | 約束 |
---|---|---|---|---|
銷售明細(xì)id | saleDetailId | 字符型 | 20位 | 主鍵 |
銷售單號 | saleId | 字符型 | 20位 | 外鍵 |
圖書編號 | bookIsbn | 字符型 | 20位 | 外鍵 |
銷售數(shù)量 | bookSaleCount | 整型 | \ | not null |
二、概念模型設(shè)計
1. 圖書基本信息E-R圖
2. 會員實體E-R圖
3.會員類型E-R圖
4.銷售實體E-R圖
5.銷售明細(xì)E-R圖
6.總體E-R圖
三、邏輯結(jié)構(gòu)設(shè)計
E-R圖向關(guān)系模型的轉(zhuǎn)換(主鍵用下劃線標(biāo)出)
圖書(圖書編號,圖書名稱,作者,圖書類別,價格,出版社,庫存)
會員(會員id,會員等級,會員名字,會員性別,會員年齡,會員電話)
會員類型(會員等級,會員等級名,會員等級折扣)
銷售(銷售單號,會員ID,銷售日期)
銷售明細(xì)(銷售明細(xì)id,銷售單號,圖書編號,銷售數(shù)量)
邏輯模型圖
四、物理結(jié)構(gòu)設(shè)計
設(shè)計與實現(xiàn)
1. 創(chuàng)建book表
/*==============================================================*/
/* Table: book */
/*==============================================================*/
create table book (
bookIsbn char(20) not null,
bookName char(20) null,
bookAuthor char(20) null,
bookType char(20) null,
bookPrice float null,
bookPublisher char(20) null,
bookCount int null,
constraint PK_BOOK primary key nonclustered (bookIsbn)
)
2.創(chuàng)建會員表
/*==============================================================*/
/* Table: vip */
/*==============================================================*/
create table vip (
vipId char(20) not null,
vipLevel int null,
vipName char(20) null,
vipSex char(20) null,
vipAge char(20) null,
vipTel char(20) null,
constraint PK_VIP primary key nonclustered (vipId)
)
3.創(chuàng)建會員類型表
/*==============================================================*/
/* Table: vipType */
/*==============================================================*/
create table vipType (
vipLevel int not null,
vipLevelName char(20) null,
vipLevelDisCount float null,
constraint PK_VIPTYPE primary key nonclustered (vipLevel)
)
4.創(chuàng)建銷售實體表
/*==============================================================*/
/* Table: sale */
/*==============================================================*/
create table sale (
saleId char(20) not null,
vipId char(20) null,
saleDate datetime null,
constraint PK_SALE primary key nonclustered (saleId)
)
5.創(chuàng)建銷售明細(xì)表
/*==============================================================*/
/* Table: saleDetail */
/*==============================================================*/
create table saleDetail (
saleDetailId char(20) not null,
saleId char(20) null,
bookIsbn char(20) null,
bookSaleCount int null,
constraint PK_SALEDETAIL primary key nonclustered (saleDetailId)
)
6.創(chuàng)建表整體腳本如下:
/*==============================================================*/
/* DBMS name: Microsoft SQL Server 2012 */
/* Created on: 2022/11/18 8:12:35 */
/*==============================================================*/
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('sale') and o.name = 'FK_SALE_BUY_VIP')
alter table sale
drop constraint FK_SALE_BUY_VIP
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('saleDetail') and o.name = 'FK_SALEDETA_RELATIONS_SALE')
alter table saleDetail
drop constraint FK_SALEDETA_RELATIONS_SALE
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('saleDetail') and o.name = 'FK_SALEDETA_RELATIONS_BOOK')
alter table saleDetail
drop constraint FK_SALEDETA_RELATIONS_BOOK
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('vip') and o.name = 'FK_VIP_參照_VIPTYPE')
alter table vip
drop constraint FK_VIP_參照_VIPTYPE
go
if exists (select 1
from sysobjects
where id = object_id('SysManageUser')
and type = 'U')
drop table SysManageUser
go
if exists (select 1
from sysobjects
where id = object_id('book')
and type = 'U')
drop table book
go
if exists (select 1
from sysindexes
where id = object_id('sale')
and name = 'buy_FK'
and indid > 0
and indid < 255)
drop index sale.buy_FK
go
if exists (select 1
from sysobjects
where id = object_id('sale')
and type = 'U')
drop table sale
go
if exists (select 1
from sysindexes
where id = object_id('saleDetail')
and name = 'Relationship_4_FK'
and indid > 0
and indid < 255)
drop index saleDetail.Relationship_4_FK
go
if exists (select 1
from sysindexes
where id = object_id('saleDetail')
and name = 'Relationship_6_FK'
and indid > 0
and indid < 255)
drop index saleDetail.Relationship_6_FK
go
if exists (select 1
from sysobjects
where id = object_id('saleDetail')
and type = 'U')
drop table saleDetail
go
if exists (select 1
from sysindexes
where id = object_id('vip')
and name = '參照_FK'
and indid > 0
and indid < 255)
drop index vip.參照_FK
go
if exists (select 1
from sysobjects
where id = object_id('vip')
and type = 'U')
drop table vip
go
if exists (select 1
from sysobjects
where id = object_id('vipType')
and type = 'U')
drop table vipType
go
/*==============================================================*/
/* Table: SysManageUser */
/*==============================================================*/
create table SysManageUser (
SMUId char(20) not null,
SMUName char(20) null,
SMUPassword char(20) null,
SMUType char(20) null,
constraint PK_SYSMANAGEUSER primary key nonclustered (SMUId)
)
go
/*==============================================================*/
/* Table: book */
/*==============================================================*/
create table book (
bookIsbn char(20) not null,
bookName char(20) null,
bookAuthor char(20) null,
bookType char(20) null,
bookPrice float null,
bookPublisher char(20) null,
bookCount int null,
constraint PK_BOOK primary key nonclustered (bookIsbn)
)
go
/*==============================================================*/
/* Table: sale */
/*==============================================================*/
create table sale (
saleId char(20) not null,
vipId char(20) null,
saleDate datetime null,
constraint PK_SALE primary key nonclustered (saleId)
)
go
/*==============================================================*/
/* Index: buy_FK */
/*==============================================================*/
create index buy_FK on sale (
vipId ASC
)
go
/*==============================================================*/
/* Table: saleDetail */
/*==============================================================*/
create table saleDetail (
saleDetailId char(20) not null,
saleId char(20) null,
bookIsbn char(20) null,
bookSaleCount int null,
constraint PK_SALEDETAIL primary key nonclustered (saleDetailId)
)
go
/*==============================================================*/
/* Index: Relationship_6_FK */
/*==============================================================*/
create index Relationship_6_FK on saleDetail (
bookIsbn ASC
)
go
/*==============================================================*/
/* Index: Relationship_4_FK */
/*==============================================================*/
create index Relationship_4_FK on saleDetail (
saleId ASC
)
go
/*==============================================================*/
/* Table: vip */
/*==============================================================*/
create table vip (
vipId char(20) not null,
vipLevel int null,
vipName char(20) null,
vipSex char(20) null,
vipAge char(20) null,
vipTel char(20) null,
constraint PK_VIP primary key nonclustered (vipId)
)
go
/*==============================================================*/
/* Index: 參照_FK */
/*==============================================================*/
create index 參照_FK on vip (
vipLevel ASC
)
go
/*==============================================================*/
/* Table: vipType */
/*==============================================================*/
create table vipType (
vipLevel int not null,
vipLevelName char(20) null,
vipLevelDisCount float null,
constraint PK_VIPTYPE primary key nonclustered (vipLevel)
)
go
alter table sale
add constraint FK_SALE_BUY_VIP foreign key (vipId)
references vip (vipId)
go
alter table saleDetail
add constraint FK_SALEDETA_RELATIONS_SALE foreign key (saleId)
references sale (saleId)
go
alter table saleDetail
add constraint FK_SALEDETA_RELATIONS_BOOK foreign key (bookIsbn)
references book (bookIsbn)
go
alter table vip
add constraint FK_VIP_參照_VIPTYPE foreign key (vipLevel)
references vipType (vipLevel)
go
向book表中插入數(shù)據(jù):
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103001 ', N'戀人拍賣行 ', N'Tom ', N'社會科學(xué) ', N'12', N'商務(wù)印書館 ', N'15')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103002 ', N'俄狄浦斯王 ', N'Kit ', N'工具書 ', N'3', N'人民出版社 ', N'11')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103003 ', N'至尊女王爺 ', N'xiaoming ', N'工具書 ', N'7', N'中華書局 ', N'16')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103004 ', N'天是紅塵岸 ', N'zhaoyun ', N'專業(yè)書 ', N'14', N'商務(wù)印書館 ', N'7')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103005 ', N'逐日追風(fēng)劍 ', N'huatuo ', N'小說 ', N'1', N'商務(wù)印書館 ', N'2')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103006 ', N'雪中悍刀行 ', N'machao ', N'兒童讀物 ', N'4', N'商務(wù)印書館 ', N'3')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103007 ', N'神級大魔頭 ', N'sunbin ', N'小說 ', N'6', N'商務(wù)印書館 ', N'14')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103008 ', N'宿主請留步 ', N'shangguan ', N'工具書 ', N'13', N'人民出版社 ', N'93')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103009 ', N'巴黎圣母院 ', N'zhouyu ', N'工具書 ', N'11', N'人民出版社 ', N'3')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103010 ', N'徐霞客游記 ', N'xiaoqiao ', N'社會科學(xué) ', N'19', N'人民出版社 ', N'12')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103011 ', N'喧嘩與騷動 ', N'baili ', N'社會科學(xué) ', N'10', N'人民出版社 ', N'18')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103012 ', N'蘇菲的世界 ', N'make ', N'社會科學(xué) ', N'8', N'人民出版社 ', N'5')
GO
向vipType表中插入數(shù)據(jù)
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'0', N'普通會員 ', N'0.95')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'1', N'一級會員 ', N'0.9')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'2', N'二級會員 ', N'0.85')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'3', N'三級會員 ', N'0.8')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'4', N'四級會員 ', N'0.75')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'5', N'五級會員 ', N'0.7')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'6', N'六級會員 ', N'0.65')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'7', N'七級會員 ', N'0.6')
GO
向vip表中插入數(shù)據(jù)
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v001 ', N'7', N'張三豐 ', N'男 ', N'21 ', N'19907078888 ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v002 ', N'6', N'楊暖昕 ', N'女 ', N'22 ', N'19803038888 ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v003 ', N'0', N'凌秋子 ', N'男 ', N'36 ', N'17806069999 ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v004 ', N'4', N'李楠 ', N'男 ', N'18 ', N'17806068888 ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v005 ', N'6', N'文春雪 ', N'男 ', N'36 ', N'18808089999 ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v006 ', N'3', N'陸亦思 ', N'男 ', N'46 ', N'17801010000 ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v007 ', N'1', N'代迎海 ', N'男 ', N'18 ', N'13109787777 ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v008 ', N'2', N'白紫玉 ', N'男 ', N'17 ', N'13120200897 ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v009 ', N'6', N'韓若初 ', N'女 ', N'26 ', N'17809271234 ')
GO
向sale表中插入數(shù)據(jù)
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid010 ', N'v001 ', N'2020-12-01 04:06:21.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid009 ', N'v002 ', N'2020-01-03 08:15:12.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid001 ', N'v001 ', N'2020-12-01 04:06:21.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid002 ', N'v002 ', N'2020-01-03 08:15:12.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid003 ', N'v005 ', N'2020-01-05 02:45:00.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid004 ', N'v009 ', N'2020-01-06 02:45:00.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid005 ', N'v007 ', N'2020-01-06 02:45:00.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid006 ', N'v003 ', N'2020-01-06 02:45:00.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid007 ', N'v004 ', N'2020-02-27 00:00:00.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid008 ', N'v001 ', N'2020-03-11 00:00:00.000')
GO
向saleDetail表中插入數(shù)據(jù)
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'HAWGPIXSQBPRW6IA1TD4', N'saleid001 ', N'isbn2103001 ', N'19')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'52SU70BURCAMS50F5QFD', N'saleid001 ', N'isbn2103004 ', N'9')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'7FVQ0GKT5G9QB0P6TUA4', N'saleid001 ', N'isbn2103003 ', N'2')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'C6VNTSXDUCOQKE37ER14', N'saleid001 ', N'isbn2103002 ', N'1')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'UKA4710SMLJKWSQO389H', N'saleid002 ', N'isbn2103009 ', N'1')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'970CM5NUN54WDHXNUYQ8', N'saleid002 ', N'isbn2103001 ', N'2')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'P6G5AHGVYCGJBHD8NU9L', N'saleid002 ', N'isbn2103006 ', N'2')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'WX1RIJJMQYACA4Y3FL69', N'saleid001 ', N'isbn2103004 ', N'15')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'YF9G7JP86C3OVSE1AQR4', N'saleid003 ', N'isbn2103007 ', N'3')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'UPH2K75GBCQI68W3NLXC', N'saleid006 ', N'isbn2103006 ', N'11')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'V7OLOUXQ5WM9AIF96NSS', N'saleid005 ', N'isbn2103003 ', N'17')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'5Q6MB5S4HA3Y0TNC HO ', N'saleid004 ', N'isbn2103002 ', N'8')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'VWLWUACJQ36G0N7SVSCN', N'saleid002 ', N'isbn2103005 ', N'8')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'8MFJ3SREX7OJ9D0GC69U', N'saleid006 ', N'isbn2103001 ', N'2')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'ELK8E2O5E0W4Q4YHA0QK', N'saleid004 ', N'isbn2103007 ', N'7')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'1 ', N'saleid001 ', N'isbn2103008 ', N'1')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'2 ', N'saleid001 ', N'isbn2103008 ', N'6')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'ELK8E2O5t68UQ4YHA0QK', N'saleid005 ', N'isbn2103007 ', N'2')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'PA31CORBOML5W9MPLP88', N'saleid007 ', N'isbn2103001 ', N'2')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'D16V7L1PD 19JI7GGDJN', N'saleid007 ', N'isbn2103002 ', N'1')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'CPQKT SXWO LEL10 KFW', N'saleid008 ', N'isbn2103011 ', N'1')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'28N9LUIDU37HAWMCFC3 ', N'saleid008 ', N'isbn2103012 ', N'1')
GO
SQL查詢
1.圖書查詢統(tǒng)計:按圖書分類,出版社、書名、作者等條件查詢圖書的詳細(xì)信息。支持模糊查詢。
select bookType '圖書分類' from book group by bookType;
select bookpublisher '出版社' from book group by bookpublisher;
select * from book where booktype like'%工具%';
select * from book where bookPublisher like '%商務(wù)印書館%'
select * from book where bookname like '%王%'
2.天銷售額(這里的銷售額我算的是銷售數(shù)量,也有人說是算銷售金額)
select
book.bookname,
sum(booksalecount) day_sale_count
from
(
select
bookisbn,
booksalecount
from
saledetail
where
saleid in(
select
saleid
from
sale
where
datepart(year, saledate) = 2020
and datepart(month, saledate) = 1
and datepart(day, saledate) = 6
)
) t1
left join book on book.bookIsbn = t1.bookisbn
group by
book.bookname;
3.天銷售榜前三
select
top 3 book.bookname,
sum(booksalecount) sale_count
from
(
select
bookisbn,
booksalecount
from
saledetail
where
saleid in(
select
saleid
from
sale
where
datepart(year, saledate) = 2020
and datepart(month, saledate) = 1
and datepart(day, saledate) = 6
)
) t1
left join book on book.bookIsbn = t1.bookisbn
group by
book.bookname
order by
sale_count desc;
4.月銷售額
select
book.bookname,
sum(booksalecount) book_count
from
(
select
bookisbn,
booksalecount
from
saledetail
where
saleid in (
select
saleid
from
sale
where
datepart(year, saledate) = 2020
and datepart(month, saledate) = 1
)
) t1
left join book on book.bookisbn = t1.bookisbn
group by
book.bookname;
5.月銷售榜前三
select
top 3 book.bookname,
sum(booksalecount) book_count
from
(
select
bookisbn,
booksalecount
from
saledetail
where
saleid in (
select
saleid
from
sale
where
datepart(year, saledate) = 2020
and datepart(month, saledate) = 1
)
) t1
left join book on book.bookisbn = t1.bookisbn
group by
book.bookname
order by
book_count desc;
6.自動計算庫存,支付金額(觸發(fā)器)
create trigger auto_update_bookcount_money on saleDetail
after insert
as
begin
declare @booksalecount int;
declare @bookisbn char(20);
declare @bookcount int;
select @bookisbn=bookisbn from inserted;
select @booksalecount=bookSaleCount from inserted;
select @bookcount=bookcount from book where bookisbn=@bookisbn;
if(@booksalecount>@bookcount)
begin
print('購買數(shù)量:'+convert(varchar,@booksalecount)+', 庫存量:'+convert(varchar,@bookcount)+'。 庫存不足,訂單支付失??!')
rollback transaction;
end
else
begin
declare @newCount int
update book set bookcount=(bookcount-@booksalecount) where bookisbn=@bookisbn;
select @newCount=bookcount from book where bookisbn=@bookisbn;
declare @saleId char(20);
select @saleId=saleId,@bookIsbn=bookIsbn,@bookSaleCount=bookSaleCount from inserted;
declare @bookPrice float;
declare @bookName char(20);
select @bookPrice=bookPrice,@bookName=bookName from book where bookIsbn=@bookIsbn;
declare @vipId char(20);
select @vipId=vipId from sale where saleId=@saleId;
declare @vipName char(20);
declare @vipLevel int;
select @vipName=vipName,@vipLevel=vipLevel from vip where vipId=@vipId
declare @vipLevelDiscount float;
select @vipLevelDiscount=vipLevelDisCount from vipType where vipLevel=@vipLevel
print(convert(varchar(6),@vipName)+'購買《'+convert(varchar(10),@bookName)+'》的消費金額為:'+convert(varchar,@bookSaleCount*@bookPrice*@vipLevelDiscount)+', 購買數(shù)量:'+convert(varchar,@bookSaleCount)+', 單價:'+convert(varchar,@bookPrice)+', 會員等級:'+convert(varchar,@vipLevel)+', 會員折扣:'+convert(varchar,@vipLevelDiscount)+', 更新后的庫存量為:'+convert(varchar,@newCount))
end
end
向銷售明細(xì)表中插入一條數(shù)據(jù)測試,庫存量和金額是否正確。
insert into saledetail values('3','saleid001','isbn2103002',1);
說明:銷售明細(xì)id為3,這條銷售明細(xì)屬于saleid001銷售id,售出的書id是isbn2103002,數(shù)量是1。文章來源:http://www.zghlxwxcb.cn/news/detail-457692.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-457692.html
到了這里,關(guān)于書店銷售管理系統(tǒng)----數(shù)據(jù)庫原理及應(yīng)用綜合實驗的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!