mysql添加约束_fk_MySQL中外键的创建、约束以及删除
前言
在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。
外键的使用条件:
1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);
2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;
3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;
外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作;
一、外键的创建
语法一:后续添加方法
alter table 表名 add constraint 约束名 foreign key(当前表中约束的字段) references 主表表名(要约束的字段名);
alter table student add constraint fk_class_student foreign key(cls_id) class(cls_id) on update cascade on delete no action;
语法二:创建表的方法
CREATE TABLE student(
sid int PRIMARY KEY,
cls_id int not null,
sname varchar(10) not null,
constraint fk_class_student foreign key(cls_id) references class(cls_id) on update cascade on delete no action
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
一个额外点:
SHOW CREATE TABLE class
可以查询表的建表信息
CREATE TABLE `class` (
`cls_id` int NOT NULL,
`cls_name` varchar(15) NOT NULL,
PRIMARY KEY (`cls_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
下面的演示我们就使用刚刚创建的这个学生表和班级表
内容如下
二,关于四种约束方式
在父表上进行update/delete操作时,子表的操作类型
CASCADE 子表会删除包含与已删除键值有参照关系的所有数据
SET NULL 父表delete、update的时候,子表会将关联记录的外键字段所在列设为null
RESTRICT 拒绝有关联关系的字段的删除要求(这是默认设置,也是最安全的设置)
NO ACTION 和RESTRICT 类似
以我们刚刚设置的外键为例(on update cascade on delete no action)
当我们尝试进行删除操作时
delete from class WHERE cls_id=1
结果如下
可以看到由于外键约束中on delete no action的存在,不允许对主表进行删除操作。但是子表可以
delete from student WHERE cls_id=1
当我们对父表的关联键进行更新操作时,由于on update cascade的存在,可以正常更新
UPDATE class set cls_id=4 where cls_id=1
并且随着主表的更新,子表中的外键字段也进行了更新
三,删除外键的方法
alter table 子表名 drop foreign key 外键约束名
alter table student drop foreign key fk_class_student
当我们将外键删除之后,父表的操作就变得可以正常进行了
总结
到此这篇关于MySQL中外键创建、约束以及删除的文章就介绍到这了,更多相关MySQL外键创建、约束及删除内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
mysql添加约束_fk_MySQL中外键的创建、约束以及删除相关推荐
- mysql 外部键约束名_MySQL中外键的创建、约束以及删除
前言 在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束. 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前 ...
- 主键约束、主键自增约束、唯一约束、非空约束、外键约束
1. 约束的概念和分类 约束:对表中的数据进行限定,保证数据的正确性.有效性.完整性! 约束分类: 约束 说明 PRIMARY KEY 主键约束 PRIMARY KEY AUTO_INCREMENT ...
- MySQL添加新用户、为用户创建数据库、为新用户分配权限
https://blog.csdn.net/u013216667/article/details/70158452 登录MySQL mysql -u root -p 添加新用户 允许本地 IP 访问 ...
- MYSQL添加新用户,为用户创建、分配数据库
MySQL中创建用户分配权限(到指定数据或者指定数据库表中) 图形化操作 一.用户权限指定导库: 1 新建用户 用户->添加用户->只需要填写登录信息即可(下看看个人情况进行填写) 这样就 ...
- mysql添加用户,设置权限,回收权限,删除用户详解
简言 1. mysql的用户信息,权限管理等很简单,在数据库mysql的表user中可以查询,操作 示例 1. 创建用户,带密码,同时限制登录IP 模板:create user '新用户名'@'loc ...
- 主键约束、外键约束、唯一约束、检查约束、默认值约束实例
http://xinxinyin666.i.sohu.com/blog/view/226237927.htm 主键(primary key)约束.外键(foreign key)约束.唯一(unique ...
- Mysql系列之创建用户、删除用户、修改密码
文章目录 1. 登录mysql 1.1 远程登录mysql 2. 创建用户 2.1 创建本地用户 2.2 创建外网可访问用户 2.3 刷新授权 3. 修改用户密码 3.1 修改本地用户密码 3.2 修 ...
- MySql基础篇---003 SQL之DDL、DML、DCL使用篇:创建和管理表 ,数据处理之增删改,MySQL数据类型精讲 ,约束:联合主键
第10章_创建和管理表 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步.只有正确地 ...
- mysql建表时外检怎么创建_MySQL创建表时加入的约束以及外键约束的的意义
1,创建表时加入的约束 a) 非空约束,not null b) 唯一约束,unique c) 主键约束,primary key d) 外键约束,foreign key 1,非空约束,针对某个字段设置其 ...
最新文章
- java Collection-Map 之 TreeMap
- java selenium (十四) 处理Iframe 中的元素
- Javascript 类型转换
- Windows Phone Developer Tools 下载地址
- php中拼接html代码,如何利用ajax给html动态拼接代码
- 计算机应用基础课程编制标准,计算机应用基础课程标准.doc
- 开启mongodb数据库命令行_【赵强老师】使用MongoDB的命令行工具:mongoshell
- 虚拟机的三大服务器启动不了,Win7系统下共享虚拟机提示VMware Workstation Server共享服务不能启动如何解决?...
- IplImage 封装释放
- 51nod-1358:浮波那契
- 客户端主机自查DNS故障及应急解决办法
- CentOS 6系统FreeSwitch和RTMP服务 安装及演示(四)
- linux 卸载JDK(rpm 方式安装的)
- 简单代码实现LCD菜单(C语言的实现方法---加强版 有视频教程)
- debian6安装nvidia GT620显卡 驱动
- 华为交换机配置时区_华为交换机配置命令
- 爬虫大作业~以爬取hao123漫画为例
- 源码资本宣布完成人民币四期38亿新基金募集
- 计蒜客 17115 2017 ICPC 西安网络赛 B Coin
- 从零开始的MySQL教程——上