[MySQL]约束
画师竹取工坊大佬们好我是Mem0rin现在正在准备自学转码。如果我的文章对你有帮助的话欢迎关注我的主页Mem0rin一起进步文章目录一、约束概述一通用语法二常用约束二、基本字段约束一通用语法二示例三、主键约束(UNIQUE NOT NULL)一通用语法二自增类型AUTO_INCREMENT三示例四、外键约束一通用语法二示例文本使用 ChatGPT 进行二次整理。约束用于限制表中数据的取值保证数据的完整性和正确性。把常见校验交给数据库完成可以减少人工检查和程序判断。一、约束概述一通用语法约束可以直接写在字段后也可以作为表级约束统一定义。-- 在字段后定义约束CREATETABLEtable_name(column_name data_typeconstraint);-- 使用表级约束CREATETABLEtable_name(column1 data_type,column2 data_type,CONSTRAINTconstraint_nameconstraint(column1,column2));二常用约束约束作用NOT NULL字段必须有值不能存储NULLUNIQUE字段值不能重复eg. 身份证号DEFAULT未赋值时使用默认值PRIMARY KEY唯一标识一条记录相当于非空NOT NULL且唯一UNIQUEFOREIGN KEY保证当前表的值能在关联表中找到CHECK保证字段值满足指定条件MySQL 8.0.16 起开始真正执行CHECK约束更早版本只解析语法而不进行校验。具体说明可参考 MySQL 官方文档。二、基本字段约束一通用语法-- 非空约束column_name data_typeNOTNULL-- 唯一约束column_name data_typeUNIQUE-- 默认值约束column_name data_typeDEFAULTdefault_value-- 检查约束column_name data_typeCHECK(condition)NOT NULL适合姓名、编号等必填字段UNIQUE适合学号、身份证号等不能重复的字段DEFAULT用于提供缺失值。二示例-- 创建学生表并添加常用约束CREATETABLEstudent(idBIGINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(50)NOTNULLDEFAULT无名氏,snINTNOTNULLUNIQUE,ageINTCHECK(age0));-- 查看表结构DESCstudent;-- 不指定 id由数据库自动生成INSERTINTOstudent(name,sn,age)VALUES(张三,10001,20);三、主键约束(UNIQUENOT NULL)一通用语法-- 单列主键CREATETABLEtable_name(idBIGINTPRIMARYKEY);-- 复合主键CREATETABLEtable_name(column1 data_type,column2 data_type,PRIMARYKEY(column1,column2));一张表只能有一个主键但主键可以由多个字段组成。主键会增加少量写入校验开销但能保证每条记录可以被唯一标识因此这样的性能消耗是可以承担的。二自增类型AUTO_INCREMENTAUTO_INCREMENT通常与整数主键配合使用。插入数据时可以省略主键字段由数据库负责维持逐渐的增长。删除记录、回滚事务或手动指定主键后自增值可能不连续。三示例-- 创建createtablestudent(idbigintnotprimarykeyauto_increment,-- 设定主键namevarchar(50)default无名氏,snintnotnullunique);-- 查看表descstudent-- 插入 NULL 报错insertintostudentvalues(NULL,张三,10001);-- 不具体指定主键列的值数据库执行自增操作insertintostudentvalues(李四10002);-- 数据库自己执行自增操作insertintostudentvalues(100,王五,10003);-- 手动指定主键值后续主键从 101 开始-- 创建复合主键只有 id 和 name 的组合不能重复CREATETABLEaccount(idBIGINT,nameVARCHAR(20),emailVARCHAR(50),PRIMARYKEY(id,name));-- 两组主键组合不同可以正常插入INSERTINTOaccount(id,name,email)VALUES(1,张三,zsexample.com),(1,李四,lsexample.com);四、外键约束一通用语法-- 当前表的字段引用关联表中的字段FOREIGNKEY(column_name)REFERENCESreferenced_table(referenced_column)外键通常引用另一张表的主键或UNIQUE字段。插入子表数据时被引用的值必须已存在存在关联数据时也不能直接删除对应的父表记录。二示例-- 创建班级表CREATETABLEclass(idBIGINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(50)NOTNULL);-- 创建学生表并让 class_id 引用班级编号CREATETABLEstudent_detail(idBIGINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(50)NOTNULL,class_idBIGINT,FOREIGNKEY(class_id)REFERENCESclass(id));-- 先插入班级再插入对应的学生INSERTINTOclass(name)VALUES(101班),(102班);INSERTINTOstudent_detail(name,class_id)VALUES(张三,1),(李四,2);如果插入不存在的class_id或直接删除仍被学生记录引用的班级数据库会拒绝该操作。

