0


书店销售管理系统----数据库原理及应用综合实验

枯木逢春犹再发,人无两度再少年🍂

系统主要模块如下:
(1) 书店销售管理系统设计与实现—图书入库管理及查询统计
图书入库管理:维护入库图书信息(如图书编号、书名、作者、价格、图书分类、出版社等)。自动计算库存。
图书查询统计:按图书分类,出版社、书名、作者等条件查询图书的详细信息。支持模糊查询。
(2) 书店销售管理系统设计与实现—销售管理
销售管理:销售过的图书都记录在销售列表中,方便统计收入。图书销售后,实时记录图书库存,按每天统计销售额、按每个月或季度统计销售额并生成报表,并能根据销售数量统计生成畅销书名单。
(3) 书店销售管理系统设计与实现—书店会员管理
书店会员管理:提供会员信息的维护功能,可设置会员等级,不同级别的会员享受不同的折扣,可以变更折扣额度。

目录

一、数据字典

1. 图书实体表

字段名别名数据类型长度约束图书编号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.会员实体表

字段名别名数据类型长度约束会员idvipId字符型20位主码会员等级vipLevel整型\外键会员名字vipName字符型20位not null会员性别vipSex字符型20位not null会员年龄vipAge字符型20位not null会员电话vipTel字符型20位not null

3. 会员类型表

字段名别名数据类型长度约束会员等级vipId字符型20位主键会员等级名vipName字符型20位not null会员等级折扣vipLevelDisCountfloat\not null

4. 销售实体表

字段名别名数据类型长度约束销售单号saleId字符型20位主键会员IDvipId字符型20位外键销售日期saleDate日期型\not null

5. 销售明细实体表

字段名别名数据类型长度约束销售明细idsaleDetailId字符型20位主键销售单号saleId字符型20位外键图书编号bookIsbn字符型20位外键销售数量bookSaleCount整型\not null

二、概念模型设计

1. 图书基本信息E-R图

在这里插入图片描述

2. 会员实体E-R图

在这里插入图片描述

3.会员类型E-R图

在这里插入图片描述

4.销售实体E-R图

在这里插入图片描述

5.销售明细E-R图

在这里插入图片描述

6.总体E-R图

在这里插入图片描述

三、逻辑结构设计

E-R图向关系模型的转换(主键用下划线标出)

图书(图书编号,图书名称,作者,图书类别,价格,出版社,库存)

会员(会员id,会员等级,会员名字,会员性别,会员年龄,会员电话)

会员类型(会员等级,会员等级名,会员等级折扣)

销售(销售单号,会员ID,销售日期)

销售明细(销售明细id,销售单号,图书编号,销售数量)

逻辑模型图

在这里插入图片描述

四、物理结构设计

在这里插入图片描述

设计与实现

1. 创建book表
/*==============================================================*//* Table: book                                                  *//*==============================================================*/createtable book (
   bookIsbn             char(20)notnull,
   bookName             char(20)null,
   bookAuthor           char(20)null,
   bookType             char(20)null,
   bookPrice            floatnull,
   bookPublisher        char(20)null,
   bookCount            intnull,constraint PK_BOOK primarykeynonclustered(bookIsbn))

2.创建会员表

/*==============================================================*//* Table: vip                                                   *//*==============================================================*/createtable vip (
   vipId                char(20)notnull,
   vipLevel             intnull,
   vipName              char(20)null,
   vipSex               char(20)null,
   vipAge               char(20)null,
   vipTel               char(20)null,constraint PK_VIP primarykeynonclustered(vipId))

3.创建会员类型表

/*==============================================================*//* Table: vipType                                               *//*==============================================================*/createtable vipType (
   vipLevel             intnotnull,
   vipLevelName         char(20)null,
   vipLevelDisCount     floatnull,constraint PK_VIPTYPE primarykeynonclustered(vipLevel))

4.创建销售实体表

/*==============================================================*//* Table: sale                                                  *//*==============================================================*/createtable sale (
   saleId               char(20)notnull,
   vipId                char(20)null,
   saleDate             datetimenull,constraint PK_SALE primarykeynonclustered(saleId))

5.创建销售明细表

/*==============================================================*//* Table: saleDetail                                            *//*==============================================================*/createtable saleDetail (
   saleDetailId         char(20)notnull,
   saleId               char(20)null,
   bookIsbn             char(20)null,
   bookSaleCount        intnull,constraint PK_SALEDETAIL primarykeynonclustered(saleDetailId))

