mysql数据库创建表加主外键_[数据库]MySQL创建数据表并建立主外键关系

[数据库]MySQL创建数据表并建立主外键关系

0 2018-07-04 01:01:25

为mysql数据表建立主外键需要注意以下几点:

需要建立主外键关系的两个表的存储引擎必须是InnoDB。

外键列和参照列必须具有相似的数据类型,即可以隐式转换的数据类型。

外键列和参照列必须创建索引,如果外键列不存在索引,mysql将自动创建索引。

一、SQL语句创建数据表并设置主外键关系create table demo.ChineseCharInfo( ID int not null auto_increment, Hanzi varchar(10) not null, primary key (ID))engine=innodb auto_increment=1 default charset=utf8 collate=utf8_general_ci; create table demo.ChinesePinyinInfo( ID int not null auto_increment, CharID int null, Pinyin varchar(10) null, Tone tinyint unsigned null, primary key (ID), -- 方式一:不指定外键名称,数据库自动生成 foreign key (CharID) references ChineseCharInfo(ID) on delete cascade on update cascade -- 方式二:指定外键名称为(FK_Name) -- constraint FK_Name foreign key (CharID) references ChineseCharInfo(ID) on delete cascade on update cascade )engine=innodb auto_increment=1 default charset=utf8 collate=utf8_general_ci;

二、当数据表已经存在时,就要使用下面的方法建立主外键关系-- 为表(demo.ChinesePinyinInfo)中字段(CharID)添加外键,并指定外键名为(FK_Name)alter table demo.ChinesePinyinInfo add constraint FK_Name foreign key (CharID) references ChineseCharInfo(ID);-- 为表(demo.ChinesePinyinInfo)中字段(CharID)添加外键,不指定外键名,由数据库自动生成外键名alter table demo.ChinesePinyinInfo add foreign key (CharID) references ChineseCharInfo(ID);

三、删除主外键约束-- 通过修改列的属性来删除自增长,第一个(ID)为原列名,第二个(ID)为新列名alter table demo.ChinesePinyinInfo change ID ID int not null;-- 删除表(demo.ChinesePinyinInfo)中的主键约束,如果主键列为自增列,则需要先删除该列的自增长alter table demo.ChinesePinyinInfo drop primary key; -- 删除表(demo.ChinesePinyinInfo)中的名称为(FK_Name)的外键alter table demo.ChinesePinyinInfo drop foreign key FK_Name;

四、主外键关系的约束

如果子表试图创建一个在主表中不存在的外键值,数据库会拒绝任何insert或update操作。

如果主表试图update或者delete任何子表中存在或匹配的外键值,最终动作取决于外键约束定义中的on delete和on update选项。

on delete和on update都有下面四种动作。cascade:主表删除或更新相应的数据行,则子表同时删除或更新与主表相匹配的行,即级联删除、更新。set null:主表删除或更新相应的数据和,则子表同时将与主表相匹配的行的外键列置为null。当外键列被设置为not null时无效。no action:数据库拒绝删除或更新主表。restrict:数据库拒绝删除或更新主表。如果未指定on delete或on update的动作,则on delete或on update的默认动作就为restrict。

本文网址:http://www.shaoqun.com/a/354768.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

MYSQL

0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值