MySQL 数据管理之外键(仅做了解)
外键(了解)
被引用数据表(主表)是不能直接删除的
需要先把通过外键引用它的表(从表)删除,然后才能删除被引用数据表(主表)
如下图,删除掉student表以后grade表成功删除
-
**方式一: **在创建表的时候添加约束 (很麻烦,不建议使用)
-
直接通过练习实例来理解
-
SQL代码
-- 创建数据表 grade CREATE TABLE IF NOT EXISTS `grade`( `gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id', `gradename` VARCHAR(50) NOT NULL COMMENT '年级名称', PRIMARY KEY(`gradeid`) )ENGINE=INNODB DEFAULT CHARSET=utf8 /* studet 表的 gradeid 字段引用 grade 表的 gradeid 字段 1.定义外键key KEY `FK_外键key的名称` (`引用表的字段名`) 2.给外键添加约束(执行引用) REFERENCES `被引用表的表名`(`被引用表的字段名`) */ CREATE TABLE IF NOT EXISTS `student`( `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号', `name` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '姓名', `password` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码', `sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别', `born` DATETIME DEFAULT NULL COMMENT '出生日期', `gradeid` INT(10) NOT NULL COMMENT '学生的年级', -- 需要将这个字段使用外键绑定到 grade 表的同名字段 `address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址', `email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱', PRIMARY KEY(`id`), KEY `FK_gradeid` (`gradeid`), -- 定义外键key CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`) -- 给这个外键添加约束 )ENGINE=INNODB DEFAULT CHARSET=utf8
-
生成的数据表
-
-
方式二:创建表以后再添加外键,稍微简单一点
-
练习实例
-
SQL代码
-- 创建数据表 grade CREATE TABLE IF NOT EXISTS `grade`( `gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id', `gradename` VARCHAR(50) NOT NULL COMMENT '年级名称', PRIMARY KEY(`gradeid`) )ENGINE=INNODB DEFAULT CHARSET=utf8 /* 添加外键方式二 ALTER TABLE `从表表名` ADD CONSTRAINT `外键名` FOREIGN KEY(`从表字段名`) REFERENCES `主表表名`(`主表字段名`) */ CREATE TABLE IF NOT EXISTS `student`( `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号', `name` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '姓名', `password` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码', `sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别', `born` DATETIME DEFAULT NULL COMMENT '出生日期', `gradeid` INT(10) NOT NULL COMMENT '学生的年级', -- 需要将这个字段使用外键绑定到 grade 表的同名字段 `address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址', `email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱', PRIMARY KEY(`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8 -- 创建表时没有外键关系 ALTER TABLE `student` ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
-
生成的数据表
-
-
以上的操作创建的都是物理外键,仅做学习了解,以后尽量不要用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律