MySQL中的检查约束讲解

简介: 本文系统讲解MySQL五大约束:主键、外键、唯一、非空及检查约束,涵盖定义、作用、增删语法及实操示例。特别指出MySQL当前不支持CHECK约束。适合预习复习,助你扎实掌握数据完整性控制。

前言

本章来讲解一下MySQL中的检查约束
本文可以用于预习,复习等,旨在更好的帮助读者理解和掌握检查约束

系列专栏:MySQL

个人主页:主页

话不多说,即可发车~

一. 简介

检察约束属于DDL
约束可以理解成一种校验方式

一共有5种约束,现在分别讲解一下

  • 主键约束(Primary Key)
  1. 不允许为空
  2. 不允许有重复值出现
  3. 保证数据的唯一性
  • 外键约束(Foreign Key)
  1. 允许有空值
  2. 允许有重复
  3. 值必须是参照表的参照列中所包含的值
  4. 保证数据的参照完整性
  • 唯一性约束(Unique)
  1. 相同值只能出现一次
  2. 允许为多个列添加唯一性约束
  3. 保证数据的唯一性
  • 非空约束(Not Null)
  1. 列中不能有空值
  2. 允许重复值
  3. 允许为多个列添加非空约束
  4. 保证数据没有空值
  • 检查约束(Check)
  1. 用户自己定义约束条件
  2. 保证数据满足自定义的条件约束
  3. MySQL 目前不支持检查约束

二. 主键约束(primary key)

1. 添加主键约束

alter table 表名 add primary key(列名)
例

显然这里的id字段(列)要设置成主键

alter table students add primary key(id);

因为是主键,那么在当前表中是唯一的
如果主键是 int 型,那么就可以使用自动增长

alter table 表名 modify 主键 类型 auto_increment

alter table student modify id int auto_increment

2. 删除主键

alter table 表名 drop primary key

alter table students drop primary key;

三. 外键约束(Foreign Key)

1. 添加外键

alter table 表名 add constraint 约束名 foreign key(列名) references 参照的表名(参照的列名)
单词:
constraint : 约束
references:引用

alter table students
add constraint fk_students_courses
foreign key (course_id)
references courses(id);

2. 删除外键

alter table 表名 drop foreign key 约束名

alter table students
drop foreign key fk_students_courses;

四. 唯一性约束(Unique)

1. 添加唯一约束

alter table 表名 add constraint 约束名 unique(列名)

alter table students
add constraint uk_students_name
unique (name);

2. 删除唯一约束

alter table 表名 drop key 约束名

alter table students
drop key uk_students_name;

五. 非空约束(Not Null)

1. 添加非空约束

alter table 表名 modify 列名 类型 not null
单词:
modify:修改
在修改的时候添加非空约束

alter table students
modify name varchar(50) not null;

2. 删除非空约束

alter table modify 列名 类型 null

alter table students
modify name varchar(50) null;

六. 创建表时添加约束

直接可以在创建的时候顺便添加约束

create table enhanced_students (
    -- 添加主键约束,并自动增长
    id int auto_increment primary key,
    -- 添加非空约束(不能为空)
    name varchar(50) not null,
    gender enum('男', '女') not null,
    -- 添加唯一约束
    students_name varchar(30) unique
);

七. 总结

希望这篇文章能够帮助到你😊

