一、前言
该项目非常适合MySQL入门学习的小伙伴,博主提供了源码、数据和一些查询语句,供大家学习和参考,代码和表筹划有什么不适当还请各位大佬多多指点。
所需环境
- MySQL可视化工具:navicat;
- 数据库:MySql 5.7/8.0等版本均可;
需求:
1:每个书店有多家供应商,每家供应商给多个书店供货。
2:每个书店聘任多名员工,每个员工只属于一个书店每个书店存放多本图书,多本图书存放在一家书店。
4: 每本图书可以被任何会员购买,一名会员可以购买恣意一本图书。
备注:
书店包含下列属性: 编号,地址,书店名字,老板电话;
员工包含下列属性: 身份证,名字,性别,年龄;
图书包含下列属性: 编号,书名,代价,库存量;
会员包含下列属性: 编号,姓名,电话,积分;
关于某供应商给书店供货要形貌供货日期;
关于书店聘任员工要形貌聘任日期:
关于会员购买图书需要形貌购买数量;
关于书店存放图书需要形貌存放位置。
二、E-R图
三、关系模式
供应商供应商编号,供应商地址,供应商接洽人,供应商接洽电话,供应商名字,供应商备注)。
书店:(书店编号,书店地址,书店名字,书店老板电话)
员工:(身份证,员工名字,员工性别,员工年龄,书店编号,聘任时期)
图书:(图书编号,书名,代价,库存量,书店编号,存放位置)
会员会员编号,会员姓名,会员电话,积分)。
供应信息供应商编号,书店编号,供应时间)
购买信息会员编号,图书编号,购买数量)
备注:
下划线为主键,红色字为外键;
四、数据表的筹划
表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)
复制代码 六、主要查询命令
- 查询所有书店地址信息结果
- 查询四月所有供应商中哪些供应过书籍。(查看供应商编号)
- select DISTINCT 供应商编号 from 供应信息 where 供应时间 like '2020-04%'
复制代码
- 查询所有书店中年龄最大的男员工姓名。
- select 员工姓名 from 员工 where 员工性别 = '男' ORDER BY 员工年龄 desc limit 1
复制代码
- 查询书店老板电话为139开头的书店名字。
- select 书店名字 from 书店 where 书店老板电话 like '139%'
复制代码
- 查询代价低于均匀代价的书籍名字。
- SELECT 书名 FROM 图书 WHERE 价格 < (SELECT AVG(价格) FROM 图书)
复制代码
- 查询购买书籍数量最多的会员名字。
- SELECT 会员姓名 FROM 会员 WHERE 会员编号 = (select 会员编号 from 购买信息 GROUP BY 会员编号 ORDER BY(购买数量) desc limit 1)
复制代码
- 查询员工人数最少的书店地点地址。
- select 书店地址 from 书店 where 书店编号 = (select 书店编号 from 员工 GROUP BY 书店编号 ORDER BY count(*) asc limit 1)
复制代码
- 查询优等供应商给哪些书店供货过,并按照供货时间从早到晚排序。
- select * from 供应信息 where 供应商编号 in (select 供应商编号 from 供应商 where 供应商备注 = '优等') ORDER BY 供应时间
复制代码
- 查询代价最贵的三种图书,存放在哪些书店里。(查看书店名字)。
- 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)
复制代码
- 查询人生这本书,被哪些会员购买过。
- select 会员姓名 from 会员 where 会员编号 in (select 会员编号 from 购买信息 where 图书编号 in (select 图书编号 from 图书 where 书名 = '人生'))
复制代码
七、答疑解惑
代码有问题或需要其他的查询语句,都可以随时评论留言或接洽博主。
还多请各位小伙伴多多点赞支持,你们的支持是我最大的动力。
博主VX:18884281851
谢谢各位的支持~~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |