当前位置: 首页 > article >正文

【MySQL 数据库】表的约束

大家好我是你的编程搭子小比特今天这篇博客我把 MySQL 里表的约束从头到尾梳理一遍全部是面试、开发高频考点配案例、配语法、配易错点看完直接能用在项目里。一、什么是表约束为什么要用数据类型只能做最基础的限制但业务里要求更严格比如邮箱不能重复、姓名不能为空、学号必须唯一、成绩不能为负……约束 给字段加 “规则”从业务层面保证数据合法、正确、不混乱。MySQL 常用约束一共 8 个NULL / NOT NULL、DEFAULT、COMMENT、ZEROFILL、PRIMARY KEY、AUTO_INCREMENT、UNIQUE KEY、FOREIGN KEY。二、空属性NULL / NOT NULL作用控制字段是否允许为空。NULL允许为空默认NOT NULL不允许为空关键点空值无法参与运算1 NULL NULL实际开发尽量用NOT NULL数据更可靠示例sqlCREATE TABLE myclass( class_name VARCHAR(20) NOT NULL, class_room VARCHAR(10) NOT NULL );插入时缺了class_room直接报错plaintextERROR 1364 : Field class_room doesnt have a default value三、默认值DEFAULT作用插入数据时不指定该字段自动使用预设值。示例sqlCREATE TABLE tt10 ( name VARCHAR(20) NOT NULL, age TINYINT UNSIGNED DEFAULT 0, sex CHAR(2) DEFAULT 男 );只插 nameage0、sex 男 自动填充sqlINSERT INTO tt10(name) VALUES(zhangsan);四、列描述COMMENT作用给字段加注释说明方便团队维护。示例sqlCREATE TABLE tt12 ( name VARCHAR(20) NOT NULL COMMENT 姓名, age TINYINT UNSIGNED DEFAULT 0 COMMENT 年龄 );查看注释sqlSHOW CREATE TABLE tt12\G五、零填充ZEROFILL作用数字不足指定位数时前面补 0只影响显示不影响存储。示例sqlALTER TABLE tt3 CHANGE a a INT(5) UNSIGNED ZEROFILL;插入1→ 显示00001实际存储还是1。六、主键PRIMARY KEY作用唯一标识一行数据约束最强不能重复不能为空一张表最多一个主键示例sqlCREATE TABLE tt13 ( id INT UNSIGNED PRIMARY KEY COMMENT 学号, name VARCHAR(20) NOT NULL );复合主键多个字段一起做主键组合唯一sqlCREATE TABLE tt14( id INT UNSIGNED, course CHAR(10), PRIMARY KEY(id, course) );追加 / 删除主键sqlALTER TABLE 表 ADD PRIMARY KEY(字段); ALTER TABLE 表 DROP PRIMARY KEY;七、自增长AUTO_INCREMENT作用字段不赋值时自动 1通常配合主键使用。特点必须是索引列必须是整数一张表最多一个自增示例sqlCREATE TABLE tt21( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name VARCHAR(10) NOT NULL DEFAULT );获取刚插入的自增 IDsqlSELECT LAST_INSERT_ID();八、唯一键UNIQUE KEY作用保证字段业务不重复但允许为 NULL。主键 vs 唯一键主键不能为空一张表一个唯一键可以为空一张表多个示例sqlCREATE TABLE student ( id CHAR(10) UNIQUE COMMENT 学号, name VARCHAR(10) );九、外键FOREIGN KEY作用约束表与表之间的关系保证数据逻辑一致。规则从表外键的值必须在主表主键里存在或为 NULL示例先建主表班级sqlCREATE TABLE myclass ( id INT PRIMARY KEY, name VARCHAR(30) NOT NULL );再建从表学生sqlCREATE TABLE stu ( id INT PRIMARY KEY, name VARCHAR(30) NOT NULL, class_id INT, FOREIGN KEY (class_id) REFERENCES myclass(id) );插入不存在的班级 ID 直接报错保证数据不乱。十、综合实战商城三表设计高频面试题商品表、客户表、订单表一次写完主外键 所有约束sqlCREATE DATABASE IF NOT EXISTS mall DEFAULT CHARSET utf8; USE mall; -- 商品表 CREATE TABLE goods( goods_id INT PRIMARY KEY AUTO_INCREMENT COMMENT 商品ID, goods_name VARCHAR(32) NOT NULL COMMENT 商品名, unitprice INT NOT NULL DEFAULT 0 COMMENT 单价(分), category VARCHAR(12) COMMENT 类别, provider VARCHAR(64) NOT NULL COMMENT 供应商 ); -- 客户表 CREATE TABLE customer( customer_id INT PRIMARY KEY AUTO_INCREMENT COMMENT 客户ID, name VARCHAR(32) NOT NULL COMMENT 姓名, address VARCHAR(256) COMMENT 地址, email VARCHAR(64) UNIQUE COMMENT 邮箱, sex ENUM(男,女) NOT NULL COMMENT 性别, card_id CHAR(18) UNIQUE COMMENT 身份证 ); -- 订单表 CREATE TABLE purchase( order_id INT PRIMARY KEY AUTO_INCREMENT COMMENT 订单ID, customer_id INT COMMENT 客户ID, goods_id INT COMMENT 商品ID, nums INT DEFAULT 0 COMMENT 数量, FOREIGN KEY (customer_id) REFERENCES customer(customer_id), FOREIGN KEY (goods_id) REFERENCES goods(goods_id) );十一、高频考点速记面试必背NOT NULL不能为空DEFAULT提供默认值COMMENT是注释ZEROFILL只补 0 不改变存储主键唯一且非空一张表一个自增长必须是整数、索引列唯一键允许 NULL可建多个外键保证表关系合法主表必须有主键 / 唯一键十二、MySQL 约束表结构修改数据修改 终极对比表一眼不混直接背表格分类作用关键字 / 语句示例1. 字段约束建表用给字段定规则不能为空、唯一、默认值等NOT NULLDEFAULTCOMMENTZERO FILLPRIMARY KEYAUTO_INCREMENTUNIQUE KEYFOREIGN KEYname VARCHAR(20)NOT NULLage INTDEFAULT 0id INTPRIMARY KEY AUTO_INCREMENT2. 修改表结构ALTER改表加字段、删字段、改约束、加主键ALTER TABLE 表ADD添加DROP删除MODIFY改类型 / 约束CHANGE改名 改类型ALTER TABLE tADDPRIMARY KEY(id);ALTER TABLE tMODIFYname NOT NULL;3. 修改表中数据改表里的内容增 / 删 / 改记录INSERT插入UPDATE修改DELETE删除INSERT INTO t VALUES (1, 张三 );UPDATE t SET name 李四 WHERE id1;DELETE FROM t WHERE id1;最核心记忆口诀背会永不混约束管字段规则NOT NULL / PRIMARY KEY 等ALTER管表结构加字段、改约束、加主键INSERT / UPDATE / DELETE管表里的数据十三、结束语MySQL 约束看似多其实逻辑非常统一都是为了管住数据不让脏数据进库。开发时先想清楚字段规则再建表后面少填无数坑。如果你觉得这篇博客对你有用欢迎点赞、收藏、关注我会持续更新数据库、C/C、后端开发干货

