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

8.数据库约束学习笔记:从非空、默认、唯一与主键约束到主键自增

目录

一、引出数据库约束:核心理念

二、数据库约束讲解

1. NOT NULL 非空约束

创建表时使用约束:

插入空值测试:

2. DEFAULT 默认值

示例:

3. UNIQUE 唯一约束

示例:

4. PRIMARY KEY 主键约束(重点!)

主键的两个核心特性:

示例:

5. 主键自增(AUTO_INCREMENT)

设计数据表时,一般都会给表设定一个主键列,主键列通常就是一个整数的 id。手动指定 id 的值,可能就会遇到重复的情况。

示例:

手动插入主键也可以:

自增主键的分配规则:

三、小结


作为一名正在学习数据库的学生,今天把课上关于数据库约束的核心内容整理成笔记啦!这篇博客会按照老师讲的知识点,结合代码示例,一步步带你理解各种约束的作用和用法。


一、引出数据库约束:核心理念

老师在课上强调了一个很深刻的理念:人是不靠谱的!!!

机器靠谱,计算机靠谱,程序靠谱~~

所以,我们希望数据库程序能够按照咱们指定的要求,对数据进行一定程度的校验。如果发现某个数据不符合预期,直接报错~~

这让我想到了Java中的多态@Override注解:子类重写方法的时候,需要在方法上加@Override注解。不加这个注解,代码也能正确编译执行;但加上了,编译器会做校验。这和数据库约束的思想很像——用规则提前拦截错误,而不是依赖人去保证正确


二、数据库约束讲解

1. NOT NULL 非空约束

null表示空,相当于表格的这个单元格是空着的非空约束就是要求这个列必须有值,不能留空

创建表时使用约束:

drop table student; create table student(id int not null, name varchar(20) not null); desc student;

插入空值测试:

insert into student values(null, null); -- 结果:插入空值会报错! select * from student;

💡 注意:NOT NULL约束确保列不能存储NULL值。如果尝试插入NULL,数据库会直接报错。


2. DEFAULT 默认值

给列指定默认值,当没有给该列赋值时,使用默认值。没被指定的列,也就是剩下的列会被指定为默认值

示例:

create table student(id int, name varchar(20) default '匿名'); insert into student (id) values(1); select * from student;

💡 注意:DEFAULT约束指定列插入时的默认值。如果插入时不指定该列,数据库会自动填充默认值。


3. UNIQUE 唯一约束

unique唯一约束,值不能重复~~

每次插入/修改数据的时候,都会先进行查询(数据库自动进行的),判定要插入/修改的数据,是否已经存在,如果存在了就会失败~~

对比:

✅ unique

是存的数据就不能重复(重复的数据存不下去),查询的结果自然也是不重复的~~

distinct

本来数据库服务器存储的内容中,可能已经有重复的了,展示给用户的时候,展示的是去重的结果

✅ 身份证号、手机号码、护照号码……这些字段通常都需要加UNIQUE约束。

示例:

create table student(id int unique, name varchar(20)); insert into student values(1, '张三'); -- 尝试插入重复的 id update student set id = 1 where name = '张三'; -- 结果:会报错(Duplicate entry '1' for key 'student.id')

💡 注意:UNIQUE约束确保列中的所有值都是不同的。如果尝试插入重复值,数据库会拒绝。


4. PRIMARY KEY 主键约束(重点!)

主键约束是数据库里最重要的约束

它描述表中的某个列/某几个列作为“主键”,主键就能起到这个数据行“身份标识”的效果。

主键的两个核心特性:

  1. 不能重复

  2. 不能为空

📌 相当于unique + not null的结合体!

示例:

create table student(id int primary key, name varchar(20)); desc student; -- 尝试插入 null insert into student values(null, '张三'); -- 结果:报错(Column 'id' cannot be null) -- 尝试插入重复值 insert into student values(1, '李四'); insert into student values(1, '王五'); -- 结果:报错(Duplicate entry '1' for key 'student.PRIMARY')

5. 主键自增(AUTO_INCREMENT)

数据库提供了自增主键功能,主键的值不需要手动分配,自动分配~~

设计数据表时,一般都会给表设定一个主键列,主键列通常就是一个整数的 id。手动指定 id 的值,可能就会遇到重复的情况。

