数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码)

news2024/11/26 0:40:19

一、前言

        该项目非常适合MySQL入门学习的小伙伴,博主提供了源码、数据和一些查询语句,供大家学习和参考,代码和表设计有什么不恰当还请各位大佬多多指点。

所需环境

  1.  MySQL可视化工具:navicat;
  2.  数据库:MySql 5.7/8.0等版本均可;

需求: 

        1:每个书店有多家供应商,每家供应商给多个书店供货。

        2:每个书店聘用多名员工,每个员工只属于一个书店每个书店存放多本图书,多本图书存放在一家书店。

        4: 每本图书可以被任何会员购买,一名会员可以购买任意一本图书。

 备注:

        书店包含下列属性: 编号,地址,书店名字,老板电话;

        员工包含下列属性: 身份证,名字,性别,年龄;

        图书包含下列属性: 编号,书名,价格,库存量;

        会员包含下列属性: 编号,姓名,电话,积分;

        关于某供应商给书店供货要描述供货日期;

        关于书店聘用员工要描述聘用日期:

        关于会员购买图书需要描述购买数量;

        关于书店存放图书需要描述存放位置。

二、E-R图

1248276d26ad43a4838669cdeb169f48.png

三、关系模式

        供应商:(供应商编号,供应商地址,供应商联系人,供应商联系电话,供应商名字,供应商备注)。

        书店:(书店编号,书店地址,书店名字,书店老板电话)

        员工:(身份证,员工名字,员工性别,员工年龄,书店编号,聘用时期)

        图书:(图书编号,书名,价格,库存量,书店编号,存放位置)

        会员:(会员编号,会员姓名,会员电话,积分)。

        供应信息:(供应商编号,书店编号,供应时间)

        购买信息:(会员编号,图书编号,购买数量)

 备注:

        下划线为主键,红色字为外键;

四、数据表的设计

表1 供应商

字段

数据类型

长度

备注

 

供应商编号

varchar

50

主键

 

供应商地址

varchar

50

 

 

供应商联系人

varchar

50

 

 

供应商联系电话

varchar

50

 

 

供应商名字

varchar

50

Not null

 

供应商备注

varchar

50

 

 

 表2 书店

字段

数据类型

长度

备注

 

书店编号

varchar

50

主键

 

书店地址

varchar

50

 

 

书店名字

varchar

50

Not null

 

书店老板电话

Varchar

50

 

 

表3 员工

字段

数据类型

长度

备注

 

身份证

varchar

20

主键

 

员工性别

varchar

50

 

 

员工年龄

Int

3

 

 

员工名字

varchar

50

Not null

 

书店编号

varchar

50

外键

 

聘用时间

date

 

Not null

 

表4 图书

字段

数据类型

长度

备注

 

图书编号

varchar

50

主键

 

书名

varchar

50

Not null

 

价格

float

8

 

 

库存量

int

8

 

 

书店编号

varchar

50

外键

 

存放位置

varchar

50

Not null

 

表5 会员

字段

数据类型

长度

备注

 

会员编号

varchar

50

主键

 

会员姓名

varchar

50

Not null

 

会员电话

varchar

50

 

 

积分

int

50

 

 

表6 供应信息

字段

数据类型

长度

备注

 

供应商编号

varchar

50

主键

 

书店编号

varchar

50

主键

 

供货时间

date

 

Not null

 

表7 购买信息

字段

数据类型

长度

备注

 

图书编号

varchar

50

主键

 

会员编号

varchar

50

主键

 

购买数量

int

8

Not null

 

五、创建数据库

Create database 书店图书进销存管理系统 character set utf8 collate utf8_general_ci
-- 在新建表前选择数据库
Use 书店图书进销存管理系统

创建各实体表:

1. 供应商

create table 供应商
(
 供应商编号 VARCHAR(50) PRIMARY KEY,
 供应商地址 VARCHAR(50),
 供应商联系人 VARCHAR(50),
 供应商联系电话 VARCHAR(50),
 供应商名字 VARCHAR(50) NOT NULL,
 供应商备注 VARCHAR(50)
)

