mysql应不应该设置外键关联_数据库学习笔记之MySQL(12)

目录

01. 外键的注意事项

02. 添加外键并指定一个名称

03. 添加外键_动态添加及删除外键

04. 外键约束的参照操作

正文

01. 外键的注意事项

只有InnoDB的存储引擎才支持外键。创建外键的时候,子表的外键必须关联附表的主键子表的外键字段和主表的主键字段类型要相似;如果是数值类型要求一致,并且无符号也要一致。如果是字符型要求类型一致,长度可以不同。如果外键的字段没有创建索引,创建外键后MySQL会自动帮我们添加索引。子表的外键关联的必须是父表的主键。如果要删除父表,需要先删除有外键约束的子表。

02. 添加外键并指定一个名称

添加外键
// 父表CREATE TABLE tbl_cate(id TINYINT UNSIGNED AUTO_INCREMENT KEY,cateName VARCHAR(50) NOT NULL UNIQUE,cateDesc VARCHAR(100) NOT NULL DEFAULT '')ENGINE=INNODB;// 子表 添加一个名为cateId_fk_tblCate的外键CREATE TABLE tbl_news(id INT UNSIGNED AUTO_INCREMENT KEY,title VARCHAR(100) NOT NULL UNIQUE,content VARCHAR(1000) NOT NULL,cateId TINYINT UNSIGNED NOT NULL,CONSTRAINT cateId_fk_tblCate FOREIGN KEY(cateId) REFERENCES news_cate(id))ENGINE=INNODB;

03. 添加外键_动态添加及删除外键

动态删除外键
// 格式ALTER TABLE tbl_name DROP FOREIGN KEY fk_name;// 删除外键ALTER TABLE tbl_newsDROP FOREIGN KEY cateId_fk_tblCate;
动态添加外键,动态添加外键之前,表中的字段一定要是合法的,没有脏值。
// 格式ALTER TABLE tbl_name ADD FOREIGN KEY(外键字段) REFERENCES 主表(主键字段);// 添加外键ALTER TABLE tbl_newsADD FOREIGN KEY(cateId) REFERENCES tbl_cate(id);// 添加外键并指定外键名ALTER TABLE tbl_newsADD CONSTRAINT cateId_fk_tblCate FOREIGN KEY(cateId) REFERENCES tbl_cate(id);

04. 外键约束的参照操作

CASCADE 级联的操作,从父表删除或更新,子表也跟着删除或更新SET NULL 对应的字段可以设置为null值,从父表进行删除或者更新记录,并设置子表的外键列为NULLNO ACTION | RESTRICT 拒绝对父表做更新或删除操作
//指定级联操作 DELETE CASCADE UPDATE CASCADEALTER TABLE tbl_newsADD FOREIGN KEY(cateId) REFERENCES tbl_cate(id)ON DELETE CASCADE ON UPDATE CASCADE;

写在最后

本文是在学习MySQL过程中整理的相关笔记,是该系列的第十二篇文章,以上内容纯手敲,可能有手误的地方,也可能有错误的地方,希望大家一起指正和见谅。最后,希望与每一个努力的人同行,一起加油!!!

98e18462502290efbc23e416ea6ef6df.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值