您现在的位置是:技术博客 > 数据库数据库 外键约束问题 Lucas2021-01-02 10:34【代码】979人已围观 简介MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。 #### 一、只创建基本数据库结构并写入基本测试数据(不含外键的创建) ``` # 忽略外键检查 SET FOREIGN_KEY_CHECKS=0; # 创建班级表 DROP TABLE IF EXISTS `lu_class`; CREATE TABLE `lu_class` ( `class_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '班级ID', `class_name` varchar(50) NOT NULL COMMENT '班级名称', PRIMARY KEY (`class_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='班级表'; # 插入基础测试数据 INSERT INTO `lu_class` VALUES ('101', '奥数班'); INSERT INTO `lu_class` VALUES ('102', '体育班'); INSERT INTO `lu_class` VALUES ('103', '物理班'); # 创建学生表 DROP TABLE IF EXISTS `lu_student`; CREATE TABLE `lu_student` ( `student_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '学生ID', `student_name` varchar(50) NOT NULL COMMENT '姓名', `class_id` int(11) unsigned NOT NULL COMMENT '班级ID', PRIMARY KEY (`student_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='学生表'; # 插入基础测试数据 INSERT INTO `lu_student` VALUES ('1', '张三', '101'); INSERT INTO `lu_student` VALUES ('2', '李四', '102'); INSERT INTO `lu_student` VALUES ('3', '王五', '103'); ``` #### 二、插入外键 说明如下: 1、外键的创建包含4种,RESTRICT、NO ACTION、CASCADE、SET NULL。 CASCADE: 从父表中删除或更新对应的行,同时自动的删除或更新自表中匹配的行。ON DELETE CANSCADE和ON UPDATE CANSCADE都被InnoDB所支持。 SET NULL: 从父表中删除或更新对应的行,同时将子表中的外键列设为空。注意,这些在外键列没有被设为NOT NULL时才有效。ON DELETE SET NULL和ON UPDATE SET SET NULL都被InnoDB所支持。 NO ACTION: InnoDB拒绝删除或者更新父表。 RESTRICT: 拒绝删除或者更新父表。指定RESTRICT(或者NO ACTION)和忽略ON DELETE或者ON UPDATE选项的效果是一样的。 2、主表是包含关联主键的表,子表是外键所在的表,所以主表是lu_class,子表是lu_student。 ``` ALTER TABLE lu_student ADD CONSTRAINT FK_STUDENT_UNION_CLASS FOREIGN KEY (class_id) REFERENCES lu_class(class_id) on delete cascade on update restrict; ``` #### 二、测试删除 ``` delete from lu_class where class_id = 101; ``` 执行前:  执行后:  转载:感谢您对Lucas个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源Lucas个人博客”。 很赞哦! ( 0 ) 上一篇:mysql批量修改表前缀 下一篇:Mysql用户及权限 相关文章 常用的SQL函数 页面可视化数据表结构 存储过程函数 mysql连表查询 点击排行 生活不止眼前的苟且,还有诗和远方 十年一觉电影梦 奥地利基茨比厄尔 禅修治愈身心 自律成就自我 零边际成本社会 Modern PHP 鸟哥的Linux私房菜 本栏推荐 要技术,更要有创意 定时任务 Curl无法发送https请求 Lnmp环境搭建 常用的SQL函数 Windows的cmd指令 ueditor工具栏浮动bug 有趣的js插件 标签云 git laravel swoole javascript vue ajax html css sql linux docker flask django nginx apache thinkphp markdown sublime wechat layui photoshop nodejs mysql windows composer java maven springboot mybatis IDE 猜你喜欢 Swoole 基础篇一(初识) PHP进程管理器 正则的快速上手 Sublime代码格式化 Lnmp环境搭建 高并发库存防控超量 Linux之top命令 常用的SQL函数 站点信息 建站时间:2018-05-01 在线人数:1人 文章统计:263篇 总浏览量:222568次 统计数据:百度统计 个人信息:扫描二维码查看