主键约束确保每行数据唯一且非空,一个表仅能有一个主键,可由单列或多列组成,自动创建唯一索引;例如id INT PRIMARY KEY。

在 MySQL 中,约束条件是用来限制表中数据的规则,确保数据的准确性、一致性和完整性。它们在创建表(CREATE TABLE)或修改表(ALTER TABLE)时定义,防止不符合规范的数据被插入、更新或删除。
1. 主键约束(PRIMARY KEY)
主键用于唯一标识表中的每一行数据,不能为 NULL,且必须唯一。
- 一个表只能有一个主键
- 可以是单个字段,也可以是多个字段的组合(复合主键)
- 自动创建唯一索引,提升查询效率
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
2. 唯一约束(UNIQUE)
确保某列或多列的值在整个表中是唯一的,但允许有 NULL 值(NULL 可以出现多次)。
- 一个表可以有多个唯一约束
- 常用于邮箱、身份证号等需要唯一性的字段
CREATE TABLE users (email VARCHAR(100) UNIQUE);
3. 非空约束(NOT NULL)
规定某列不能存储 NULL 值,必须提供有效数据。
- 常与默认值(DEFAULT)配合使用
- 避免数据缺失导致逻辑错误
CREATE TABLE users (name VARCHAR(50) NOT NULL);
4. 默认值约束(DEFAULT)
当插入数据时未指定某列的值,系统会自动使用默认值填充。
JTBC CMS(5.0) 是一款基于PHP和MySQL的内容管理系统原生全栈开发框架,开源协议为AGPLv3,没有任何附加条款。系统可以通过命令行一键安装,源码方面不基于任何第三方框架,不使用任何脚手架,仅依赖一些常见的第三方类库如图表组件等,您只需要了解最基本的前端知识就能很敏捷的进行二次开发,同时我们对于常见的前端功能做了Web Component方式的封装,即便是您仅了解HTML/CSS也
- 适用于创建时间、状态字段等有固定初始值的场景
CREATE TABLE orders (status VARCHAR(20) DEFAULT 'pending');
5. 外键约束(FOREIGN KEY)
用于建立两个表之间的关联,确保引用的值在被引用表中存在,维护数据的一致性。
- 外键指向另一个表的主键或唯一键
- 防止非法数据插入,比如订单中的用户 ID 必须存在于用户表中
- 可设置级联操作(CASCADE),如删除用户时自动删除其订单
CREATE TABLE orders (user_id INT, FOREIGN KEY (user_id) REFERENCES users(id));
6. 检查约束(CHECK)
定义某列的取值范围或条件,只有满足条件的数据才能插入或更新。
- MySQL 8.0+ 支持 CHECK 约束(早期版本会解析但不执行)
- 可用于限制年龄、价格等数值范围
CREATE TABLE students (age INT CHECK (age >= 0 AND age
基本上就这些。合理使用约束能减少应用层的数据校验压力,提升数据库的可靠性。虽然约束会带来少量性能开销,但在大多数场景下,数据完整性比这点性能更重要。