2.书店

CREATE TABLE 书店
(
 书店编号 varchar(50) PRIMARY KEY,
 书店地址 VARCHAR(50),
 书店名字 VARCHAR(50) NOT NULL,
 书店老板电话 VARCHAR(50)
)

3.员工

CREATE TABLE 员工
(
 身份证 VARCHAR(50) PRIMARY KEY,
 员工姓名 VARCHAR(50) NOT NULL,
 员工性别 VARCHAR(50),
 员工年龄 int(3),
 书店编号 VARCHAR(50),
 聘用时间 DATE NOT NULL,
 CONSTRAINT FK书店编号 FOREIGN KEY(书店编号) REFERENCES 书店(书店编号)
)

4.图书

CREATE TABLE 图书
(
 图书编号 VARCHAR(50) PRIMARY KEY,
 书名 VARCHAR(50) NOT NULL,
 价格 FLOAT(8),
 库存量 INT(8),
 书店编号 VARCHAR(50),
 存放位置 VARCHAR(50) NOT NULL,
 CONSTRAINT FK_书店编号 FOREIGN KEY (书店编号) REFERENCES 书店(书店编号)
)

5.会员

CREATE TABLE 会员
(
 会员编号 VARCHAR(50) PRIMARY KEY,
 会员姓名 VARCHAR(50) NOT NULL,
 会员电话 VARCHAR(50),
 积分 INT(5)
)

6. 供应信息

CREATE TABLE 供应信息
(
 供应商编号 VARCHAR(50),
 书店编号 VARCHAR(50),
 供应时间 DATE NOT NULL,
 PRIMARY KEY(供应商编号,书店编号)
)

7. 购买信息

CREATE TABLE 购买信息
(
 图书编号 VARCHAR(50),
 会员编号 VARCHAR(50),
 购买数量 INT(8) NOT NULL,
 PRIMARY KEY(图书编号,会员编号)
)

插入数据:

1. 供应商

INSERT INTO 供应商 VALUES ('G001','春熙路12号','李明','13123451234','邮电出版社','优等')
INSERT INTO 供应商 VALUES ('G002','天府路85号','薛鹏','15198762347','工业出版社','良好')
INSERT INTO 供应商 VALUES ('G003','太升路35号','林波','15823140987','机械出版社','良好')
INSERT INTO 供应商 VALUES ('G004','民航路94号','苏珊','18078651234','民航出版社','优等')
INSERT INTO 供应商 VALUES ('G005','芙蓉路53号','林达','18698704563','商务出版社','良好')
INSERT INTO 供应商 VALUES ('G006','天府三街6号','小野','19382069330','三街出版社','优等')
INSERT INTO 供应商 VALUES ('G007','十三区43号','成龙','17865989988','符咒出版社','优等')
INSERT INTO 供应商 VALUES ('G008','成华大道66号','谭警官','16666666666','成华出版社','良好')
INSERT INTO 供应商 VALUES ('G009','天益街83号','橙汁','18765498596','橙汁出版社','优等')
INSERT INTO 供应商 VALUES ('G0010','二仙桥23号','二大爷','15465989586','大爷版社','优等')

2.书店

INSERT INTO 书店 VALUES ('S001', '长城路5号', '求实书店', '13612345678')
INSERT INTO 书店 VALUES ('S002', '长江路64号', '上进书店', '13703456784')
INSERT INTO 书店 VALUES ('S003', '黄河路93号', '梦想书店', '13882346743')
INSERT INTO 书店 VALUES ('S004', '泰山路59路', '书虫书店', '13998762345')
INSERT INTO 书店 VALUES ('S005', '青城山路23号', '创业书店', '13976543214')
INSERT INTO 书店 VALUES ('S006', '春熙路13号', '邮电书店', '13598657412')
INSERT INTO 书店 VALUES ('S007', '天府路86号', '工业书店', '15146523698')
INSERT INTO 书店 VALUES ('S008', '太升路36号', '机械书店', '14756329833')
INSERT INTO 书店 VALUES ('S009', '民航路95号', '民航书店', '16654233322')
INSERT INTO 书店 VALUES ('S010', '芙蓉路54号', '商务书店', '13322336655')

