当前位置: 首页 > news >正文

MySQLQ_数据库约束

目录

  • 什么是数据库约束
  • 约束类型
  • NOT NULL 非空约束
  • UNIQUE 唯一约束
  • PRIMARY KEY主键约束
  • FOREIGN KEY外键约束
  • CHECK约束
  • DEFAULT 默认值(缺省)约束


什么是数据库约束

数据库约束就是对数据库添加一些规则,使数据更准确,关联性更强
比如加了唯一值约束,就避免了人工检查的成本,大大降低了时间成本和风险

约束类型

NOT NULL 非空约束

加了非空约束的列不能为NULL值
如果预见某个列不能为空,建议家费控约束,会对查询功能产生积极的影响
用法:
在这里插入图片描述
加了非空约束后就不能加入空值

UNIQUE 唯一约束

指定了唯一约束的列,该列的值在所有记录中不能重复,比如一个人的身份证号
unique 值限制唯一,不限制空
只加了唯一约束的列可以写入多个null

测试用例:
在这里插入图片描述
校验:id 重复定义

PRIMARY KEY主键约束

主键约束唯一标识数据库中的每条记录(唯一)
主键必须包含唯一的值,且不能包含null值(非空)
每个表只能有一个主键,一个主键可以由单个列或多个列组成
通常每张表都指定一个主键,逐渐建议使用BIGINT类型

测试用例:
在这里插入图片描述
非空且唯一(与unique not null 不同),primary key 是数据库表的一个特性,数据如何组织依赖主键

通常把主键列设置为自动增长(auto_increment),让数据库维护主键
像这样写入数据时,不用人为的去维护主键值
在这里插入图片描述

这里的id系统自动维护
注意:写入自增数据id 后,对自增值写入null,表示id继续自增,null不影响自增属性 但是用户明确指定了一个数,这个数就会写入数据表中,下一次自增从最大值继续自增
比如先写入100,再写入4,最后自增是从最大值100往后自增

如果想一个主键包含两个列,就单独开一行
在这里插入图片描述
两个形成复合主键只要两个不同时重复就能创建
表中只能有一个自增列
auto_increment 属性只能用于定义为 PRIMARY KEY 或者 UNIQUE 的列
为自增主键指定null时,只起到一个占位作用

如果主键出现冲突,对主键进行修改(replace into)
使用:
在这里插入图片描述

FOREIGN KEY外键约束

外键用于定义主表和从表之间的关系
外键约束主定义在从表上,主表关联的列必须是非空唯一约束
从表和主表关联的列必须有对应关系(相同值)

外键约束也是对数据的一种校验
从表中使用了主表中的某个值,这个值必须存在于主表中

语法
【在从表中创建】
【从表外键类型和主表保持一致】

foreign key (从表列) references 主表表名(主表列);

如果不符合外键约束,就会报错【从表建的一条数据的外键不在主表内】
【如果要删除主表中的数据,则必须把从表中关联数据删了,或者删除外键关系】

CHECK约束

可以应用于一个或多个列,用于限制列中可接受的数据值,从而确保数据的完整性和准确性

举例:
在这里插入图片描述
【因为创建的age小于18,不符合check约束,所以报错】
也可以不同的两个列比较

DEFAULT 默认值(缺省)约束

default 约束用于向列中插入默认值,如果没有为列设置值,那么会将默认值设置到该列

在这里插入图片描述
【没有填age信息默认填入18】
【有指定值就以指定值为准】

相关文章:

  • Android系统通知机制深度解析:Framework至SystemUI全链路剖析
  • 4.15学习总结
  • Java 基本操作快速入门:理解与实践
  • 编程语言到mysql ‘\‘到数量关系
  • c++模版进阶
  • 11.第二阶段x64游戏实战-框架代码细节优化
  • mysql按条件三表并联查询
  • C语言进阶之自定义类型:结构体,枚举,联合
  • 关于TD算法的笔记【时间差分】
  • 小程序接口使用时,HttpOnly cookie 中的 sameSite 设置什么最合适
  • Redis入门(Java中操作Redis)
  • JavaWeb 课堂笔记 —— 11 MySQL 多表设计
  • HashMap为什么从java8的时候从头插变为尾插了
  • 利用代理 IP 突破反爬限制,实现跨境电商数据高效爬取
  • C++: Initialization and References to const 初始化和常引用
  • 数字ic后端设计从入门到精通(含fusion compiler, tcl教学)
  • C语言自定义类型详解一:结构体(内存对齐)
  • 数据结构(六)——红黑树及模拟实现
  • Linux系统编程 day2
  • 4月15日星期二今日早报简报微语报早读
  • 用户称被冒用身份证异地办卡申请注销遭拒,澎湃介入后邯郸联通着手办理剥离
  • 十四届全国人大常委会第十五次会议将于4月27日至30日举行
  • 涉嫌在饭局后性侵一女子,湖南机场董事长邱继兴被警方刑拘
  • 铁路12306开售5月1日车票,目前系统安全平稳运行
  • 打捞一条文学传统的暗线
  • 阿坝州市监局公布一批典型案例,有加油站篡改加油枪计量器