mysql--外键(froeign key)
如果一个实体的某个字段指向另一个实体的主键,就称为外键
被指向的实体,称之为主实体(主表),也叫父实体(父表)。
负责指向的实体,称之为从实体(从表),也叫子实体(子表)
作用:
用于约束处于关系内的实体
增加子表记录时,是否有与之对应的父表记录
如果主表没有相关的记录,从表不能插入
先插入主表数据后再插入从表数据:
在删除或者更新主表记录时,从表应该如何处理相关的记录
设置级联操作:
在主表数据发生改变时,与之关联的从表数据应该如何处理
使用关键字:
on update
on delete
来标识
允许的级联动作:
cascade关联操作,如果主表被更新或删除,从表也会执行相应的操作
set null,表示从表数据不指向主表任何记录
restrict:拒绝主表的相关操作
alter table t_student add foreign key (class_id) references t_class (class_id)
on delete set null; # 在删除外键时,将从表的外键值设置为null
修改外键:
先删除这个表的外键,然后再增加
alter table tb_name drop froeign key 外键名称
外键名称在建立外键时可以自定义名称,如果不自定义,会按照mysql自动生成一个名称
show create table tb_name;
alter table t_student drop foreign key t_student_ibfk_1;
删除外键后不会对表中的数据造成任何影响,改变的只是对表的一种约束
alter table t_student add foreign key (class_id) references t_class (class_id)
on delete set null; # 在删除外键时,将从表的外键值设置为null
注:on delete 与on update 可以同时出现,
但在on delete 或on update 后不能同时出现cascade、set null、restrict,只能有一个
关于restrict的外键约束此处没有写,与其他两个一样
restrict:拒绝主表的相关操作,在主表更新或者删除数据时,在从表中存在与主表主键相关的数据,则不允许对主表数据进行更新或者删除
在不设置任何级联关系约束时,主表默认会是restrict
在restrict约束下,如果想要删除主表数据,除了可以删除没有与子表数据相关的数据外,
可以先修改子表中的外键(修改时,外键必须也要关联到主表的主键,否则不能修改成功)
也可以先删除与想要删除的主表数据的子表数据,再去删除此条主表数据
mysql--外键(froeign key)的更多相关文章
- MYSQL外键(Foreign Key)的使用
在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束.外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持): ...
- mysql 约束条件 外键 forigen key 介绍
外键 forigen key作用 :建立表之间的关系 什么是外键 员工信息表有这些字段:id号 姓名 性别 员工所在部门名 部门描述信息 公司有3个部门,但是有1个亿的员工,那意味着 员工所对应的部 ...
- mysql 外键约束备注
梳理mysql外键约束的知识点. 1.mysql外键约束只对InnoDb引擎有效: 2.创建外键约束如下: DROP TABLE IF EXISTS t_demo_product; CREATE TA ...
- MySQL外键之级联
简介 MySQL外键起到约束作用,在数据库层面保证数据的完整性.例如使用外键的CASCADE类型,当子表(例如user_info)关联父表(例如user)时,父表更新或删除时,子表会更新或删除记录,这 ...
- MySQL外键约束On Delete、On Update各取值的含义
主键.外键和索引的区别? 主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 主索引(由关键字PRIMARY定义的索引) ...
- Mysql 外键设置
MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给 ...
- MySQL外键的作用和创建
MySQL外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据.使两张表形成关联,外键只能引用外表中列的值! 我们来建两个表 CREATE TABLE `example1` ( ` ...
- 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
1. 数据库有六大约束 主键(primary key) 外键(foreign key):被参照的键必须有唯一约束或是主键 非空(not null) 默认(default) 检查(check):orac ...
- Mysql外键的使用
MySQL外键(请确保数据库是innodb类型)网上有很多介绍的文章,这里我就凭自己的理解再次整理了下,废话不多说,直入正题哈.外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据 ...
- mysql 外键和子查询,视图
1.mysql 外键约束 建表时生成外键 foreing key ('sid') references' student'('id'); 建表后添加外键 alter table' course ...
随机推荐
- iOS 键盘挡住UITextField
iOS经常使用的两个功能:点击屏幕和return隐藏虚拟键盘和解决虚拟键盘挡住UITextField的方法 iOS上面对键盘的处理非常不人性化,所以这些功能都须要自己来实现, 首先是点击return ...
- css 元素居中方法
目前知道有两种方法 方法一:主要适用于元素未设定高度的情况下. 直接上代码 html: <div class="nav-content"> <ul ng-clic ...
- 超级强大的SVG SMIL animation动画详解
本文花费精力惊人,具有先驱前瞻性,转载规则以及申明见文末,当心予以追究.本文地址:http://www.zhangxinxu.com/wordpress/?p=4333 //zxx: 本文的SVG在有 ...
- Permutations,Permutations II,Combinations
这是使用DFS来解数组类题的典型题目,像求子集,和为sum的k个数也是一个类型 解题步骤: 1:有哪些起点,例如,数组中的每个元素都有可能作为起点,那么用个for循环就可以了. 2:是否允许重复组合 ...
- Android_实现静默安装和卸载应用
转:http://www.cnblogs.com/ondream/archive/2012/04/13/2446138.html 前段时间做了一个批量安装卸载应用程序的小应用,由于安装卸载应用程序的部 ...
- C#性能优化实践 资料整理
缓存(Cache)是性能优化中最常用的优化手段.适用的情况是频繁的获取一些数据,而每次获取这些数据需要的时间比较长.这时,第一次获取的时候会用正常的方法,并且在获取之后把数据缓存下来.之后就使用缓存的 ...
- python运维开发(五)----模块、生成器
内容目录 双层装饰器 字符串格式化 生成器和迭代器 递归 模块 双层装饰器 需求场景介绍: 现有用户登录系统,普通用户能查看自己相关信息的权限,管理员用户能查看所有用户的权限,可以做两个装饰器来实现需 ...
- 【翻译】MVC Music Store 教程-概述(一)
MVC Music Store教程介绍和说明了如何一步步的用ASP.NET MVC 和Visual Web Developer 进行Web开发,教程从最基础的阶段开始,所以对于初级阶段的开发者来说,也 ...
- ES6新特性-----变量和字符串
一.变量 1. LET 我们都习惯用var 来声明变量,现在还可以用let来声明变量,两者的主要区别是作用域:var声明的变量作用域为包围它的函数,而let声明的变量作用域仅在它所在的块中.(在ES5 ...
- 5款免费Windows远程连接Linux桌面软件(VNC客户端)
不论我们出于何种的用途目的,很多朋友有需要用到VNC链接Linux桌面环境,之前老左有分享过VNC Viewer绿色软件,昨天有朋友提出来使用之后登录远程桌面的界面.分辨率等有些色差.流畅程度 ...