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 选项,这样当父表中的记录被删除或更新时,子表中的相关记录也会自动被删除或更新。

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

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

先删子表 -->正常删除

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

相关推荐
NCIN EXPE1 小时前
redis 使用
数据库·redis·缓存
MongoDB 数据平台1 小时前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
极客on之路2 小时前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家2 小时前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE2 小时前
开启mysql的binlog日志
数据库·mysql
yejqvow122 小时前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
oLLI PILO2 小时前
nacos2.3.0 接入pgsql或其他数据库
数据库
m0_743623922 小时前
HTML怎么创建多语言切换器_HTML语言选择下拉结构【指南】
jvm·数据库·python
pele2 小时前
Angular 表单中基于下拉选择动态启用字段必填校验的完整实现
jvm·数据库·python