【零基础入门】SQL 核心语法精讲:约束(Constraint)全解析(单表约束篇)
一、前言在前几篇文章中我们系统学习了 SQL 的 DDL、DML 和 DQL 核心用法掌握了数据库、表、数据的增删改查。但在实际开发中仅靠数据类型无法保证数据的完整性和有效性 —— 比如学号不能为空且不能重复、姓名必须填写、手机号不能重复等这就需要约束Constraint来实现。本文将聚焦 SQL 中的单表约束详细讲解主键、非空、唯一、默认约束的用法结合实战案例帮你彻底掌握让数据更规范二、约束基础认知2.1 约束概述约束是在数据类型基础上对数据表中列的值进行进一步的限定目的是保证数据的完整性、唯一性、有效性避免脏数据产生。2.2 约束分类表格约束类型作用域具体约束核心特点单表约束单张表内primary key主键约束非空 唯一可结合 auto_increment 自增not null非空约束列值不能为 NULLunique唯一约束列值必须唯一可 NULLdefault默认约束未赋值时使用默认值多表约束多张表间foreign key外键约束关联多表保证数据一致性后续单独讲解三、核心约束实战单表约束3.1 环境准备-- 重置演示数据库避免干扰 DROP DATABASE IF EXISTS day02; CREATE DATABASE day02; USE day02;3.2 主键约束primary key★★★3.2.1 主键约束核心特点非空NOT NULL主键列的值不能为 NULL唯一UNIQUE主键列的值不能重复标识性通常用于唯一标识表中的一条记录如学号、员工 ID自增配合一般结合auto_increment自增使用简化数据插入。3.2.2 实操案例场景 1建表时添加主键约束-- 创建学生表sid学号主键name姓名age年龄 DROP TABLE IF EXISTS student; CREATE TABLE student( sid INT PRIMARY KEY, -- 方式1列级定义主键 name VARCHAR(10), age INT -- PRIMARY KEY(sid) -- 方式2表级定义主键效果相同 ); -- 查看表结构可看到sid的Key列显示PRI代表主键 DESC student; -- 插入测试数据 INSERT INTO student VALUES(1, 张三, 18); -- 正常插入 INSERT INTO student VALUES(1, 张三, 18); -- 报错主键重复Duplicate entry INSERT INTO student VALUES(NULL, 张三, 18); -- 报错主键非空Column sid cannot be null -- 查看数据 SELECT * FROM student;场景 2建表后添加主键 自增-- 先删除已有的主键约束 ALTER TABLE student DROP PRIMARY KEY; -- 重新添加主键约束并增加自增功能 ALTER TABLE student ADD PRIMARY KEY(sid); ALTER TABLE student MODIFY sid INT AUTO_INCREMENT; -- 再次插入数据自增特性生效 INSERT INTO student VALUES(2, 李四, 20); -- 正常插入 INSERT INTO student VALUES(2, 李四, 20); -- 报错主键重复 INSERT INTO student VALUES(NULL, 李四, 20); -- 正常插入sid自动递增为3 INSERT INTO student VALUES(10, 王五, 20); -- 插入sid10 INSERT INTO student VALUES(NULL, 赵六, 66); -- sid自动递增为11 -- 查看最终数据 SELECT * FROM student;场景 3实际开发推荐写法建表时直接加主键 自增-- 重建学生表推荐写法 DROP TABLE IF EXISTS student; CREATE TABLE student( sid INT PRIMARY KEY AUTO_INCREMENT, -- 主键自增一步到位 name VARCHAR(10), age INT ); -- 插入数据主键列传NULL即可自动递增 INSERT INTO student VALUES(NULL, 乔峰, 38); INSERT INTO student VALUES(NULL, 虚竹, 30); -- 查看数据 SELECT * FROM student;关键补充DELETE vs TRUNCATE 对主键自增的影响-- DELETE删除数据不重置主键自增ID DELETE FROM student; INSERT INTO student VALUES(NULL, 段誉, 25); -- sid会从3开始而非1 -- TRUNCATE清空表并重置主键自增ID相当于删表重建 TRUNCATE TABLE student; INSERT INTO student VALUES(NULL, 阿朱, 20); -- sid从1开始3.3 非空 / 唯一 / 默认约束not null/unique/default3.3.1 核心特点表格约束核心规则not null列值必须填写不能为 NULLunique列值必须唯一可 NULL多个 NULL 不冲突default插入数据时未赋值则使用默认值3.3.2 实操案例-- 创建员工表整合非空、唯一、默认约束 CREATE TABLE employee( eid INT PRIMARY KEY AUTO_INCREMENT, -- 员工ID主键自增 name VARCHAR(10) NOT NULL, -- 姓名非空约束 mobile VARCHAR(11) UNIQUE, -- 手机号唯一约束 address VARCHAR(50) DEFAULT 北京 -- 住址默认约束默认值为北京 ); -- 查看表结构可看到对应约束标识 DESC employee; -- 插入测试数据 -- 案例1正常插入所有字段赋值 INSERT INTO employee VALUES(NULL, 乔峰, 13800138000, 南院大王府); -- 案例2姓名为空报错非空约束 -- INSERT INTO employee VALUES(NULL, NULL, 13800138001, 缥缈峰); -- 案例3手机号重复报错唯一约束 -- INSERT INTO employee VALUES(NULL, 乔峰, 13800138000, 缥缈峰); -- 案例4手机号不重复正常插入 INSERT INTO employee VALUES(NULL, 阿紫, 13800138001, 星宿海); -- 案例5未指定列名值个数不足报错 -- INSERT INTO employee VALUES(NULL, 段誉, 13800138002); -- 案例6指定列插入住址使用默认值 INSERT INTO employee(eid, name, mobile) VALUES(NULL, 段誉, 13800138002); -- 查看最终数据段誉的address会显示默认值“北京” SELECT * FROM employee;四、约束实操避坑指南主键自增注意自增列只能是整型且一张表只能有一个自增列通常和主键绑定唯一约束与 NULLunique 约束允许多个 NULL 值因为 NULL 不等于任何值默认约束生效条件仅当插入数据时未给该列赋值才会使用默认值约束修改 / 删除删除主键ALTER TABLE 表名 DROP PRIMARY KEY;添加非空约束ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;删除非空约束ALTER TABLE 表名 MODIFY 列名 类型 NULL;五、总结核心要点回顾约束是对列值的额外限定单表约束核心包括主键、非空、唯一、默认主键约束是最核心的单表约束具备非空 唯一特性结合auto_increment可自动递增not null强制列值非空unique强制列值唯一default为列设置默认值DELETE 删除数据不重置主键自增TRUNCATE 会重置删表重建。下一步学习预告本文掌握了单表约束的核心用法后续将讲解多表约束外键约束和多表查询这是 SQL 进阶的关键关注我持续解锁 SQL 实战技能拓展练习创建一张商品表goods包含字段商品 ID主键 自增、商品名非空、商品编号唯一、库存默认 0、分类 ID向商品表插入 5 条测试数据验证各约束是否生效测试 DELETE 和 TRUNCATE 对商品 ID 自增的影响。

