千家信息网

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

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,前言为mysql数据表建立主外键需要注意以下几点:需要建立主外键关系的两个表的存储引擎必须是InnoDB。外键列和参照列必须具有相似的数据类型,即可以隐式转换的数据类型。外键列和参照列必须创建索引,如
千家信息网最后更新 2025年11月07日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安全错误 数据库的锁怎样保障安全 linux服务器防止cdn攻击 用数据库做什么赚钱系统好 数据库系统故障修复 违反网络安全法处罚 信息软件开发公开招标公告 服务器高级管理员是什么 增城区质量网络技术开发动态 重庆管理系统软件开发有哪些 广东数据服务器云主机 学习网络安全和信息化体会 还原数据库提示操作系统错误 吃鸡游戏服务器怎么分配 深圳鼎盛互联网科技有限公司 广东oa软件开发电话 街头篮球怎么选服务器 西安数据库培训多少钱 无法登陆darksouls2服务器 安徽第三方软件开发哪家正规 数据库安全戴林 华为查找设备服务器 易语言edb数据库教程 图片上传存放数据库 crm营销的关键是数据库应用 数据库外键怎么只显示数字 眼镜行业软件开发的几大特点 昆明分布式服务器方案 文件存储服务器访问量 许昌网络技术询盘推广方案 周口互联网在线科技有限公司 数据库文件的格式转换
0