mysql外键约束创建及删除_mysql笔记(12)-外键约束的添加和删除

本文将简单介绍外键的作用,添加/删除外键的方式,以及on update从句的使用

一、外键的定义和作用

1、定义

若有关系表R和S,对于R中的属性A,A的任何值都来源于S中的属性B的值,且B具有UNIQUE约束,则A被称为R的外键

2、作用

(1) 能预防破坏表之间连接的行为

(2) 能防止非法数据插入外键所在的列,因为它必须是它指向的那个表中的值之一

二、添加外键约束

1、在建表时添加

create table table_name{

xxx xxx xxx,

xxx xxx xxx,

xxx xxx xxx,

FOREIGN KEY(column_name) references table_name(column_name);

在建表语句的最后一句指明外键所在的列,并指明它指向哪个表的哪个属性

2、表结构已存在时添加

alter table table_name

add FOREIGN KEY(column_name)

references table_name(clolumn name);

三、删除外键约束

需要先通过查看建表语句来获取外键约束的id

show create table table_name \G;

例如 查看student表中外键dept_name的外键id

ca5a79a537e2ba95eae822f5b5053f29.png

然后再使用 alter+drop 语句来删除外键

alter table student

drop FOREIGN KEY student_ibfk_1;

四、on update 从句

在添加外键约束时,可以在语句末尾添加 on update 从句

从而指定 当被参照列的数据发生更新时 参照列所进行的动作

跟在 on update 后的可选动作有4种:

no action、cascade、set null、set default

下面用具体的例子来说明:

假设有关系表R和S,R中有外键A,参照S中的属性B

(1) no action (不写on update从句时默认采用的动作)

当B的某个值被更新时,检查表R的A列中是否有对应的值

如果有,则发出报错,不允许被更新

(2) cascade

当B的某个值被更新时,检查表R的A列中是否有对应的值

如果有,则同时更新A列中的那个值

(3) set null

当B的某个值被更新时,检查表R的A列中是否有对应的值

如果有,则将A列中的对应值设为空

(4) set default

当B的某个值被跟新时,检查表R的A列中是否有对应的值

如果有,则将A列中的对应值改为事先设定的默认值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值