3.员工

INSERT INTO 员工 VALUES ('511001199001011234', '张三', '男', 33, 'S001', '2009-07-01')
INSERT INTO 员工 VALUES ('510102199102032345', '李四', '男', 32, 'S002', '2008-03-01')
INSERT INTO 员工 VALUES ('510101199203033456', '王丽', '女', 31, 'S003', '2007-04-01')
INSERT INTO 员工 VALUES ('510101199303033456', '王宝玉', '男', 30, 'S004', '2007-04-01')
INSERT INTO 员工 VALUES ('510104199408095678', '秦松', '男', 29, 'S005', '2006-08-01')
INSERT INTO 员工 VALUES ('510001199105079965', '丁真', '男', 32, 'S006', '2010-06-28')
INSERT INTO 员工 VALUES ('510011199304261355', '李明', '男', 30, 'S007', '2009-01-15')
INSERT INTO 员工 VALUES ('510010199512140932', '李华', '女', 28, 'S008', '2012-05-29')
INSERT INTO 员工 VALUES ('510110199811230623', '王明', '男', 25, 'S009', '2013-04-30')
INSERT INTO 员工 VALUES ('510023199407112556', '林琬茹', '女', 29, 'S010', '2009-09-01')

4.图书

INSERT INTO 图书 VALUES ('T001', '围城', 58, 31, 'S001', '一楼')
INSERT INTO 图书 VALUES ('T002', '边城', 46, 12, 'S002', '二楼')
INSERT INTO 图书 VALUES ('T003', '平凡的世界', 32, 87, 'S003', '三楼')
INSERT INTO 图书 VALUES ('T004', '撒野', 36, 67, 'S004', '二楼')
INSERT INTO 图书 VALUES ('T005', '人间失格', 28, 28, 'S005', '二楼')
INSERT INTO 图书 VALUES ('T006', '狂人日记', 99, 16, 'S006', '三楼')
INSERT INTO 图书 VALUES ('T007', '乌合之众', 32, 86, 'S007', '一楼')
INSERT INTO 图书 VALUES ('T008', '自卑与超越', 42, 66, 'S008', '二楼')
INSERT INTO 图书 VALUES ('T009', '人生', 66, 74, 'S009', '三楼')
INSERT INTO 图书 VALUES ('T010', '活着', 78, 33, 'S010', '一楼')

5.会员

INSERT INTO 会员 VALUES ('V001', '林丹', '17109872345', 654)
INSERT INTO 会员 VALUES ('V002', '十三', '17209874321', 1368)
INSERT INTO 会员 VALUES ('V003', '陈羽', '17308763456', 69)
INSERT INTO 会员 VALUES ('V004', '杨帆', '17408765467', 743)
INSERT INTO 会员 VALUES ('V005', '小白', '17567431298', 475)
INSERT INTO 会员 VALUES ('V006', '小黑', '17632684456', 216)
INSERT INTO 会员 VALUES ('V007', '黑大帅', '17698978445', 448)
INSERT INTO 会员 VALUES ('V008', '潇洒哥', '17544748596', 666)
INSERT INTO 会员 VALUES ('V009', '格林', '17488932254', 1473)
INSERT INTO 会员 VALUES ('V010', '路遥', '17588141121', 187)

6. 供应信息

INSERT INTO 供应信息 VALUES ('G001', 'S001', '2020-04-21')
INSERT INTO 供应信息 VALUES ('G002', 'S002', '2020-04-22')
INSERT INTO 供应信息 VALUES ('G003', 'S003', '2020-04-23')
INSERT INTO 供应信息 VALUES ('G004', 'S004', '2020-04-20')
INSERT INTO 供应信息 VALUES ('G005', 'S005', '2020-04-21')
INSERT INTO 供应信息 VALUES ('G006', 'S006', '2020-04-22')
INSERT INTO 供应信息 VALUES ('G007', 'S007', '2020-04-22')
INSERT INTO 供应信息 VALUES ('G008', 'S008', '2020-04-21')
INSERT INTO 供应信息 VALUES ('G009', 'S009', '2020-04-24')
INSERT INTO 供应信息 VALUES ('G010', 'S010', '2020-04-23')

