gpt4 book ai didi

MySQL创建数据表并建立主外键关系详解

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章MySQL创建数据表并建立主外键关系详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

前言 。

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

  • 需要建立主外键关系的两个表的存储引擎必须是InnoDB。
  • 外键列和参照列必须具有相似的数据类型,即可以隐式转换的数据类型。
  • 外键列和参照列必须创建索引,如果外键列不存在索引,mysql将自动创建索引。

1、SQL语句创建数据表并设置主外键关系 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;

2、当数据表已经存在时,就要使用下面的方法建立主外键关系 。

?
1
2
3
4
-- 为表(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);

3、删除主外键约束 。

?
1
2
3
4
5
6
-- 通过修改列的属性来删除自增长,第一个(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;

 4、主外键关系的约束 。

如果子表试图创建一个在主表中不存在的外键值,数据库会拒绝任何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。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://www.cnblogs.com/Brambling/p/9263377.html 。

最后此篇关于MySQL创建数据表并建立主外键关系详解的文章就讲到这里了,如果你想了解更多关于MySQL创建数据表并建立主外键关系详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com