
👦个人主页:@Weraphael
✍🏻作者简介:目前学习计网、mysql和算法
✈️专栏:MySQL学习
🐋 希望大家多多支持,咱一起进步!😁
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注✨
前言
在数据类型篇章,我们证明了数据类型本身就是一种约束!通过约束,数据库可以保证数据的合法性和准确性,避免不合法或无效的数据进入数据库。但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是
- 表的约束很多,这里主要介绍如下八个:
- 空属性
null/not null- 默认值
default- 列描述
commentzerofill- 主键
primary key- 自增长
auto_increment- 唯一键
unique key- 外键
目录
一、空属性null/not null
在 MySQL中,当创建表时,可以使用 null 或 not null 来定义列是否允许存储null值。
null:表示该列可以存储null值。not null:表示该列不允许存储null值。
注意:如果不明确指定列的空属性,默认情况下,列的默认值就是null值。如果希望某列不允许为空,则需要显式地将其设置为 not null。
- 注意:区分空值
``和null值在
MySQL中,空值表示字段中没有具体数值或内容,但仍然有数据类型;而null值表示缺少值或未知值,实际上是真的没有值。
【语法】
字段 数据类型 [not null];
这种约束其实在生活中非常常见,比如要报考四级,那么就必须去官网报名,而报名的前提就是要注册。当我们看到注册列表前有*,那么说明此信息必填,如果有其中一个不填,那么系统就不让你注册,这就是空属性的约束。

【使用案例】
创建一个班级表供学生使用,包含班级名、班级所在的教室和授课老师。
站在正常的业务逻辑中:
- 如果班级没有名字,你不知道你在哪个班级。
- 如果教室名字可以为空,就不知道在哪上课。
- 而老师学生一般不怎么关心,只要能到班级上课就行
所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。这就是 【约束】
- 建表

- 查看表结构

YES代表字段的值可以为空null,而NO代表字段的值不可为null
- 向表中插入数据

如果不对class_name和class_room插入元素或者插入的值为null,那么必定会触发错误。

二、默认值default
在MySQL数据库中,可以为表中的列设置默认值。它的作用是:如果没有为该列提供值,将会自动使用默认值填充该列(默认情况下,列的默认值就是null值),如果有则使用用户提供的值。(类似于C++的默认参数)
【用法】

如果不对gender字段插入指定数据,那么就会使用默认值'男'

三、列描述comment
在MySQL中,使用comment关键字可以为字段添加描述信息,以便记录该列的含义、用途或其他相关信息。这些描述信息对于开发人员、数据库管理员和其他使用者来说都是非常有用的,可以帮助他们更好地理解和使用数据库表的结构。(本质上就是注释)
在MySQL中,可以通过以下方式为列添加描述:

那么开发人员要如何查看这些描述信息呢?使用以下命令
show create table [表名] \G
# \G - 人性化显示

四、zerofill
在MySQL中,zerofill 是一种列属性,一般用于无符号整型数据类型。其作用是:在显示数值型字段时,在该字段值的前面填充零,以达到指定的位数。这主要用于美化数据展示和保持数据的一致性。(本质上就是格式化输出)
【语法】
# 以int整型为例
字段 int(num) unsigned zerofill
一般情况下,其中num表示字段的显示宽度,即显示的最大位数。如果不显示指定num,默认num = 10
【使用案例】
例如,如果创建了一个表d9,并且指定了一个 zerofill 属性的整数列,当在该列中插入一个数字时,MySQL会用零来填充该数字,直到达到指定的位数。这样有助于保持数据的可读性和一致性。

最低0.47元/天 解锁文章
1166

被折叠的 条评论
为什么被折叠?



