数据库设计流程
需求分析 - 设计ER图 - 转换成 数据库模型图 和 数据表
开发流程模型
瀑布模型 - 数据库设计
螺旋模型 - 网站开发
E-R图
也称实体-联系图(Entity Relationship Diagram),
提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型
实体
属性
主键属性用下划线标
允许有空值
复合属性
多值属性
关系
办公电脑用员工编号和员工对应
多对多关系需要新建一个关系表
CRUD操作
表加前缀t_ , 比如 t_student
视图加前缀v_ , 比如 v_student
运行sql文件
打开Navicat - 数据库 - 右键 - 运行sql文件
如果违反了主键约束或唯一约束,就更新ip
(这里id为主键,empno和ip为唯一约束)
insert into t_emp_ip(id, empno, ip) values
(1, 8001, "192.168.19.31"),
(2, 8002, "192.168.19.6"),
(3, 8003, "192.168.19.66"),
(4, 8004, "192.168.19.54")
on duplicate key update ip=values(ip);
mysql插入多条记录,有一条错误,事务回滚,都写不进去
加上ignore 关键字,会自动忽略错误操作,不影响别的操作
insert ignore into t_emp_ip(id, empno, ip) values
(1, 8001, "192.168.19.31"),
(2, 8002, "192.168.19.6"),
(3, 8003, "192.168.19.66"),
(4, 8004, "192.168.19.54");
表连接
- 表连接查询
mysql数据库默认关闭缓存,所以每个子查询都是相关子查询
相关子查询就是循环执行多次的查询
SELECT empno, ename
FROM t_emp
WHERE sal > (SELECT sal FROM t_emp WHERE empno = 7499)
AND empno != 7499;
用 from子查询 代替 where子查询 ,提高性能,from 是确认数据来源的,只执行一次
SELECT e.empno, e.ename
FROM t_emp e
JOIN (SELECT sal FROM t_emp WHERE empno = 7499) t
ON e.sal > t.sal AND empno != 7499;
内连接用 ON 或 WHERE效果相同
SELECT e.ename, d.dname FROM t_emp e JOIN t_dept d ON e.deptno = d.deptno
AND d.deptno=10;
SELECT e.ename, d.dname FROM t_emp e JOIN t_dept d ON e.deptno = d.deptno
WHERE d.deptno=10;
外连接 比如 LEFT JOIN,左表会完全显示,用WHERE就不会了
- 表连接更新
相关子查询更新
UPDATE t_emp SET sal=10000
WHERE deptno=(SELECT deptno FROM t_dept WHERE dname='SALES');
表连接更新
UPDATE t_emp e JOIN t_dept d ON e.deptno=d.deptno
AND d.dname='SALES'
SET e.sal=10000, d.dname="销售部";
- 表连接删除
delete 后接的 表示删除哪个表中符合条件的数据
DELETE e, d FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno
AND d.dname='销售部';
事务
事务是一个或多个sql语句组成的整体,要么全成功,要么全失败
SPU
Standard Product Unit:标准化产品单元
产品表:比如iphone11
商品表:多少GB内存的Iphone11
淘宝搜索iphone11时,先搜索产品表,找到id,再根据id搜索商品表的商品,显示出来
SKU
库存保有单位 (Stock keeping Unit)
SKU可以简单的理解为每个商品的属性:颜色/尺码等信息