相关新闻

Apple 诉 OpenAI 持续发酵:一场诉讼如何成为 OpenAI 的多米诺骨牌

Apple 诉 OpenAI 持续发酵:一场诉讼如何成为 OpenAI 的多米诺骨牌

Apple 诉 OpenAI:一张诉讼状里的"人才版图" Apple 诉 OpenAI 这件事,已经不再只是一桩商业秘密纠纷。近日,苹果把一份贸易秘密(trade secret)诉讼状递到法院。贸易秘密,简单说就是企业没公开的、…

2026/7/21 16:50:23阅读更多 →
2026年AI写作工具深度测评:全面解析写小说软件与创作平台的优劣势

2026年AI写作工具深度测评:全面解析写小说软件与创作平台的优劣势

AI 写小说的工具 2026 年已经多到让人选择困难。但说句实话——大部分工具只能陪你"聊着写",管不了一本书。我花了两个月,把市面上主流的 AI 写小说工具全部跑了一遍。不讲参数表,只讲一个问题:这个东西到底能不能帮我把…

2026/7/21 16:01:56阅读更多 →
TinyMCE终极指南:如何在富文本编辑中无缝集成Markdown高效输入

TinyMCE终极指南:如何在富文本编辑中无缝集成Markdown高效输入

TinyMCE终极指南:如何在富文本编辑中无缝集成Markdown高效输入 【免费下载链接】tinymce The worlds #1 JavaScript library for rich text editing. Available for React, Vue and Angular 项目地址: https://gitcode.com/gh_mirrors/ti/tinymce TinyMCE作为…

2026/7/21 16:51:05阅读更多 →
C++进阶核心:指针、面向对象与内存管理实战解析

C++进阶核心:指针、面向对象与内存管理实战解析

1. 项目概述:从“知道”到“会用”的C进阶之路如果你已经啃完了C的上半部分,知道了变量、循环、条件判断这些基础语法,那么恭喜你,你已经成功推开了C世界的大门。但站在门口往里看,是不是感觉里面结构复杂、概念繁多&a…

2026/7/22 4:52:35阅读更多 →
AI技术如何优化国自然基金申报流程

AI技术如何优化国自然基金申报流程

1. 项目概述:AI赋能国自然申报的新范式2026年度国家自然科学基金申报季临近,科研人员正面临一个关键抉择:如何在有限时间内打造出兼具创新性与严谨性的优质申请书。传统申报模式往往需要耗费数月时间进行文献调研、技术路线设计和文本打磨&am…

2026/7/22 4:52:35阅读更多 →
C++指针深度解析:从内存地址到函数指针的全面指南

C++指针深度解析:从内存地址到函数指针的全面指南

1. 项目概述:指针——C的灵魂与利刃 在C的世界里,指针常常被初学者视为“洪水猛兽”,却又被资深开发者奉为掌控内存、提升性能的“神兵利器”。它就像一把双刃剑,用得好,可以写出高效、灵活、接近底层的代码&#xff1…

2026/7/22 4:52:35阅读更多 →
C++ STL队列(std::queue)详解:从FIFO原理到BFS实战应用

C++ STL队列(std::queue)详解:从FIFO原理到BFS实战应用

1. 队列(Queue)是什么?从生活场景到C STL 如果你在食堂打过饭,在银行取过号,或者在任何一个需要“先来后到”的场景里排过队,那么你已经对“队列”这个概念有了最直观的理解。队列,作为一种数据…

2026/7/22 4:52:35阅读更多 →
点云处理中的体素网格降采样技术详解

点云处理中的体素网格降采样技术详解

1. 项目概述点云处理中的体素网格降采样(Voxel Grid Downsampling)是三维数据处理领域的一项基础但关键的技术。我在处理激光雷达扫描数据时,经常遇到点云数据量过大的问题——单次扫描就能产生数百万个点,直接处理不仅计算资源消…

2026/7/22 4:52:35阅读更多 →
MacBook Air M5 运行 Steam 游戏实测:兼容性、画质与散热全解析

MacBook Air M5 运行 Steam 游戏实测:兼容性、画质与散热全解析

这类标题最容易让人误解——以为新硬件能通吃所有游戏,结果实际一跑就发现兼容性、发热、性能释放全是坑。我更建议先搞清楚 MacBook Air M5 跑 Steam 游戏的真实边界:它确实能流畅运行一部分优化好的 3A 大作,但绝不是“无压力通吃”。关键要…

2026/7/22 4:50:34阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →