建表的时候定义外键

create table 表名(
字段名称 类型 约束
foreign key (字段名称) references 另一张表名(另表字段)
)
create table students(id int unsigned primary key auto_increment,name varchar(25) not null,cls_id int unsigned,foreign key (cls_id) references classes(id)
);

给一个建好的表新增外键

》格式

alter table student add constraint 外键名称 foreign key (本表外键字段) references 关联表(字段);

注意,外键字段只能够关联另一张表的主键

如果关联的另一个表的字段,没有设置为主键

是会报错的

》例子

mysql> desc one;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> desc two;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  | YES  |     | NULL    |       |
| title | char(20) | YES  |     | NULL    |       |
| oneid | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)mysql> alter table one modify id int primary key;
Query OK, 0 rows affected (0.09 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> alter table two add constraint abc foreign key(oneid)-> references one(id);
Query OK, 0 rows affected (0.10 sec)
Records: 0  Duplicates: 0  Warnings: 0

当前是two表一个字段关联one表的id

如果id没有设置为主键

报以下错误

ERROR 1822 (HY000): Failed to add the foreign key constraint. Missing index for constraint ‘abc’ in the referenced table ‘one’

级联模式

cascade方式

父表更新或删除记录时,同步更新或删除掉子表的匹配记录

》在建表的时候设置字段为级联模式

foreign key (外键字段) references 关联表(主键) on delete cascade

例子

mysql> create table three(-> id int,-> title varchar(20),-> oneid int,-> foreign key (oneid) references one(id) on delete cascade-> );
Query OK, 0 rows affected (0.05 sec)

》给一个表添加外键字段时设置级联模式

尝试

alter table 表名 add constraint 外键名 foreign key (外键字段) references 另一个表名(字段) on delete cascade

置空方式

set null

设置外键的时候,加上on delete set null

例子

删除外键

删除前先查一下外键的名称

然后再删除

1,使用show create table语句查建表语句

2,拿到了外键的名称后

alter table 表名 drop foreign key 外键名称

外键就会消失了

mysql-外键操作-级联删除相关推荐

  1. mysql创建外键级联更新_MySQL使用外键实现级联删除与更新的方法

    本文实例讲述了MySQL使用外键实现级联删除与更新的方法.分享给大家供大家参考,具体如下: MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时 ...

  2. mysql中外键设置级联删除_MySQL中利用外键实现级联删除、更新

    MySQL中利用外键实现级联删除.更新 MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在 创建索引的时候,可以指 ...

  3. mysql级联删除外键约束_MySQL外键设置 级联删除

    . cascade方式 在父表上update/delete记录时,同步update/delete掉子表的匹配记录 . set null方式 在父表上update/delete记录时,将子表上匹配记录的 ...

  4. MySQL外键之级联

    简介 MySQL外键起到约束作用,在数据库层面保证数据的完整性. 例如使用外键的CASCADE(cascade串联)类型,当子表(例如user_info)关联父表(例如user)时,父表更新或删除时, ...

  5. Mysql外键约束怎么删除

    记录一下碰到的问题.由于我是使用PowerDesigner来建mysql物理模型的,为了表与表之间的关系更加清楚,我给他们连线了.之后我就用它生成的SQL语句在navicat把表建出来,我看见没问题就 ...

  6. mysql创建外键级联更新_MySQL中利用外键实现级联删除、更新

    MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定在删除.更新父表时,对子表进行的相应操作 ...

  7. MySql 修改外键 支持级联删除

    首先必须要有外键,InnoDB甚么的都不说了,直接上修改句子. 要先删除该外键,然后添加. 具体原因貌似是因为不支持alter外键的操作. ALTER TABLE `t_terminal` DROP ...

  8. mysql怎么写外键支持级联删除_MySQL外键级联删除不起作用,完全难倒

    我已经阅读了很多其他线程,但我仍然感到难过.我创建了两个非常简单的表作为完整性检查,并且无法让它们执行级联删除,因此需要一些帮助. CREATE TABLE `test1` ( `test1_ID` ...

  9. Oracle外键约束如何同时更新,SQL与ORACLE的外键约束-级联更新和删除

    /* SQL与ORACLE的外键约束--级联删除 最近软件系统中要删除一条记录,就要关联到同时删除好多张表,他们之间还存在着约束关系.所以考虑到在创建表时加上约束关系,具体如下: SQL的外键约束可以 ...

最新文章

  1. python 画出决策边界_决策边界可视化,让你的分类合理有序
  2. 这个程序员如何以一己之力阻止了 Bug 代码的提交并改变整个 DevOps 世界?
  3. mysql有选择地输出数据_有条件地选择MYSQL列
  4. springMVC请求发生重复路径
  5. 带你少走弯路:强烈推荐的Keras快速入门资料和翻译(可下载)
  6. 使用eclipse开发javaweb注册功能
  7. 大数据挖掘处理技术有哪些
  8. webpack笔记(9)静态资源集中输出
  9. 手工删除oracle的方法
  10. 打印九九乘法表算法-java
  11. 【雨滴桌面】简洁桌面天气皮肤YcWea5.5,直接通过HTML文档获取天气数据,鼠标移入显示近三天天气,鼠标移出隐藏
  12. android 蓝牙连接苹果手机号码,苹果与android蓝牙连接怎么实现
  13. 考研英语阅读真题分析
  14. 笔记——c51的led点阵流动字幕
  15. 取消磁盘介质写入保护
  16. 阻止冒泡事件(兼容大部分浏览器)
  17. python 图灵完备_区块链学习6:图灵完备和图灵不完备
  18. MySql InnoDB与MyISAM的区别
  19. 2015年春节联欢晚会节目单
  20. mac时间机器删除旧备份

热门文章

  1. 导航栏-滚动渐变 - 封装版
  2. vantUI组件:获取验证码 - 踩坑篇
  3. 通过cmd和npm指令,快速引入element-ui组件
  4. 华科网络内容管理系统 v5.6 手机 PC
  5. 矩阵论及其应用_数值分析篇——向量和矩阵的范数
  6. PHP二开 三语言( 中文、英语、马来语) 自动抢单系统源码
  7. oracle层级计算推演,云和恩墨的两道Oracle面试题
  8. java callable 线程池_JAVA 线程池之Callable返回结果
  9. multism中ui和uo应该怎么表示_Excel中VBA程序基本语法之强大的数组,了解数组的功能...
  10. 元祖数据mysql_MySQL数据库——表操作