相关文章:

【MySQL 数据库】表的约束

大家好,我是你的编程搭子小比特~今天这篇博客,我把 MySQL 里表的约束从头到尾梳理一遍,全部是面试、开发高频考点,配案例、配语法、配易错点,看完直接能用在项目里。一、什么是表约束?为什么要用…...

终极游戏模型管理中心:XXMI-Launcher完整使用指南

终极游戏模型管理中心:XXMI-Launcher完整使用指南 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 对于热爱二次元游戏的玩家来说,管理各种模型导入器&…...

别再复制粘贴了!手把手教你用CPLEX OPL从零搭建第一个优化模型(附完整代码)

从零开始:用CPLEX OPL构建你的第一个生产优化模型 每次看到那些复杂的优化问题,你是不是总想直接复制粘贴代码?但真正解决问题时,却发现自己连最基本的模型结构都搞不清楚。今天我们就来彻底改变这种状况——我将带你从零开始&…...

5分钟彻底解锁VMware macOS支持:免费工具完整指南

5分钟彻底解锁VMware macOS支持:免费工具完整指南 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 想在Windows或Linux电脑上运行macOS虚拟机,却发现VMware默认不支持苹果系统&am…...

GCC与LLVM编译器之争:架构差异、生态演进与开发者选型指南

