MYSQL外键约束
外键约束
-- 外键约束示例语法
CONSTRAINT fk_rl FOREIGN KEY(deptId) REFERENCES tb_dept1(id)

外键特点:
定义一个外键时,需要遵守下列规则:
- 主表必须已经存在于数据库中,或者是当前正在创建的表
- 必须为主表定义主键
- 主键不能包含控制,单允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。
- 在主表的表名后面指定列名和列名的组合。这个列或列的组合必须是主表的
主键或候选键。
外键关联的必然是主表的主键。
- 外键中列的数目必须和主表的主键中列的数目相同
- 外键中列的数据类型必须和主表主键中对应列的数据类型相同。

多表关系:

一对一

一对多,多对一

多对多


查看创建表
-- 指定默认字符集以支持中文
-- 解决MySQL5.7字符问题
DEFAULT CHARSET=utf8mb4;
-- 查看创建表
show create table 表名;
操作外键约束



修改和删除时,中间从表可以随便删除和修改,但是两边的主表受从表依赖的数据不能删除或者修改。
创建表时设置外键约束


创建主表和从表,为从表指定外键
-- 创建(从)表时指定外键约束
CREATE TABLE score (
id int(10) NOT NULL PRIMARY KEY auto_increment,
-- 非空,主键,自增
sid INT(10),
name varchar(50) DEFAULT NULL,
subject varchar(50) DEFAULT NULL,
score varchar(50) DEFAULT NULL,
CONSTRAINT fk_sid FOREIGN KEY(sid) REFERENCES 主表名(主表的主键字段)
-- 为本表(从表)创建外键,指定主表的主键字段
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4; -- 指定数据库引擎和数据库编码
修改表时添加外键约束




-- 修改表时添加外键约束
alter table 从表名
add CONSTRAINT 外键约束名称 FOREIGN KEY(从表列名) REFERENCES 主表名(主表主键名)
-- 示例:
alter table 表名
add CONSTRAINT fk_sid FOREIGN KEY(sid) REFERENCES studentinfo(id)
外键约束下删除数据

删除外键约束

-- 删除外键约束
ALTER TABLE 从表名 drop FOREIGN KEY 外键名
查看主表和从表的外键约束关系


1565

被折叠的 条评论
为什么被折叠?