7. 购买信息

INSERT INTO 购买信息 VALUES ('T001', 'V010', 2)
INSERT INTO 购买信息 VALUES ('T002', 'V009', 4)
INSERT INTO 购买信息 VALUES ('T003', 'V008', 5)
INSERT INTO 购买信息 VALUES ('T004', 'V007', 2)
INSERT INTO 购买信息 VALUES ('T005', 'V006', 1)
INSERT INTO 购买信息 VALUES ('T006', 'V005', 6)
INSERT INTO 购买信息 VALUES ('T007', 'V004', 7)
INSERT INTO 购买信息 VALUES ('T008', 'V003', 3)
INSERT INTO 购买信息 VALUES ('T009', 'V002', 2)
INSERT INTO 购买信息 VALUES ('T010', 'V001', 1)

 六、主要查询命令

 

  1. 查询所有书店地址信息结果

    select 书店地址 from 书店

    0a678663b52c4fcea76fd4a777683539.png

  2. 查询四月所有供应商中哪些供应过书籍。(查看供应商编号)

    select DISTINCT 供应商编号 from 供应信息 where 供应时间 like '2020-04%'

    8182ef8443e14eee82ab6898ddc0d34c.png

  3. 查询所有书店中年龄最大的男员工姓名。

    select 员工姓名 from 员工 where 员工性别 = '男' ORDER BY 员工年龄 desc limit 1

    a4bcc3d454854665b6b08e2a893d09db.png

  4. 查询书店老板电话为139开头的书店名字。

    select 书店名字 from 书店 where 书店老板电话 like '139%'

    f8cd4e04dedc4045aea3ddc68ae6712d.png

  5. 查询价格低于平均价格的书籍名字。

    SELECT 书名 FROM 图书 WHERE 价格 < (SELECT AVG(价格) FROM 图书)

    54fedc47488245259a24c2df095e5c2f.png

  6. 查询购买书籍数量最多的会员名字。

    SELECT 会员姓名 FROM 会员 WHERE 会员编号 = (select 会员编号 from 购买信息 GROUP BY 会员编号 ORDER BY(购买数量) desc limit 1)

    d26fb54425db4e77a7248f06b6b1a3b6.png

  7. 查询员工人数最少的书店所在地址。

    select 书店地址 from 书店 where 书店编号 = (select 书店编号 from 员工 GROUP BY 书店编号 ORDER BY count(*) asc limit 1)

    a105774eb6b04938ac475d865a05069c.png

  8. 查询优等供应商给哪些书店供货过,并按照供货时间从早到晚排序。

    select * from 供应信息 where 供应商编号 in (select 供应商编号 from 供应商 where 供应商备注 = '优等') ORDER BY 供应时间

    aa6b908bcaa5496f9be501385cbf3d33.png

  9. 查询价格最贵的三种图书,存放在哪些书店里。(查看书店名字)。

    select 书店名字 from 书店 where 书店编号 = (select 书店编号 from 图书 ORDER BY 价格 desc limit 1) or 书店编号 = (select 书店编号 from 图书 ORDER BY 价格 desc limit 1,1)or 书店编号 = (select 书店编号 from 图书 ORDER BY 价格 desc limit 2,1)

    9fc657a877ce47fc930218bd5665fad0.png

  10. 查询人生这本书,被哪些会员购买过。

    select 会员姓名 from 会员 where 会员编号 in (select 会员编号 from 购买信息 where 图书编号 in (select 图书编号 from 图书 where 书名 = '人生'))

    f5f4ad3756e249e4843b2f5fb9349980.png

七、答疑解惑 

        代码有问题或需要其他的查询语句,都可以随时评论留言或联系博主。

        还多请各位小伙伴多多点赞支持,你们的支持是我最大的动力。

博主VX:18884281851