示例:

create table student(id int primary key auto_increment, name varchar(20)); insert into student values(null, '张三'); select * from student;

💡 注意:这里插入null不是插入空值,而是提醒数据库进行自增主键的操作

手动插入主键也可以:

insert into student values(100, '张三'); select * from student;

💡 注意:既自动分配 + 手动分配后,再次手动分配则 id 会接着手动分配的。比如你手动插了 100,下一次自动分配会从 101 开始;再手动插 100,数据库不会报错(因为主键冲突),但通常会报错(因为自增机制会记录最大值,下次自动分配从 101 开始)。

自增主键的分配规则:

自增主键分配的值,是拿着最大值,再 +1的方式来分配的~~


三、小结

通过今天的学习,我理解了数据库约束的核心思想:用规则和程序来保证数据质量,而不是依赖人

主要约束类型:

约束类型

作用

NOT NULL

列不能为空

DEFAULT

列有默认值

UNIQUE

列值不能重复

PRIMARY KEY

列值唯一且非空(身份标识)

AUTO_INCREMENT

主键自动增长,避免手动管理

PS:更多有关约束的内容我将在下一篇博客中详细讲述!!!欢迎关注


📌温馨提示:所有代码示例均在Navicat环境中测试过

http://www.jsqmd.com/news/773134/

相关文章:

  • 蛇形机械臂运动分析与控制结构设计【附代码】
  • Python怎么生成随机数_random模块randint与choice用法
  • 深圳买狗推荐哪家实力强
  • 小米手表表盘设计终极指南:Mi-Create免费可视化工具完整教程
  • AI教材编写神器来袭!低查重保障,一键生成20万字专业教材!
  • CursorClaw:基于语义的智能光标工具,革新代码编辑体验
  • C#本地大模型集成实战:OllamaSharp让.NET开发者轻松调用Llama、Mistral等模型
  • 微信自动回复来了!单聊群聊都能用,私域运营终于不累人了
  • 2070年职业消亡预警清单
  • Electron
  • AISMM模型投资回报分析终极对照表(含银行/保险/VC三大业态参数包+监管合规红线标注),错过将影响2025年度预算审批优先级
  • RAG天花板突破:GraphRAG、HyDE、Self-RAG、Code-RAG,解锁AI知识库进阶玩法!
  • 财联万业适合中小商户入驻吗?
  • 为什么头部银行用AISMM替代COBIT?:揭秘金融级云原生治理的4大硬性阈值与3类不可逆降级信号
  • Mac OS X 环境下通过 HoRNDIS 实现 Android USB 网络共享的专业部署与优化指南
  • 大模型学习指南:小白也能轻松掌握核心技术(收藏版)
  • 低查重AI教材生成秘籍:利用工具,3天完成20万字专业教材编写!
  • AISMM评估结果≠模型真实能力!顶级AI治理团队内部使用的7维交叉验证法(限阅版)
  • 2026年度主流靠谱的多路温度测试仪/多通道温度记录仪老品牌厂家JINKO金科代表型号详解!附常见问题解答 (FAQ) - 奋斗者888
  • 客户满意度跃升47%的底层逻辑(AISMM模型首次公开参数调优手册)
  • Shell命令行发送post请求
  • 如何使用 CSS 实现元素的绝对定位与响应式固定布局
  • 如何快速实现抖音无水印视频下载:开源工具的完整指南
  • 四川盛世钢联国际贸易有限公司 - H型钢|工字钢|槽钢|角钢|一站式型钢批发 - 四川盛世钢联营销中心
  • 云原生不是选修课:AISMM模型预警——当前未启动L1评估的企业,2025Q2起将丧失等保三级合规资格
  • 四川盛世钢联国际贸易有限公司 - H型钢|工字钢|槽钢|角钢|一站式型钢销售 - 四川盛世钢联营销中心
  • 四川盛世钢联国际贸易有限公司 - H型钢|工字钢|槽钢|角钢|一站式型钢供应 - 四川盛世钢联营销中心
  • 模拟IC设计实战:手把手教你搞定CMOS运放中的热噪声与闪烁噪声(附仿真对比)
  • Python桌面自动化实战:MouseMaster框架解析与图像识别应用
  • 初创公司如何利用 Taotoken 实现低成本多模型产品验证