MySQL数据库的约束

MySQL对于数据库存储的数据, 做出一些限制性要求, 就叫做数据库的"约束".

在每一列的 列名, 类型 后面加上"约束".

一. not null (非空)

指定某列不能存储null值.

二. unique (唯一)

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

我们可以看到, 给 table 的 sn 列插入两次 77 , 结果就会出现报错:"Duplicate entry(重复的条目)".

三. default (默认值)

default 用于指定默认值.

如上图, id 的默认值为null, 而由于我们手动给name指定了默认值, 所以name列的默认值是"无名".

四. primary key (主键)

primary key 主键 : 约定了这个表的某个列为++"身份标识"++.

从上图我们可以看到, id 被指定为primary key.

主键的性质:

(1)非空性 : 被指定为主键的列不能为空(null), 数据表的++每条记录都必须有一个主键值++.

(2) 唯一性 : 被指定为主键的列的值必须是++唯一的++, 不能有重复.(每条记录的主键列都是不同的值).

++主键(primary key)既有非空性(not null), 又有不可变性(unique)++ . primary key = not null + unique.

(3) 不可变性: 一旦某个记录的主键被设定, 它就不能更改.

(4) 复合主键 : 虽然通常只指定一个列为主键, 但是++MySQL也支持使用多个列组合作为主键++。

(5) 自增主键 : auto_increment , 被设置为自增主键的列,当你向表中插入新记录时,不需要为这个列指定值,MySQL会++自动为它生成一个值++. (注意: 自增主键只能针对像int, bigint这样的整数 指定).

(6) 作为索引 : 被指定为主键的列会++自动创建唯一缩索引++ , 有助于快速检索表中的记录.

五. foreign key (外键)

外键(foreign key)是一种用于**++建立两个表之间关系的约束++** 。它确保了表中的某个列的值必须存在于另一个表的++主键或唯一键字段++ , 外键通常++用于将多个表连接在一起++.

(注意: 数据表中的列我们又称为字段)

例如:

我们在这里往student表里插入数据时, 给classid列插入的值就必须是在class表中存在的.

如上图所示, 往student表中插入class中存在的数据, 都没问题. 但是如果插入在class中没有的数据, 就会报错. 这就是主键的作用.

关于外键的一些关键点:

  1. 关联性 : 子表的外键必须与父表中相应的主键或唯一键字段类型相匹配。

  2. 相互约束 : ++父表约束了子表, 子表也会对父表进行反向约束++ . (例如: 如果父表中的某个记录被子表引用了, 此时就不能删除/修改父表中相应的记录了). 解决方案: 在创建外键约束时,可以指定 ON DELETE CASCADEON UPDATE CASCADE 选项,这样当父表中的记录被删除或更新时,子表中的相关记录也会自动被删除或更新。

所以, 在删除表的时候, 我们要++确保先删除子表, 再删除父表++. 否则父表无法删除.

先删父表 --> 无法正常删除.

先删子表 -->正常删除

以上就是本篇博客的全部内容啦,如果喜欢小编的文章,可以点赞,评论,收藏~

相关推荐
橘子131 分钟前
MySQL库的操作(二)
数据库·mysql·oracle
todoitbo39 分钟前
多模数据库技术解析:以KingbaseES MongoDB兼容版为例
数据库·mongodb·kingbasees·金仓数据库
正在走向自律41 分钟前
ksycopg2实战:Python连接KingbaseES数据库的完整指南
数据库·python·国产数据库·kingbase·kingbasees·数据库平替用金仓·ksycopg2
廋到被风吹走43 分钟前
【数据库】【MongoDB】全栈深度指南:文档模型到分布式集群
数据库·分布式·mongodb
·云扬·1 小时前
MySQL各版本核心特性演进与主流分支深度解析
数据库·sql·mysql
砚边数影1 小时前
AI开发依赖引入:DL4J / Java-ML 框架 Maven 坐标配置
java·数据库·人工智能·深度学习·机器学习·ai·maven
砚边数影1 小时前
AI环境搭建(一):JDK17 + Maven 配置,Java开发环境标准化流程
数据库·人工智能·ai·ai编程
檀越剑指大厂1 小时前
金仓数据库以“多模融合”引领文档数据库国产化新篇章
数据库
煎蛋学姐1 小时前
SSM星河书城9p6tr(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·用户管理·ssm 框架·星河书城·线上书城
jason成都2 小时前
实战 | 国产数据库 R2DBC-JDBC 桥接踩坑记 - JetLinks适配达梦数据库
java·数据库·物联网