6.创建表整体脚本如下:

/*==============================================================*//* DBMS name:      Microsoft SQL Server 2012                    *//* Created on:     2022/11/18 8:12:35                           *//*==============================================================*/ifexists(select1from 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')altertable sale
   dropconstraint FK_SALE_BUY_VIP
go

ifexists(select1from 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')altertable saleDetail
   dropconstraint FK_SALEDETA_RELATIONS_SALE
go

ifexists(select1from 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')altertable saleDetail
   dropconstraint FK_SALEDETA_RELATIONS_BOOK
go

ifexists(select1from 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')altertable vip
   dropconstraint FK_VIP_参照_VIPTYPE
go

ifexists(select1from  sysobjects
           where  id = object_id('SysManageUser')andtype='U')droptable SysManageUser
go

ifexists(select1from  sysobjects
           where  id = object_id('book')andtype='U')droptable book
go

ifexists(select1from  sysindexes
           where  id    = object_id('sale')and   name  ='buy_FK'and   indid >0and   indid <255)dropindex sale.buy_FK
go

ifexists(select1from  sysobjects
           where  id = object_id('sale')andtype='U')droptable sale
go

ifexists(select1from  sysindexes
           where  id    = object_id('saleDetail')and   name  ='Relationship_4_FK'and   indid >0and   indid <255)dropindex saleDetail.Relationship_4_FK
go

ifexists(select1from  sysindexes
           where  id    = object_id('saleDetail')and   name  ='Relationship_6_FK'and   indid >0and   indid <255)dropindex saleDetail.Relationship_6_FK
go

ifexists(select1from  sysobjects
           where  id = object_id('saleDetail')andtype='U')droptable saleDetail
go

ifexists(select1from  sysindexes
           where  id    = object_id('vip')and   name  ='参照_FK'and   indid >0and   indid <255)dropindex vip.参照_FK
go

ifexists(select1from  sysobjects
           where  id = object_id('vip')andtype='U')droptable vip
go

ifexists(select1from  sysobjects
           where  id = object_id('vipType')andtype='U')droptable vipType
go

/*==============================================================*//* Table: SysManageUser                                         *//*==============================================================*/createtable SysManageUser (
   SMUId                char(20)notnull,
   SMUName              char(20)null,
   SMUPassword          char(20)null,
   SMUType              char(20)null,constraint PK_SYSMANAGEUSER primarykeynonclustered(SMUId))
go

/*==============================================================*//* Table: book                                                  *//*==============================================================*/createtable book (
   bookIsbn             char(20)notnull,
   bookName             char(20)null,
   bookAuthor           char(20)null,
   bookType             char(20)null,
   bookPrice            floatnull,
   bookPublisher        char(20)null,
   bookCount            intnull,constraint PK_BOOK primarykeynonclustered(bookIsbn))
go

/*==============================================================*//* Table: sale                                                  *//*==============================================================*/createtable sale (
   saleId               char(20)notnull,
   vipId                char(20)null,
   saleDate             datetimenull,constraint PK_SALE primarykeynonclustered(saleId))
go

/*==============================================================*//* Index: buy_FK                                                *//*==============================================================*/createindex buy_FK on sale (
vipId ASC)
go

/*==============================================================*//* Table: saleDetail                                            *//*==============================================================*/createtable saleDetail (
   saleDetailId         char(20)notnull,
   saleId               char(20)null,
   bookIsbn             char(20)null,
   bookSaleCount        intnull,constraint PK_SALEDETAIL primarykeynonclustered(saleDetailId))
go

/*==============================================================*//* Index: Relationship_6_FK                                     *//*==============================================================*/createindex Relationship_6_FK on saleDetail (
bookIsbn ASC)
go

/*==============================================================*//* Index: Relationship_4_FK                                     *//*==============================================================*/createindex Relationship_4_FK on saleDetail (
saleId ASC)
go

/*==============================================================*//* Table: vip                                                   *//*==============================================================*/createtable vip (
   vipId                char(20)notnull,
   vipLevel             intnull,
   vipName              char(20)null,
   vipSex               char(20)null,
   vipAge               char(20)null,
   vipTel               char(20)null,constraint PK_VIP primarykeynonclustered(vipId))
go

/*==============================================================*//* Index: 参照_FK                                                 *//*==============================================================*/createindex 参照_FK on vip (
vipLevel ASC)
go

/*==============================================================*//* Table: vipType                                               *//*==============================================================*/createtable vipType (
   vipLevel             intnotnull,
   vipLevelName         char(20)null,
   vipLevelDisCount     floatnull,constraint PK_VIPTYPE primarykeynonclustered(vipLevel))
go

altertable sale
   addconstraint FK_SALE_BUY_VIP foreignkey(vipId)references vip (vipId)
go

altertable saleDetail
   addconstraint FK_SALEDETA_RELATIONS_SALE foreignkey(saleId)references sale (saleId)
go

altertable saleDetail
   addconstraint FK_SALEDETA_RELATIONS_BOOK foreignkey(bookIsbn)references book (bookIsbn)
go

altertable vip
   addconstraint FK_VIP_参照_VIPTYPE foreignkey(vipLevel)references vipType (vipLevel)
go
向book表中插入数据:
INSERTINTO[dbo].[book]([bookIsbn],[bookName],[bookAuthor],[bookType],[bookPrice],[bookPublisher],[bookCount])VALUES(N'isbn2103001         ', N'恋人拍卖行          ', N'Tom                 ', N'社会科学            ', N'12', N'商务印书馆          ', N'15')
GO
INSERTINTO[dbo].[book]([bookIsbn],[bookName],[bookAuthor],[bookType],[bookPrice],[bookPublisher],[bookCount])VALUES(N'isbn2103002         ', N'俄狄浦斯王          ', N'Kit                 ', N'工具书              ', N'3', N'人民出版社          ', N'11')
GO
INSERTINTO[dbo].[book]([bookIsbn],[bookName],[bookAuthor],[bookType],[bookPrice],[bookPublisher],[bookCount])VALUES(N'isbn2103003         ', N'至尊女王爷          ', N'xiaoming            ', N'工具书              ', N'7', N'中华书局            ', N'16')
GO
INSERTINTO[dbo].[book]([bookIsbn],[bookName],[bookAuthor],[bookType],[bookPrice],[bookPublisher],[bookCount])VALUES(N'isbn2103004         ', N'天是红尘岸          ', N'zhaoyun             ', N'专业书              ', N'14', N'商务印书馆          ', N'7')
GO
INSERTINTO[dbo].[book]([bookIsbn],[bookName],[bookAuthor],[bookType],[bookPrice],[bookPublisher],[bookCount])VALUES(N'isbn2103005         ', N'逐日追风剑          ', N'huatuo              ', N'小说                ', N'1', N'商务印书馆          ', N'2')
GO
INSERTINTO[dbo].[book]([bookIsbn],[bookName],[bookAuthor],[bookType],[bookPrice],[bookPublisher],[bookCount])VALUES(N'isbn2103006         ', N'雪中悍刀行          ', N'machao              ', N'儿童读物            ', N'4', N'商务印书馆          ', N'3')
GO
INSERTINTO[dbo].[book]([bookIsbn],[bookName],[bookAuthor],[bookType],[bookPrice],[bookPublisher],[bookCount])VALUES(N'isbn2103007         ', N'神级大魔头          ', N'sunbin              ', N'小说                ', N'6', N'商务印书馆          ', N'14')
GO
INSERTINTO[dbo].[book]([bookIsbn],[bookName],[bookAuthor],[bookType],[bookPrice],[bookPublisher],[bookCount])VALUES(N'isbn2103008         ', N'宿主请留步          ', N'shangguan           ', N'工具书              ', N'13', N'人民出版社          ', N'93')
GO
INSERTINTO[dbo].[book]([bookIsbn],[bookName],[bookAuthor],[bookType],[bookPrice],[bookPublisher],[bookCount])VALUES(N'isbn2103009         ', N'巴黎圣母院          ', N'zhouyu              ', N'工具书              ', N'11', N'人民出版社          ', N'3')
GO
INSERTINTO[dbo].[book]([bookIsbn],[bookName],[bookAuthor],[bookType],[bookPrice],[bookPublisher],[bookCount])VALUES(N'isbn2103010         ', N'徐霞客游记          ', N'xiaoqiao            ', N'社会科学            ', N'19', N'人民出版社          ', N'12')
GO
INSERTINTO[dbo].[book]([bookIsbn],[bookName],[bookAuthor],[bookType],[bookPrice],[bookPublisher],[bookCount])VALUES(N'isbn2103011         ', N'喧哗与骚动          ', N'baili               ', N'社会科学            ', N'10', N'人民出版社          ', N'18')
GO
INSERTINTO[dbo].[book]([bookIsbn],[bookName],[bookAuthor],[bookType],[bookPrice],[bookPublisher],[bookCount])VALUES(N'isbn2103012         ', N'苏菲的世界          ', N'make                ', N'社会科学            ', N'8', N'人民出版社          ', N'5')
GO

向vipType表中插入数据

INSERTINTO[dbo].[vipType]([vipLevel],[vipLevelName],[vipLevelDisCount])VALUES(N'0', N'普通会员            ', N'0.95')
GO
INSERTINTO[dbo].[vipType]([vipLevel],[vipLevelName],[vipLevelDisCount])VALUES(N'1', N'一级会员            ', N'0.9')
GO
INSERTINTO[dbo].[vipType]([vipLevel],[vipLevelName],[vipLevelDisCount])VALUES(N'2', N'二级会员            ', N'0.85')
GO
INSERTINTO[dbo].[vipType]([vipLevel],[vipLevelName],[vipLevelDisCount])VALUES(N'3', N'三级会员            ', N'0.8')
GO
INSERTINTO[dbo].[vipType]([vipLevel],[vipLevelName],[vipLevelDisCount])VALUES(N'4', N'四级会员            ', N'0.75')
GO
INSERTINTO[dbo].[vipType]([vipLevel],[vipLevelName],[vipLevelDisCount])VALUES(N'5', N'五级会员            ', N'0.7')
GO
INSERTINTO[dbo].[vipType]([vipLevel],[vipLevelName],[vipLevelDisCount])VALUES(N'6', N'六级会员            ', N'0.65')
GO
INSERTINTO[dbo].[vipType]([vipLevel],[vipLevelName],[vipLevelDisCount])VALUES(N'7', N'七级会员            ', N'0.6')
GO

向vip表中插入数据

INSERTINTO[dbo].[vip]([vipId],[vipLevel],[vipName],[vipSex],[vipAge],[vipTel])VALUES(N'v001                ', N'7', N'张三丰              ', N'男                  ', N'21                  ', N'19907078888         ')
GO
INSERTINTO[dbo].[vip]([vipId],[vipLevel],[vipName],[vipSex],[vipAge],[vipTel])VALUES(N'v002                ', N'6', N'杨暖昕              ', N'女                  ', N'22                  ', N'19803038888         ')
GO
INSERTINTO[dbo].[vip]([vipId],[vipLevel],[vipName],[vipSex],[vipAge],[vipTel])VALUES(N'v003                ', N'0', N'凌秋子              ', N'男                  ', N'36                  ', N'17806069999         ')
GO
INSERTINTO[dbo].[vip]([vipId],[vipLevel],[vipName],[vipSex],[vipAge],[vipTel])VALUES(N'v004                ', N'4', N'李楠                ', N'男                  ', N'18                  ', N'17806068888         ')
GO
INSERTINTO[dbo].[vip]([vipId],[vipLevel],[vipName],[vipSex],[vipAge],[vipTel])VALUES(N'v005                ', N'6', N'文春雪              ', N'男                  ', N'36                  ', N'18808089999         ')
GO
INSERTINTO[dbo].[vip]([vipId],[vipLevel],[vipName],[vipSex],[vipAge],[vipTel])VALUES(N'v006                ', N'3', N'陆亦思              ', N'男                  ', N'46                  ', N'17801010000         ')
GO
INSERTINTO[dbo].[vip]([vipId],[vipLevel],[vipName],[vipSex],[vipAge],[vipTel])VALUES(N'v007                ', N'1', N'代迎海              ', N'男                  ', N'18                  ', N'13109787777         ')
GO
INSERTINTO[dbo].[vip]([vipId],[vipLevel],[vipName],[vipSex],[vipAge],[vipTel])VALUES(N'v008                ', N'2', N'白紫玉              ', N'男                  ', N'17                  ', N'13120200897         ')
GO
INSERTINTO[dbo].[vip]([vipId],[vipLevel],[vipName],[vipSex],[vipAge],[vipTel])VALUES(N'v009                ', N'6', N'韩若初              ', N'女                  ', N'26                  ', N'17809271234         ')
GO

向sale表中插入数据

INSERTINTO[dbo].[sale]([saleId],[vipId],[saleDate])VALUES(N'saleid010           ', N'v001                ', N'2020-12-01 04:06:21.000')
GO
INSERTINTO[dbo].[sale]([saleId],[vipId],[saleDate])VALUES(N'saleid009           ', N'v002                ', N'2020-01-03 08:15:12.000')
GO
INSERTINTO[dbo].[sale]([saleId],[vipId],[saleDate])VALUES(N'saleid001           ', N'v001                ', N'2020-12-01 04:06:21.000')
GO
INSERTINTO[dbo].[sale]([saleId],[vipId],[saleDate])VALUES(N'saleid002           ', N'v002                ', N'2020-01-03 08:15:12.000')
GO
INSERTINTO[dbo].[sale]([saleId],[vipId],[saleDate])VALUES(N'saleid003           ', N'v005                ', N'2020-01-05 02:45:00.000')
GO
INSERTINTO[dbo].[sale]([saleId],[vipId],[saleDate])VALUES(N'saleid004           ', N'v009                ', N'2020-01-06 02:45:00.000')
GO
INSERTINTO[dbo].[sale]([saleId],[vipId],[saleDate])VALUES(N'saleid005           ', N'v007                ', N'2020-01-06 02:45:00.000')
GO
INSERTINTO[dbo].[sale]([saleId],[vipId],[saleDate])VALUES(N'saleid006           ', N'v003                ', N'2020-01-06 02:45:00.000')
GO
INSERTINTO[dbo].[sale]([saleId],[vipId],[saleDate])VALUES(N'saleid007           ', N'v004                ', N'2020-02-27 00:00:00.000')
GO
INSERTINTO[dbo].[sale]([saleId],[vipId],[saleDate])VALUES(N'saleid008           ', N'v001                ', N'2020-03-11 00:00:00.000')
GO

向saleDetail表中插入数据

INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'HAWGPIXSQBPRW6IA1TD4', N'saleid001           ', N'isbn2103001         ', N'19')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'52SU70BURCAMS50F5QFD', N'saleid001           ', N'isbn2103004         ', N'9')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'7FVQ0GKT5G9QB0P6TUA4', N'saleid001           ', N'isbn2103003         ', N'2')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'C6VNTSXDUCOQKE37ER14', N'saleid001           ', N'isbn2103002         ', N'1')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'UKA4710SMLJKWSQO389H', N'saleid002           ', N'isbn2103009         ', N'1')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'970CM5NUN54WDHXNUYQ8', N'saleid002           ', N'isbn2103001         ', N'2')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'P6G5AHGVYCGJBHD8NU9L', N'saleid002           ', N'isbn2103006         ', N'2')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'WX1RIJJMQYACA4Y3FL69', N'saleid001           ', N'isbn2103004         ', N'15')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'YF9G7JP86C3OVSE1AQR4', N'saleid003           ', N'isbn2103007         ', N'3')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'UPH2K75GBCQI68W3NLXC', N'saleid006           ', N'isbn2103006         ', N'11')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'V7OLOUXQ5WM9AIF96NSS', N'saleid005           ', N'isbn2103003         ', N'17')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'5Q6MB5S4HA3Y0TNC HO ', N'saleid004           ', N'isbn2103002         ', N'8')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'VWLWUACJQ36G0N7SVSCN', N'saleid002           ', N'isbn2103005         ', N'8')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'8MFJ3SREX7OJ9D0GC69U', N'saleid006           ', N'isbn2103001         ', N'2')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'ELK8E2O5E0W4Q4YHA0QK', N'saleid004           ', N'isbn2103007         ', N'7')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'1                   ', N'saleid001           ', N'isbn2103008         ', N'1')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'2                   ', N'saleid001           ', N'isbn2103008         ', N'6')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'ELK8E2O5t68UQ4YHA0QK', N'saleid005           ', N'isbn2103007         ', N'2')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'PA31CORBOML5W9MPLP88', N'saleid007           ', N'isbn2103001         ', N'2')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'D16V7L1PD 19JI7GGDJN', N'saleid007           ', N'isbn2103002         ', N'1')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'CPQKT SXWO LEL10 KFW', N'saleid008           ', N'isbn2103011         ', N'1')
GO
INSERTINTO[dbo].[saleDetail]([saleDetailId],[saleId],[bookIsbn],[bookSaleCount])VALUES(N'28N9LUIDU37HAWMCFC3 ', N'saleid008           ', N'isbn2103012         ', N'1')
GO