谢谢各位的支持~~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1897914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FlowUs设计师展示自己作品集的优质平台

作为一位资深设计师&#xff0c;我认为在多个渠道展示我们的作品是至关重要的。这不仅仅是为了展示我们的设计能力&#xff0c;更是为了建立我们作为创意专业人士的声誉和品牌。以下是一些我们应当考虑的理由&#xff1a; 专业展示&#xff1a;在多个平台上展示作品集&#xff…

一文带你了解“商贸物流大脑”

商贸物流大脑源于实体物流&#xff0c;物理世界的实体物流是构建商贸物流大脑的基础。商贸物流大脑应该是物理世界的实际物流系统和相应的虚拟物流系统两个层面血肉相连、相互作用、有机统一的整体。商贸物流的研究内容包括数字产业化和物流数字化两大部分。信息产业化是进入物…

OpenCV 灰度直方图及熵的计算

目录 一、概述 1.1灰度直方图 1.1.1灰度直方图的原理 1.1.2灰度直方图的应用 1.1.3直方图的评判标准 1.2熵 二、代码实现 三、实现效果 3.1直方图显示 3.2 熵的计算 一、概述 OpenCV中的灰度直方图是一个关键的工具&#xff0c;用于分析和理解图像的灰度分布情况。直…

electron教程(二)控制应用程序的事件生命周期

1.will-finish-launching 当应用程序完成基础的启动的时候被触发&#xff0c;在 Windows 和 Linux 中, will-finish-launching 事件与 ready 事件是相同的; 在 macOS 中&#xff0c;这个事件相当于 NSApplication 中的 applicationWillFinishLaunching 提示。 app.on(will-fi…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【生成密钥(C/C++)】

生成密钥(C/C) 以生成ECC密钥为例&#xff0c;生成随机密钥。具体的场景介绍及支持的算法规格。 注意&#xff1a; 密钥别名中禁止包含个人数据等敏感信息。 开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复…

教师商调函流程详解

作为一名教师&#xff0c;您是否曾面临过工作调动的困惑&#xff1f;当您决定迈向新的教育环境&#xff0c;是否清楚整个商调函流程的每一个细节&#xff1f;今天&#xff0c;就让我们一起来探讨这一过程&#xff0c;确保您能够顺利地完成工作调动。 首先需要确定新调入的学校已…

如何摆脱反爬虫机制?

在网站设计时&#xff0c;为了保证服务器的稳定运行&#xff0c;防止非法数据访问&#xff0c;通常会引入反爬虫机制。一般来说&#xff0c;网站的反爬虫机制包括以下几种&#xff1a; 1. CAPTCHA&#xff1a;网站可能会向用户显示CAPTCHA&#xff0c;要求他们在访问网站或执行…

在Ubuntu上配置PPPoE服务:从安装到自动化启动的全指南

在Ubuntu上配置PPPoE服务&#xff1a;从安装到自动化启动的全指南 PPPoE&#xff08;点对点协议以太网&#xff09;是一种广泛用于DSL和光纤宽带连接的协议。在本篇技术博客中&#xff0c;我们将详细介绍如何在Ubuntu系统上配置PPPoE服务&#xff0c;包括安装、配置、启动以及…

《简历宝典》02 - 如果你是HR,你会优先打开哪份简历?

现在的求职环境不必多说&#xff0c;其实我们大家都还是很清楚的。所以&#xff0c;在这个环境下&#xff0c;写一份优秀的简历&#xff0c;目的与作用也不必多说。那么&#xff0c;这一小节呢&#xff0c;我们先从简历这份文档的文档名开始说起。 目录 1 你觉得HR们刷简历的时…

沙龙回顾|MongoDB如何充当企业开发加速器?

数据不仅是企业发展转型的驱动力&#xff0c;也是开发者最棘手的问题。前日&#xff0c;MongoDB携手阿里云、NineData在杭州成功举办了“数据驱动&#xff0c;敏捷前行——MongoDB企业开发加速器”技术沙龙。此次活动吸引了来自各行各业的专业人员&#xff0c;共同探讨MongoDB的…