1. 项目概述:编译器领域的格局变迁在嵌入式开发、操作系统内核构建乃至日常的应用程序开发中,编译器是我们与机器硬件对话的“翻译官”。过去二十多年里,GNU编译器套件(GCC)几乎扮演了这个领域里“通用语”的角色&…...

从电话到智能手机:技术如何重塑社交隔离与个人茧房

1. 从“佩格与罗西”到“科赛特”:一场技术赋能的社交隔离演变我姐姐佩格在形成可辨识的个性之前,是那种典型的青春期女孩——在闺蜜圈子里,她活泼、健谈、爱八卦,充满了各种“天哪”的惊叹和咯咯的笑声。但对于圈子外的人&#x…...

新手必看!收藏这份AI智能体入门指南,让你轻松驾驭AI时代

本文详细介绍了AI智能体的概念、功能和应用场景,将其与普通AI助手进行了对比。智能体能够自主理解、规划和执行复杂任务,涵盖生活、工作和专业领域。文章还介绍了几个常见的智能体平台,并解析了智能体完成任务的基本步骤,包括理解…...

别再手动写Prompt了!用LangChain的Prompt Templates和Output Parsers,5分钟搞定结构化数据提取

LangChain实战:5分钟用Prompt模板和输出解析器实现结构化数据提取 在当今AI驱动的开发环境中,处理非结构化文本并从中提取有价值信息已成为开发者日常工作的核心挑战。传统方法需要手动编写复杂的正则表达式或繁琐的字符串处理逻辑,而LangCh…...

ComfyUI命令行工具:AI图像生成自动化与集成指南

1. 项目概述:当ComfyUI遇上命令行,效率革命就此开启如果你和我一样,是Stable Diffusion工作流的重度使用者,那么对ComfyUI一定不会陌生。这个基于节点图的可视化界面,以其强大的灵活性和可复现性,彻底改变了…...

从‘信息丢失’到‘信息保留’:深入浅出图解SPD-Conv如何拯救低质量图像分类

从像素拼图到特征魔法:SPD-Conv如何重塑低分辨率图像处理范式 当你在手机上查看一张模糊的老照片时,是否注意到那些丢失的细节?传统卷积神经网络(CNN)处理低质量图像时,正面临着类似的困境。想象一下,你正在玩一个高难…...

基于MCP协议构建AI驱动的Google Drive自动化管理工具

1. 项目概述:当AI助手学会管理你的Google Drive 如果你和我一样,每天要在Google Drive里翻找文件、整理文档、处理同事的共享请求,那你肯定也想过:要是能像跟同事聊天一样,用自然语言来操作网盘就好了。比如&#xff…...

SITS2026企业估值翻倍实录:AISMM框架如何在90天内激活隐性资产、重构投资者叙事并提升EV/EBITDA 2.3倍?

更多请点击: https://intelliparadigm.com 第一章:SITS2026企业估值翻倍实录:AISMM框架如何在90天内激活隐性资产、重构投资者叙事并提升EV/EBITDA 2.3倍? SITS2026是一家专注工业智能传感的B2B科技企业,其核心专利组…...

Sonos Roam深度评测:便携音箱如何实现智能音频生态整合

1. 产品定位与市场切入:Sonos Roam的“迟到”与“厚积”当Sonos在2021年春季发布Roam时,整个音频圈的反应是复杂的。一方面,便携蓝牙音箱市场早已是一片红海,从JBL、Bose到无数中国品牌,产品形态和功能似乎已固化&…...

终极崩坏星穹铁道自动化指南:3分钟学会解放双手的游戏辅助工具

终极崩坏星穹铁道自动化指南:3分钟学会解放双手的游戏辅助工具 【免费下载链接】StarRailAssistant 崩坏:星穹铁道自动化 | 崩坏:星穹铁道自动锄大地 | 崩坏:星穹铁道锄大地 | 自动锄大地 | 基于模拟按键 项目地址: https://git…...

AI 能力如何变成鸿蒙 App 的基础设施

子玥酱 (掘金 / 知乎 / CSDN / 简书 同名) 大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚…...

微软PowerToys:重新定义Windows生产力边界的开源利器

微软PowerToys:重新定义Windows生产力边界的开源利器 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_Trending/po/PowerToys …...

Godot ECS框架实战:数据导向设计提升游戏性能与代码组织

