MySQL(3)—— 约束

本文主要讨论数据库中的约束。

约束是关系数据库的一个重要功能;数据库中的约束是表中数据的限制条件,用于保证数据的完整性和一致性。

约束类型

  • NOT NULL:指示某列不能存储NULL值
  • UNIQUE:保证某列的每行必须有唯一的值
  • DEFAULT:规定没有给列赋值时的默认值
  • PRIMARY KEY:确保某列有唯一标识,有助于更容易更快速地找到表中的一个特定的记录
  • FOREIGN KEY:保证一个表中的数据匹配另一个表中的值的参照完整性
  • CHECK:保证列中的值符合指定的条件。

NOT NULL

在前面建表的时候,我们可以看到表的属性中有NULL这一个字段;当没有指定非空约束时,当前的列是可以写入一个NULL值的;如果要把某一列定义为一个必填项,就可以使用NOT NULL约束。比如:

如果要使用该约束,需要在创建表时进行设定:

sql 复制代码
create table student (
    id bigint not null,
    name varchar(50)
);

查看一下student表:

所以此处在输入数据时,id字段不能输入NULL值,MySQL会做一次非空校验。


UNIQUE

保证某列的每行必须有唯一的值,意思就是该列的值在整个表中不能重复。

创建一个在id字段进行唯一约束的表。


DEFAULT

表示在输入数据时默认插入的数据;不规定时默认为空。可以通过Default来规定写入时的默认值。这里就不做演示。


PRIMARY KEY

表示++主键约束++。主键约束既是非空的也是唯一的。把表中的某一列设置为非空且唯一,那么该字段就是该表的主键。

【主键】一张表的每行数据都需要至少一个不能重复、不能为空的标识;该标识对应的字段就是主键。一张表只能有一个主键。一个表中不允许出现两个主键,但可以同时包含多个列(复合主键)

一般在每个表建立时使用如上命名来设定主键。其中auto_increment表示自增。该命令可以让数据库帮我们去维护主键的增长,不用我们自己去运算;在插入的时候先找到最大值,然后在该值的基础上加1,生成一个新的值来作为新数据行的主键的值。

而也有复合主键的情况,即以两列的数据来判断非空和唯一,写法如下:


FOREIGN KEY

类似于上面的主键,foreign key用于设置外键

【外键】在一张表中引入另一张表的主键,这个引入的主键就是外键。

外键的存在可以建立两张表之间的联系。外键的书写如下:

sql 复制代码
foreign key (字段名)references 主表(列)

CHECK

直接用一个例子理解:

该代码用于在插入数据时确保 gender 字段输入的是 "男"或者"女";

可以看到,当输入其他数据时会报错,并且不会存入数据库中。

相关推荐
数字智核19 分钟前
2026昆山工厂空压机突然停机怎么办?找谁抢修
服务器·网络·数据库
AAA代码批发商39 分钟前
Days 39 Linux C 开发之 SQLite 数据库完整学习笔记
linux·c语言·数据库
笑梦无境40 分钟前
mysql的安装及配置(3)
数据库·mysql·adb
电商API_1800790524740 分钟前
跨境1688代采商家,如何借助API打通供应链,实现效率跃迁
大数据·数据库·网络爬虫
小雪崩42 分钟前
嵌入式学习 day40:数据库
数据库·学习
Aloudata1 小时前
语义层 vs MCP 工具层:Agent 调用数据时,语义应该放在哪一层
数据库·数据分析·chatbi·data agent·语义层
zcmodeltech1 小时前
源网荷储一体化沙盘模型多场景控制系统设计——基于STM32与Modbus RTU的源网荷储、多能互补、冷热电三联供全场景联动方案,服务范围覆盖全国
数据库·人工智能·stm32·单片机·嵌入式硬件
数智启示录1 小时前
PostgreSQL 执行计划实战(第 9 篇):SQL 和索引没变,计划为什么突然慢一百倍
数据库·经验分享·sql·postgresql·面试
Gent_倪1 小时前
MySQL分库、分表、分区详解
数据库·mysql
Wang's Blog1 小时前
Vibe Coding一人即团队系列54:云服务器 Node.js 与 MySQL 9 环境搭建及配置指南
服务器·人工智能·mysql·node.js