相关新闻

25万星标屠榜GitHub!这只用TypeScript写的“龙虾”,凭什么让全球程序员疯狂?

25万星标屠榜GitHub!这只用TypeScript写的“龙虾”,凭什么让全球程序员疯狂?

前言 当你的电脑里的AI,不再只是一个只会跟你唠嗑的“嘴强王者”,而是能真的撸起袖子给你干活——自动整理堆积如山的邮件、深夜提交代码PR、甚至帮你货比三家淘到一辆二手宝马——那是一种怎样的体验? 今天,一个名叫 OpenClaw 的…

2026/7/8 2:52:07 阅读更多 →
用电安全管理系统的业务痛点和核心功能

用电安全管理系统的业务痛点和核心功能

一、业务痛点1. 传统管理方式粗放,隐患溯源困难保护装置功能单一:传统空气开关、保险丝等仅能在电流过载或短路达到一定程度时切断电路,无法对电压、电流、温度等关键参数进行实时、精准监测缺乏实时监测手段:非营业时段缺乏有效实…

2026/7/7 16:10:27 阅读更多 →
Node-Red 从入门到上位机之数据转发和路由

Node-Red 从入门到上位机之数据转发和路由

Node-Red 从入门到上位机之数据转发和路由 学习目标 了解3. 数据转发和路由相关的基本概念 掌握3. 数据转发和路由的核心功能和使用方法 能够在实际项目中应用3. 数据转发和路由相关知识 Switch节点路由 Switch节点是最常用的消息路由节点。 配置选项: 属性:要检查的消息属…