1. 项目概述:为什么要在Godot里引入ECS?如果你在Godot里做过稍微复杂点的项目,尤其是那种有成百上千个需要实时更新状态的对象(比如RTS的单位、弹幕游戏的子弹、模拟经营里的市民),你大概率会遇到一个头疼的…...

3大核心技术突破:让闲置电视盒子变身高性能Linux服务器的终极方案

3大核心技术突破:让闲置电视盒子变身高性能Linux服务器的终极方案 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905…...

Kill-Doc:30+文档平台免费下载终极指南,轻松获取百度文库、道客巴巴等资源

Kill-Doc:30文档平台免费下载终极指南,轻松获取百度文库、道客巴巴等资源 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文…...

Backblaze B2云存储管理:Claude技能实现智能审计与自动化运维

1. 项目概述最近在折腾云存储管理,特别是Backblaze B2,发现手动用命令行操作虽然灵活,但想快速盘点存储桶状态、找出冗余文件、检查安全配置,每次都得上网查命令,效率实在不高。正好看到Backblaze官方发布了一个Claude…...

基于深度学习的西红柿成熟度分割识别 番茄成熟度检测 YOLO11番茄检测与分割系统(opencv+cnn+数据集+模型+GUI界面)

YOLO11番茄检测与分割系统 项目概述 本项目采用YOLO11实现先进的实例分割技术,用于番茄成熟度分类。在Laboro Tomato数据集上达到90.1% mAP0.5(边界框)和89.8% mAP0.5(掩码)的精度,适用于实际农业应用场景tomato。应用场景 机器人采摘:自动化…...

实用指南:3步让OBS直播画面从普通到专业级特效

实用指南:3步让OBS直播画面从普通到专业级特效 【免费下载链接】obs-StreamFX StreamFX is a plugin for OBS Studio which adds many new effects, filters, sources, transitions and encoders! Be it 3D Transform, Blur, complex Masking, or even custom shade…...

EDA工程师差旅危机处理指南:从酒店客满到航班延误的实战应对

1. 差旅噩梦:当酒店告诉你“客满”时在电子设计自动化(EDA)以及更广泛的半导体、硬件设计行业里,出差是职业生涯中不可或缺的一部分。无论是去客户现场支持项目,参加全球性的技术研讨会,还是拜访分布在不同…...

智能化工园区安全预警平台

奇妙智能化工园区安全预警平台是一种基于物联网、大数据分析和人工智能技术的综合管理系统,旨在提升化工园区的安全性和应急响应能力。该平台通过实时监测、数据分析和智能预警,帮助园区管理者及时发现潜在风险并采取相应措施。平台核心功能实时监测与数…...

AI这个圈子有一个很神奇的特点:就是复利性基本为零。

AI这个圈子有一个很神奇的特点:就是复利性基本为零。 每次我看到类似「2026年,入行YYY方向还来得及吗?」的问题的时候,我都会想到这个特点。 原因其实很简单,我只从科研上举一些例子。比方说从2023年之后入行做生成的…...

智慧树刷课插件终极指南:如何用自动化技术节省90%学习时间

智慧树刷课插件终极指南:如何用自动化技术节省90%学习时间 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台上的重复点击操作烦恼吗&#x…...

大模型落地卡点全破解:奇点智能大会实测的7款工程化工具深度对比

更多请点击: https://intelliparadigm.com 第一章:大模型工程化工具推荐:奇点智能大会 在2024年奇点智能大会上,多家前沿AI基础设施团队联合发布了面向大模型全生命周期的开源工程化工具链。这些工具聚焦于模型微调、推理优化、可…...

wxauto终极指南:3步打造Windows微信自动化机器人

wxauto终极指南:3步打造Windows微信自动化机器人 【免费下载链接】wxauto Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人 项目地址: https://gitcode.com/gh_mirrors/wx/wx…...

KMS_VL_ALL_AIO:终极Windows和Office激活解决方案

KMS_VL_ALL_AIO:终极Windows和Office激活解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows和Office激活问题而烦恼吗?KMS_VL_ALL_AIO是一款完全免费…...

Figma中文界面插件:3分钟快速安装,让Figma设计体验更亲切!

Figma中文界面插件:3分钟快速安装,让Figma设计体验更亲切! 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否曾因为Figma的英文界面而感到困扰&a…...