娱乐圈惊爆已婚男星刘端端深夜幽会

【娱乐圈惊爆&#xff01;已婚男星刘端端深夜幽会&#xff0c;竟是《庆余年》二皇子“戏外风云”】在这个信息爆炸的时代&#xff0c;娱乐圈的每一次风吹草动都能瞬间点燃公众的热情。今日&#xff0c;知名娱乐博主刘大锤的一则预告如同投入湖中的巨石&#xff0c;激起了层层涟…

香橙派AIpro测评:yolo8+usb鱼眼摄像头的Camera图像获取及识别

一、前言 近期收到了一块受到业界人士关注的开发板"香橙派AIpro",因为这块板子具有极高的性价比&#xff0c;同时还可以兼容ubuntu、安卓等多种操作系统&#xff0c;今天博主便要在一块832g的香橙派AI香橙派AIpro进行YoloV8s算法的部署并使用一个外接的鱼眼USB摄像头…

护航端侧大模型平稳健康发展,百度大模型内容安全Lite版正式发布

6月28日&#xff0c;WAVE SUMMIT深度学习开发者大会 2024 “智变应用、码动产业”平行论坛在北京召开。与会&#xff0c;百度大模型内容安全Lite版正式发布&#xff0c;可面向低算力和超低算力的终端大模型提供离线场景下的一站式安全解决方案&#xff0c;为各类终端大模型平稳…

社区活动|FlowUs知识库的发展|先进技术的落地应用|下一代生产力工具你用了吗

在当今快速发展的数字化时代&#xff0c;技术的进步不断推动着工作方式和知识管理的革新。FlowUs&#xff0c;作为一款前沿的知识管理和协作平台&#xff0c;正站在这一变革的浪潮之巅&#xff0c;引领着智能工作的新潮流。 智能化的智能学习引导工具 FlowUs不仅仅是一个工具&…

springboot大学生实习管理系统-计算机毕业设计源码97434

目录 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 图2-4 添加信息流程图 2.2.5 修改信息流程 2.2.6 删除信息流…

Linux高并发服务器开发(十三)Web服务器开发

文章目录 1 使用的知识点2 http请求get 和 post的区别 3 整体功能介绍4 基于epoll的web服务器开发流程5 服务器代码6 libevent版本的本地web服务器 1 使用的知识点 2 http请求 get 和 post的区别 http协议请求报文格式: 1 请求行 GET /test.txt HTTP/1.1 2 请求行 健值对 3 空…

djangoGD高校信管专业就业信息管理系统-计算机毕业设计源码59343

djangoGD高校信管专业就业信息管理系统 摘 要 随着高校信管专业的快速发展&#xff0c;学生就业问题日益受到广泛关注。为了更好地服务学生&#xff0c;提高就业率&#xff0c;许多高校开始引入信息化手段来管理学生就业信息。然而&#xff0c;传统的就业信息管理方式存在很多问…

华夏女中师生深入同仁堂,感悟中医药文化之精髓

华夏女中师生深入同仁堂&#xff0c;感悟中医药文化之精髓 2024年7月4日下午&#xff0c;北京师范大学实验华夏女子中学15名学生在薛艳老师的带领下来到北京同仁堂中医医院&#xff0c;开展职业影随活动。何泽扬院长对她们的到来表示欢迎。随后&#xff0c;在“冯建春全国名老中…

SolidWorks教育版:促进师生互动的桥梁

在当今教育领域&#xff0c;技术的融合正改变着传统的教学方式。SolidWorks教育版作为一款专为教育机构和学生设计的三维设计软件&#xff0c;不仅以其强大的功能和易用的界面赢得了广泛赞誉&#xff0c;更在促进师生互动方面发挥了重要作用。本文将探讨SolidWorks教育版如何成…

python通过COM Interface控制CANoe

python通过COM Interface控制CANoe 介绍打开示例工程python代码示例介绍 通过python可以控制CANoe的启动和停止等其他操作,在做高阶的自动化项目时可以用到。 打开示例工程 python代码示例 # --------------------------------------------------------------------------…