MySQL 必知必会
朱晓峰
前摩根大通银行技术部副总裁、系统架构师
新⼈⾸单¥59.9
1454 人已学习
课程目录
已更新 33 讲 / 共 36 讲
0/4登录后,你可以任选4讲全文学习。
课前准备 (2讲)
开篇词 | 在实战中学习,是解锁MySQL技能的最佳方法
免费
环境准备 | 带你安装MySQL和图形化管理工具Workbench
实践篇 (13讲)
01 | 存储:一个完整的数据存储过程是怎样的?
02 | 字段:这么多字段类型,该怎么定义?
03 | 表:怎么创建和修改表?
04 | 增删改查:如何操作表中的数据?
05 | 主键:如何正确设置主键?
06 | 外键和连接:如何做关联查询?
07 | 条件语句:WHERE 与 HAVING有什么不同?
08 | 聚合函数:怎么高效地进行分组统计?
09 | 时间函数:时间类数据,MySQL是怎么处理的?
10 | 如何进行数学计算、字符串处理和条件判断?
11 | 索引:怎么提高查询的速度?
12 | 事务:怎么确保关联操作正确执行?
13 | 临时表:复杂查询,如何保存中间结果?
进阶篇 (8讲)
14 | 视图:如何简化查询?
15 | 存储过程:如何提高程序的性能和安全性?
16 | 游标:对于数据集中的记录,该怎么逐条处理?
17 | 触发器:如何让数据修改自动触发关联操作,确保数据一致性?
18 | 权限管理:如何控制数据库访问,消除安全隐患?
19 | 日志(上):系统出现问题,如何及时发现?
20 | 日志(下):系统故障,如何恢复数据?
21 | 数据备份:异常情况下,如何确保数据安全?
优化篇 (5讲)
22 | 范式:如何消除冗余,实现高效存取?
23 | ER模型:如何理清数据库设计思路?
24 | 查询有点慢,语句该如何写?
25 | 表太大了,如何设计才能提高性能?
26 | 如何充分利用系统资源?
案例篇 (2讲)
27 | 手把手带你设计一个完整的连锁超市信息系统数据库(上)
28 | 手把手带你设计一个完整的连锁超市信息系统数据库(下)
特别放送 (3讲)
特别发送(一) | 经典面试题讲解第一弹
特别放送(二)| 经典面试题讲解第二弹
特别放送(三)| MySQL 8 都有哪些新特征?
MySQL 必知必会
15
15
1.0x
00:00/00:00
登录|注册

28 | 手把手带你设计一个完整的连锁超市信息系统数据库(下)

朱晓峰 2021-05-18
你好,我是朱晓峰。
上节课,我们完成了项目的需求分析和业务流程的梳理,为设计数据库做好了准备工作,接下来我们就可以开始具体的设计了。所以,今天,我就带你来建库建表、创建外键约束、视图、存储过程和触发器,最后制定容灾和备份的策略,从而完成一个完整的连锁超市项目数据库的设计,帮助你提高设计高效可靠的数据库的能力。
首先,我们一起来创建数据库和数据表。

如何创建数据库和数据表?

经过上节课的分库分表操作,我们把数据库按照业务模块,拆分成了多个数据库。其中,盘点模块中的数据表分别被拆分到了营运数据库(operation)和库存数据库(inventory)中。
下面我们就按照上节课的分库策略,分别创建营运数据库和库存数据库:
mysql> CREATE DATABASE operation;
Query OK, 1 row affected (0.03 sec)
mysql> CREATE DATABASE inventory;
Query OK, 1 row affected (0.02 sec)
接下来,我们来分别创建下这两个数据库中的表。
商户表、门店表、员工表、商品常用信息表和商品不常用信息表从属于营运数据库,我们先把这 5 个表创建出来。
商户表(operation.enterprice):
mysql> CREATE TABLE operation.enterprice
-> (
-> groupnumber SMALLINT PRIMARY KEY, -- 组号
-> groupname VARCHAR(100) NOT NULL, -- 名称
-> address TEXT NOT NULL, -- 地址
-> phone VARCHAR(20) NOT NULL, -- 电话
-> contactor VARCHAR(50) NOT NULL -- 联系人
-> );
Query OK, 0 rows affected (0.05 sec)
门店表(operation.branch):
mysql> CREATE TABLE operation.branch
-> (
-> branchid SMALLINT PRIMARY KEY, -- 门店编号
-> groupnumber SMALLINT NOT NULL, -- 组号
-> branchname VARCHAR(100) NOT NULL, -- 门店名称
-> address TEXT NOT NULL, -- 地址
-> phone VARCHAR(20) NOT NULL, -- 电话
-> branchtype VARCHAR(20) NOT NULL, -- 门店类别
-> CONSTRAINT fk_branch_enterprice FOREIGN KEY (groupnumber) REFERENCES operation.enterprice(groupnumber) -- 外键约束,组号是外键
-> );
Query OK, 0 rows affected (0.07 sec)
员工表(operation.employee):
mysql> CREATE TABLE operation.employee
-> (
-> employeeid SMALLINT PRIMARY KEY, -- 员工编号
-> groupnumber SMALLINT NOT NULL, -- 组号
-> branchid SMALLINT NOT NULL, -- 门店编号
-> workno VARCHAR(20) NOT NULL, -- 工号
-> employeename VARCHAR(100) NOT NULL, -- 员工名称
-> pid VARCHAR(20) NOT NULL, -- 身份证
-> address VARCHAR(100) NOT NULL, -- 地址
-> phone VARCHAR(20) NOT NULL, -- 电话
-> employeeduty VARCHAR(20) NOT NULL, -- 职责
-> CONSTRAINT fk_employee_branch FOREIGN KEY (branchid) REFERENCES operation.branch(branchid)
-> );
Query OK, 0 rows affected (0.07 sec)
商品常用信息表(operation.goods_o):
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《MySQL 必知必会》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥59.9
立即订阅
登录 后留言

精选留言(1)

  • zhongsun
    为什么我在建商品常用信息表和商品不常用信息表的时候
    显示:Multiple primary key defined 建不出来
    2021-05-19
收起评论
1
返回
顶部