目录
相关文章
|
15天前
|
数据采集 前端开发 JavaScript
240GB流量击穿与频繁OOM:从云端瘫痪到客户端自治的本地优先架构重构实录
本文记录作者开源项目 BlogDistiller 遭遇千篇级并发冲击导致云端OOM、带宽爆仓、磁盘告急的崩溃实录,深入剖析中心化架构缺陷,最终以“本地优先薄壳混编”重构方案实现算力下沉、零打包热更新与客户端自治,完成从瘫痪到稳定、从高成本到零运维的蜕变。
160 1
|
2月前
|
存储 算法 开发工具
Git版本控制深度复盘:从入门到精通的完整指南
本文是Git知识快速复习指南,涵盖核心概念(分布式特性、与SVN对比)、工作流程(四区域、文件状态转换)、常用命令(基础/分支/远程操作)、多人协作案例、冲突解决及常见问题处理,并附思维导图助力体系化掌握。适合开发者高效回顾与实战提升。
142 4
Git版本控制深度复盘:从入门到精通的完整指南
|
2月前
|
缓存 前端开发 JavaScript
Thymeleaf模板引擎:让Spring Boot页面开发更简单高效
Thymeleaf是现代化Java服务端模板引擎,支持HTML等多格式;天然兼容静态预览与动态渲染,实现前后端高效协作;深度集成Spring Boot,以`th:*`属性优雅绑定数据,语法简洁、学习成本低。
153 1
Thymeleaf模板引擎:让Spring Boot页面开发更简单高效
|
2月前
|
人工智能 自然语言处理 算法
GEO 生成式引擎优化通俗解读:重新理解 AI 搜索引擎优化的底层逻辑
本文通俗解析GEO(生成式引擎优化)——面向AI大模型的新型内容优化体系。对比传统SEO,GEO聚焦内容能否被大模型“看见、信任、引用”,强调事实准确、结构清晰、多源可信。厘清误区,拆解检索、甄别、生成三阶段逻辑,助力从业者构建AI时代的内容竞争力。(239字)
274 1
|
2月前
|
数据库 开发者
阿里云账号实名认证:个人认证和企业认证有什么区别?对比表一看就懂~
阿里云账号分个人与企业实名认证:个人认证适用于开发者、学生,发票抬头为个人,仅限使用个人类云产品;企业认证需用营业执照或法人信息,发票可开企业抬头,支持更多企业级服务(如短信、内容安全等),且避免员工离职导致的账号权属纠纷。阿里云官网:https://t.aliyun.com/U/g0EVkO
|
2月前
|
缓存 前端开发 程序员
V4-Flash-Vision-Exp 上线,Harness 多模态接入实测
V4-Flash-Vision-Exp 刚上线,用 DeepSeek Harness 实测多模态新模型,含 API 接入、图片理解与价格细账
|
云栖大会 开发者
收到阿里云【乘风者计划】博主证书和奖励
收到阿里云【乘风者计划】博主证书和奖励 2023年2月对我来说是一个很好的开端,因为我在1号就收到了阿里云寄给我的【乘风者计划】博主证书和奖励。好兆头啊! 我收到的是我获得的【技术博主】【星级博主】【专家博主】三个的奖品和证书,一快给我寄过来哒!
3458 2
收到阿里云【乘风者计划】博主证书和奖励
|
2月前
|
Java 程序员 应用服务中间件
Maven之初识与安装
本文详解Maven安装与配置全流程:从基础概念、下载安装、环境变量配置到版本验证,助新手一次理清逻辑、顺利完成部署;涵盖一键构建、依赖管理核心功能,并提供交流支持。
208 0
Maven之初识与安装
|
2月前
|
人工智能 IDE 开发工具
全网首发!完美解决 Antigravity IDE 地区限制登录,把 Gemini Pro 会员用到极致
本文专为具备基础访问环境与Gemini Pro会员的用户撰写,深度解析网页端多模态功能(图文/视频/PPT/音乐生成、画布工具)及编程利器Antigravity IDE实操技巧,含地区限制破解、中文化设置、模型选配、自动执行等独家避坑指南,助你物超所值发挥Pro版全部潜力。
738 1
全网首发!完美解决 Antigravity IDE 地区限制登录,把 Gemini Pro 会员用到极致
|
2月前
|
NoSQL 前端开发 安全
零成本邮件验证码全链路拆解,附最新 QQ 邮箱 SMTP 授权码完整步骤
本文详解个人项目“词帆CiFan”中邮件验证码功能的完整实现:选用QQ邮箱SMTP零成本方案,涵盖密码重置与账号注销两大核心场景,包含前后端链路设计、Redis降级容错、安全配置避坑(如授权码获取、端口选择、环境变量保护)及AI辅助开发技巧。
250 0
零成本邮件验证码全链路拆解,附最新 QQ 邮箱 SMTP 授权码完整步骤

热门文章

最新文章