SQL查询

1.图书查询统计:按图书分类,出版社、书名、作者等条件查询图书的详细信息。支持模糊查询。
select bookType '图书分类'from book groupby bookType;select bookpublisher '出版社'from book groupby bookpublisher;select*from book where booktype like'%工具%';select*from book where bookPublisher like'%商务印书馆%'select*from book where bookname like'%王%'
2.天销售额(这里的销售额我算的是销售数量,也有人说是算销售金额)
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)=2020and datepart(month, saledate)=1and datepart(day, saledate)=6)) t1
  leftjoin book on book.bookIsbn = t1.bookisbn
groupby
  book.bookname;

在这里插入图片描述

3.天销售榜前三
selecttop3 book.bookname,sum(booksalecount) sale_count
from(select
      bookisbn,
      booksalecount
    from
      saledetail
    where
      saleid in(select
          saleid
        from
          sale
        where
          datepart(year, saledate)=2020and datepart(month, saledate)=1and datepart(day, saledate)=6)) t1
  leftjoin book on book.bookIsbn = t1.bookisbn
groupby
  book.bookname
orderby
  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)=2020and datepart(month, saledate)=1)) t1
  leftjoin book on book.bookisbn = t1.bookisbn
groupby
  book.bookname;

在这里插入图片描述

