MySQL创建数据表并建立主外键关系详解
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,前言为mysql数据表建立主外键需要注意以下几点:需要建立主外键关系的两个表的存储引擎必须是InnoDB。外键列和参照列必须具有相似的数据类型,即可以隐式转换的数据类型。外键列和参照列必须创建索引,如
千家信息网最后更新 2024年11月25日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安全错误
数据库的锁怎样保障安全
华为存储服务器usb启动设置
计算机网络技术(学制两年)
数据库包括哪三级模式各自的作用
数据库表更新视图同步更新
按范围删除数据库
互联网科技基础
服务器无限重启
ktv点歌服务器怎么连接
空间数据库 考试题
天基宽带 网络技术
新罗区梦理糖网络技术工作室
创建的服务器如何读取网页
关闭服务器的防火墙命令行
北仑一站式软件开发外包
滴滴程维软件开发
论文查重数据库更新有什么影响
服务器出现press怎么办
查找苹果手机数据库
计算机网络技术专用语言怎么发音
网络安全人才新政策
软件开发商标分类明细
服务器和交换机用什么类型端口
防假期沉溺网络安全教育
数据库 2017
网络安全的小论文题目
服务器机柜灯
查看表格数据库语句
朗读网络安全预防诈骗
调查问卷制作软件开发
提高网络安全意识案例分析题