文档章节

mysql外键约束

itviewer
 itviewer
发布于 2015/05/24 00:11
字数 601
阅读 146
收藏 0
点赞 0
评论 0

概念

外键是我们经常使用的数据库约束方式。它保证了子表上的特定索引列取值一定与父表列(主键列)相一致对应。而且保证在子表没有对应子记录的情况下,父表数据才能删除。应该说,外键是实现数据库完整性、消除潜在脏数据风险的重要手段。

 

在使用外键的时候,我们经常会要求在子表外键列上建立索引。


如下图,在admin表里建立外键,并设置参考(phpmyadmin里叫做链接到)表的字段为 删除时 NO ACTION时,是指

当参考(链接到)的表发生删除操作时,如果admin表存在和user表里字段相等的记录,则禁止参考的表进行删除操作。

但如果是删除admin表里的记录,user表如果没有对应约束的话,则会删除admin里的记录,user表里的记录不受影响

其关系类似父子关系,外键参考的表属于父亲,当前外键的表属于孩子,删除时孩子不会对父亲产生影响。

另外,当更新(ON UPDATE)约束如果没有设置时,默认为RESTRICT(phpmyadmin不显示),如果想在admin表里直接插入一条user里没有记录的记录,则会提示“can not add or delete a child row”错误,即当添加数据时,参考的表里必须有对应的记录才可操作。


从以上关系可以推断出 外键约束 不能双向约束,只能单向,比如,如果想实现user表里删除记录时对应删除admin表,同时删除admin表记录时对应删除user表中的记录,是不可能的

使用

一个表里多个字段对参考表里同一字段建立外键关联貌似不可用

外键的使用有利有弊,好处是可以减轻数据库垃圾的产生,弊端是需要特定数据库支持,带来移植不便,再就是一些确实需要约束的关联不能简单的通过mysql自己实现,必须要在业务上进行提示处理,比如删除一个栏目时,栏目下的文章不能简单的通过外键约束全部删除,必须要手动处理。

© 著作权归作者所有

共有 人打赏支持
itviewer
粉丝 15
博文 215
码字总数 44472
作品 0
海淀
技术主管
MySQL学习笔记一

MySQL目录结构 配置my.ini MySQL5.7的my.ini位于ProgramDataMySQLMySQL Server 5.7目录下(可能有的版本的my.ini就在安装目录下),该该目录下还有一个data目录存放我们的创建的数据库。 打开...

Aaron_DMC ⋅ 2016/12/16 ⋅ 0

SQL 的约束

说明:文章所有内容均截选自用户“实验楼包工头”发布在实验楼上的教程【MySQL 基础课程】,想要详细的学习SQL,点击教程即可免费学习了;未经允许,禁止转载; 约束是一种限制,它通过对表的...

实验楼 ⋅ 2017/11/22 ⋅ 0

MySQL常见建表选项及约束

一、CREATE TABLE 选项 1、在定义列的时候,指定列选项 1)DEFAULT :定义列的默认值   当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认值,将自动得到默认值 ;如果没...

jjjyyy66 ⋅ 2017/05/15 ⋅ 0

三、数据表的基本操作

3.1、创建数据表 创建数据表指的是在已经创建好的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(实体完整性、引用完整性、域完整性)约束的过程。 创...

运维菜鸟丶 ⋅ 2017/07/30 ⋅ 0

Mysql列的增删改

ALTER TABLE:添加,修改,删除表的列,约束等表的定义。 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table 表名 add column 列名 varchar(30); 删除列...

孟飞阳 ⋅ 2016/12/17 ⋅ 0

msyql数据表的操作

MySQL 添加列,修改列,删除列 ALTER TABLE:添加,修改,删除表的列,约束等表的定义。 查看表结构:desc 表名; 修改表名:alter table 表名 rename to 新表名; 添加列:alter table 表名 ...

笔下生辉 ⋅ 2017/03/31 ⋅ 0

MYSQL的外键约束!搞不懂!

MYSQL的外键约束, CREATE TABLE tb_emp5( ); 这里的外键约束是指的约束完以后就可以select * from xxx;就直接可以查出来两张表关联数据? 还有百度查资料这个外键约束只支持innodb? 一般p...

kaysen ⋅ 2012/09/27 ⋅ 7

Mysql索引与键

0.主键与索引的不同 主键在物理层面上只有两个用途: 惟一地标识一行;作为一个可以被外键有效引用的对象。 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着...

a_liujin ⋅ 2016/06/30 ⋅ 0

数据库简介

1 什么是数据库 1)SQL=Structure Query Language 2)存数据的仓库/集合,并有一定的规则结构 3)SQL是客户端操作数据库一种工具/命令,主要以存取为主 2 各种常用数据库简介 Oracle/Java 一个G...

chenruibing ⋅ 2015/06/15 ⋅ 0

MySQL 添加列,修改列,删除列

ALTER TABLE:添加,修改,删除表的列,约束等表的定义。 查看列:desc 表名; 修改表名:alter table tbook rename to bbb; 添加列:alter table 表名 add column 列名 varchar(30); 删除列:...

蚂蚁也疯狂 ⋅ 2014/01/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Boot整合模板引擎thymeleaf

项目结构 引入依赖pom.xml <!-- 引入 thymeleaf 模板依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId......

yysue ⋅ 16分钟前 ⋅ 0

ConstraintLayout使用解析

AndroidStudio3.0创建Project默认的布局就是ConstraintLayout。 AndroidStudio3.0前的可以自己修改,使用ConstraintLayout。 为了要使用ConstraintLayout,我们需要在app/build.gradle文件中...

_OUTMAN_ ⋅ 27分钟前 ⋅ 0

OSChina 周三乱弹 —— 这样的女人私生活太混乱了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 胖达panda :你经历过体验到人生的大起大落吗?我一朋友在10秒内体验了,哈哈。@小小编辑 请点一首《almost lover》送给他。 《almost love...

小小编辑 ⋅ 今天 ⋅ 9

自己动手写一个单链表

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对...

公众号_好好学java ⋅ 今天 ⋅ 0

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部