5.月销售榜前三
selecttop3 book.bookname,sum(booksalecount) book_count
from(select
      bookisbn,
      booksalecount
    from
      saledetail
    where
      saleid in(select
          saleid
        from
          sale
        where
          datepart(year, saledate)=2020and datepart(month, saledate)=1)) t1
  leftjoin book on book.bookisbn = t1.bookisbn
groupby
  book.bookname
orderby
  book_count desc;

在这里插入图片描述

6.自动计算库存,支付金额(触发器)
createtrigger auto_update_bookcount_money on saleDetail
afterinsertasbegindeclare@booksalecountint;declare@bookisbnchar(20);declare@bookcountint;select@bookisbn=bookisbn from inserted;select@booksalecount=bookSaleCount from inserted;select@bookcount=bookcount from book where bookisbn=@bookisbn;if(@booksalecount>@bookcount)beginprint('购买数量:'+convert(varchar,@booksalecount)+', 库存量:'+convert(varchar,@bookcount)+'。 库存不足,订单支付失败!')rollbacktransaction;endelsebegindeclare@newCountintupdate book set bookcount=(bookcount-@booksalecount)where bookisbn=@bookisbn;select@newCount=bookcount from book where bookisbn=@bookisbn;declare@saleIdchar(20);select@saleId=saleId,@bookIsbn=bookIsbn,@bookSaleCount=bookSaleCount from inserted;declare@bookPricefloat;declare@bookNamechar(20);select@bookPrice=bookPrice,@bookName=bookName from book where bookIsbn=@bookIsbn;declare@vipIdchar(20);select@vipId=vipId from sale where saleId=@saleId;declare@vipNamechar(20);declare@vipLevelint;select@vipName=vipName,@vipLevel=vipLevel from vip where vipId=@vipIddeclare@vipLevelDiscountfloat;select@vipLevelDiscount=vipLevelDisCount from vipType where vipLevel=@vipLevelprint(convert(varchar(6),@vipName)+'购买《'+convert(varchar(10),@bookName)+'》的消费金额为:'+convert(varchar,@bookSaleCount*@bookPrice*@vipLevelDiscount)+',  购买数量:'+convert(varchar,@bookSaleCount)+',  单价:'+convert(varchar,@bookPrice)+', 会员等级:'+convert(varchar,@vipLevel)+',  会员折扣:'+convert(varchar,@vipLevelDiscount)+', 更新后的库存量为:'+convert(varchar,@newCount))endend

向销售明细表中插入一条数据测试,库存量和金额是否正确。

insertinto saledetail values('3','saleid001','isbn2103002',1);

说明:销售明细id为3,这条销售明细属于saleid001销售id,售出的书id是isbn2103002,数量是1。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


本文转载自: https://blog.csdn.net/qq_45796486/article/details/127942579
版权归原作者 阿年、嗯啊 所有, 如有侵权,请联系我们删除。

“书店销售管理系统----数据库原理及应用综合实验”的评论:

还没有评论