千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,前言为mysql数据表建立主外键需要注意以下几点:需要建立主外键关系的两个表的存储引擎必须是InnoDB。外键列和参照列必须具有相似的数据类型,即可以隐式转换的数据类型。外键列和参照列必须创建索引,如
千家信息网最后更新 2026年11月01日MySQL创建数据表并建立主外键关系详解

前言

为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。

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

数据 更新 数据库 动作 数据表 名称 索引 同时 字段 方式 类型 自动生成 增长 生成 相似 两个 内容 前言 取决于 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 互联网科技公司排名 鸠鸠互联网科技 互联网科技公司税收优惠 互联网科技资迅 互联网科技开发公司 互联网科技的发展 西安互联网科技公司 成都玖崟互联网科技有限公司乐商圈怎么样 阿里巴巴算科技企业还是互联网 来此购互联网科技有限公司 互联网软件和科技 湖北码尼互联网科技有限公司电话 亳州好赞互联网科技有限公司 众安科技工业互联网合作 广州智享互联网科技 互联网科技收购价值 广西泛欧互联网科技有限公司 深圳互联网科技园地址 现代科技的标志之一的互联网 西安互联网科技 宜安科技 互联网金融 小马过河互联网科技 美国互联网前沿科技 互联网实体化科技化 互联网为啥属于高科技 彤创互联网科技有限公司 崇明区互联网教育科技售后服务 从那以后互联网科技有限公司 济南小医互联网科技有限公司招聘
0