MySQL数据库约束(主键约束,外键约束详解)

news/2023/6/8 0:34:26
关系型数据库的一个重要功能:
需要保证数据的"完整性",可以通过人工的方式来观察确认数据的正确性,这种方式是可行的,但是不合适,因为人为控制的方式势必会存在疏忽,导致一些错误没有被检查出来,所以MySQL数据库定义了一些约束来帮助程序员更好的检查数据的正确系!

一,约束的类型

类型

说明

NOT NULL

指定某列不能存储NULL值

UNIQUE

保证某列的每行必须有唯一的值

DEFAULT

规定没有给列赋值时的默认值

PRIMARY KEY

(主键)

NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录

FOREIGN KEY

(外键)

保证一个表中的数据匹配另一个表中的值的参照完整性

CHECK

保证列中的值符合指定的条件;对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句

二,NOT NULL

代表某个字段不能存储NULL值

在创建student表时,对name字段加入了not null约束,id字段没有加入not null约束,所以查看表结构时,id字段允许为空,而name字段不允许为空;

插入数据时,id列为NULL时插入成功,name列为NULL时,插入失败(提示name列不可以为null)

三,UNIQUE

保证某列的每行必须有唯一的值,当某一个字段插入重复的数据时会报错

在创建student表时,对id字段加入unique约束,所以在查看表结构时,id字段不允许插入重复的数据

第一次插入id为1的数据时插入成功,第二次插入id为1的数据时提示id字段有重复的数据1,插入失败

四,DEFAULT

规定没有给列赋值时的默认值,查询时未指定的列会赋上默认值

通过查看表结构之后可以看见,id和name两个字段的默认值均为null,所以未赋值时会自动赋上null值

对id和name两个字段均不赋值是,查询结果均为默认值null

五,PRIMARY KEY(主键约束)

NOT NULL 和 UNIQUE 的结合,表示某字段不能为空值,且该字段不能插入重复的数据,否则均会报错

创建表时对id字段加入primary key约束,之后对id字段插入数据必须满足既不能为空也不能重复

当id字段插入null或者插入重复数据1时,均会报错

总结:

  1. 实际开发中,大部分的表一般都会带有一个主键,主键往往是一个整数表示的id;

  1. 在mysql中,一个表里只能有一个主键,否则会报错

  1. 虽然主键不能有多个,mysql允许把多个列放在一起共同作为一个主键(联合主键);

  1. 主键另一个非常重要的用法,就是使用mysql自带的"自增主键(auto_increment)"作为主键的值;

此时对id字段创建了一个自增主键的约束,插入时直接赋值null时,mysql会自动查找到上次插入的id字段数据然后给本次的id字段赋值+1

此时id会自动增加!

六,FOREIGN KEY(外键约束)

保证一个表中的数据匹配另一个表中的值的参照完整性,针对两个表产生的约束

假设有两个表,一个是学生表(包含学生id,name,classID字段),一个是班级表(id,name字段),如果学生表中的班级ID不是班级表中ID中的数据就认为是非法数据,为了让mysql帮我们自动完成检查工作,就引入了"外键约束"!

班级表:

学生表:

此时说明student表中的classID务必要在class表的id列存在!

当往学生表的classID字段插入100时报错(外键约束插入失败)

总结:

  1. 此时这里的class表相当于父表,student表相当于子表,父表的约束相当子表,父表的数据对字表有一定约束,要求字表的数据必须在父表中存在

  1. 子表的数据也对父表的数据有一定的约束,要求删除表时要先删除子表,再删除父表

  1. 外键的创建,就要求父表对应的列得有primary key或者unique约束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4559527.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

年轻人要学会做投资

题图来自:Unsplash-Ricardo Wu为什么要学投资?因为需要不断让自己增值,逆水行舟不进则退。投资自己,让自己获得知识、能力的增长;投资金钱,让财富取得稳步增长,钱放在银行吃利息只会让钱越来越不…

量化学习 | 统计套利 Review and Outlook(收藏)

文章转自tang的知乎专栏 |《Statistical Arbitrage Pairs Trading Strategies, Review and Outlook 》 Author:Drauss Christopher 00、主要内容 从5大主流策略,分析统计套利策略的发展历史,各个算法的优缺点及可能改进方案,为…

Android之通过向WebService服务器发送XML数据获取相关服务

原理图如下: 即客户端向WebService服务器通过HTTP协议发送XML数据(内部包含调用的一些方法和相关参数数据),然后WebService服务器给客户端返回一定的XML格式的数据,客户端通过解析这些XML数据即可得到需要的数据。具体…

PPT带备注演示

PPT带备注演示 (带备注演示,讲解者可以看到备注,观众看不到) PPT带备注的演示,这种方式只有讲解者自己能够看到备注内容,而观看PPT演示的人看不见,如下图所示: 使用这种模式进行PPT的演示,不仅可以缓解演讲…

ThreeDXF预览DXF文件集成到vue项目中

由于网上资料都是html的,而自己需要嵌入到vue项目中,查找资料都是在index.html引入script脚本,在写到Vue文件中,但是我尝试过了,各种报错,找不到,window. 根本无法用,于是改注入main…

第一篇——胡咧咧之动漫素材如何最有效最快的查找下载,动漫网站有哪些?

第一篇——胡咧咧之动漫素材如何最有效最快的查找下载,动漫网站有哪些? 大家好,我是祥小和,喜欢我的可以点赞收藏,让我去吃灰了,鼓掌。。。 我之所以写博客,是因为我记性不太好,难…

清空某个特定网站的缓存

需要F12打开调试面板,右键刷新按钮

wordpress网站地图自动生成

首先来说一下生成网站地图有什么好处。 1.为搜索引擎蜘蛛提供可以浏览整个网站的链接 2.为搜索引擎蜘蛛提供一些链接,指向动态页面或者采用其他方法比较难以到达的页面 3.作为一种潜在的着陆页面,可以为搜索流量进行优…