一、3 MySQL多表、外键和数据库设计
1. 多表
多表简述
单表的缺点
外键约束
//新建表时添加外键
[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
//已有表添加外键
ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主 键字段名);
//删除外键约束
alter table 从表 drop foreign key 外键约束名称
//注意:
//从表外键类型必须与主表主键类型一致 否则创建失败
//添加数据时, 应该先添加主表中的数据.
//删除数据时,应该先删除从表中的数据
//级联删除操作
ON DELETE CASCADE
2. 多表关系设计
一对多关系(常见)(1:n)
多对多关系(常见)(n:n)
一对一关系(了解)(1:1)
3. 多表查询
//隐式内连接
SELECT 字段名 FROM 左表, 右表 WHERE 连接条件;
//显式内连接
SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 条件
//左外连接
SELECT 字段名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 条件
//右外连接
SELECT 字段名 FROM 左表 RIGHT [OUTER ]JOIN 右表 ON 条件
4. 子查询(SubQuery)
子查询概念
子查询特点
子查询常见分类
SELECT 查询字段 FROM 表 WHERE 字段=(子查询);
SELECT 查询字段 FROM (子查询)表别名 WHERE 条件;
SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询);
子查询总结
5. 数据库设计
数据库三范式(空间最省)
数据库反三范式