2026/7/5 23:16:33 阅读更多 →

最新新闻

2026年最新命理排盘软件推荐:命理软件怎么选?八字、AI提示词和多盘复盘要分清

2026年最新命理排盘软件推荐:命理软件怎么选?八字、AI提示词和多盘复盘要分清

很多人搜索“命理排盘软件推荐”或者“命理软件推荐”,其实需求并不完全一样。有的人只是想排一个八字盘,有的人想看紫微斗数,有的人想查六爻、合盘、择日、罗盘,也有人刚入门,看不懂十神、五行、大运流年,…

2026/7/8 2:51:33 阅读更多 →
Zvec:阿里巴巴开源的轻量级进程内向量数据库

Zvec:阿里巴巴开源的轻量级进程内向量数据库

Zvec:阿里巴巴开源的轻量级进程内向量数据库 核心观点 Zvec 是阿里巴巴开源的进程内(in-process)向量数据库,定位轻量、极速、零配置,可直接嵌入应用程序运行。经阿里集团内部生产环境验证,支持低延迟、可…

2026/7/8 2:47:33 阅读更多 →
ResNet-18/34/50/101/152 五款架构 CIFAR-10 训练实测:从 56 层到 1202 层的性能拐点分析

ResNet-18/34/50/101/152 五款架构 CIFAR-10 训练实测:从 56 层到 1202 层的性能拐点分析

ResNet-18/34/50/101/152 五款架构 CIFAR-10 训练实测:从 56 层到 1202 层的性能拐点分析深度残差网络(ResNet)自2015年问世以来,已成为计算机视觉领域的里程碑式工作。何恺明团队提出的残差学习框架,通过引入跨层连接…

2026/7/8 2:45:32 阅读更多 →
SQL 语句从基础到高级

SQL 语句从基础到高级

SQL(Structured Query Language,结构化查询语言)是关系型数据库的标准操作语言,适用于 MySQL、Oracle、SQL Server、PostgreSQL 等主流数据库。本文将由浅入深,从基础语法、核心操作、进阶查询到高级特性、实战优化&am…

2026/7/8 2:45:32 阅读更多 →
曝美团内部全面限用豆包大模型;OpenAI磋商将5%股份送给美国政府;任天堂回应“全员涨薪10%”传闻:这是2023年的事 | 极客头条

曝美团内部全面限用豆包大模型;OpenAI磋商将5%股份送给美国政府;任天堂回应“全员涨薪10%”传闻:这是2023年的事 | 极客头条

一分钟速览新闻点! 消息称美团内部全面限用豆包大模型,此前曾限用阿里云 Qwen 蔚来李斌毕业 30 年后回北大演讲:经历 6 次人生和事业大低谷 支付宝 AI 生活助理「阿宝」正式开启公测,全面取消邀请码限制 脉脉:1-5 月…

2026/7/8 2:43:32 阅读更多 →
使用claude code进行贪吃蛇游戏开发

使用claude code进行贪吃蛇游戏开发

初次使用claude code进行GUI游戏开发。(使用python语言)1.使用powershell打开指定目录2.输入claude命令打开3.输入自然语言描述需求4.根据效果和问题进行问题描述,要求大模型对代码进行修改。结果:

2026/7/8 2:43:32 阅读更多 →

日新闻

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: …

2026/7/8 0:00:48 阅读更多 →
MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N1 到批处理的全路径 一、从"功能正确"到"性能可接受"——MyBatis 批量操作的三段式进化 MyBatis 在日常增删改查场景中几乎是无感的——实体映射直观、SQL 控制灵活。但当数据量从千级上升到十万级、百万级,许…

2026/7/8 0:00:48 阅读更多 →
工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

1. 工业负载控制方案概述在工业自动化、电机驱动和照明控制等高需求场景中,可靠地控制电感和电阻负载是核心挑战之一。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合PIC18F45K22微控制器,能够构建一套稳定、高效的负载控制系统。这套组合…

2026/7/8 0:02:48 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