MySql 外键

经常忘记外键的创建方式,今天给自己做一个笔记吧!

create table t1(

id int primary key auto_increment,

name varchar(128)

)

create table t2(

id int primary key auto_increment,

name varchar(128)

)

create table ft1(

id int primary key auto_increment,

name varchar(128),

t1_id int not null,

t2_id int not null,

foreign key (t1_id) references t1(id)

)

在这里可以通过简单foreign key (t1_id) references t1(id)在创建表的时候建立外键索引

如果在创建表时忘记创建索引, 也可以通过

alter table ft1 add foreign key(t2_id) references t2(id);添加索引


索引的删除:

首先使用show create table ft1 查看表结构

 ft1   | CREATE TABLE `ft1` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(128) DEFAULT NULL,

  `t1_id` int(11) NOT NULL,

  `t2_id` int(11) NOT NULL,

  PRIMARY KEY (`id`),

  KEY `t1_id` (`t1_id`),

  KEY `t2_id` (`t2_id`),

  CONSTRAINT `ft1_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`),

  CONSTRAINT `ft1_ibfk_2` FOREIGN KEY (`t2_id`) REFERENCES `t2` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 


然后使用 alter table ft1  drop  foreign key  `ft1_ibfk_1`;删除外键


on delete on update的联动操作有四种

no action 指定在父表有子表关联时,父表不能做更新或删除操作

cascade 表示父表在更新或者删除时,更新或者删除子表记录(谨慎)

set null 当删除父表记录是, 对应关联字段会被设置为NULL(这个操作需要谨慎, 很可能导致数据丢失)

restrict 指定在父表有子表关联时,父表不能做更新或删除操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值