# 约束（主键、非空等）

URL: https://caijiao.org/sqlite/types/constraints
Source: docs/sqlite/types/constraints.md
Description: 本章节介绍 SQLite 中常用的约束类型，如主键、非空、唯一、默认值等，帮助保证数据的完整性和一致性。

[SQLite](/sqlite/) 支持多种约束，用于限制表中数据，保证数据的有效性和完整性。

## 常见约束类型

- **PRIMARY KEY（主键）**  
  唯一标识表中的每条记录，且不能为空。通常用于唯一 ID。

- **NOT NULL（非空）**  
  限制字段不能为空，确保必须有值。

- **UNIQUE（唯一）**  
  保证字段值唯一，不允许重复。

- **DEFAULT（默认值）**  
  当插入数据未指定该字段值时，使用默认值。

- **CHECK（检查）**  
  对字段值设置条件限制，保证数据合法。

## 示例

创建带约束的表：

```sql
CREATE TABLE users (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  email TEXT UNIQUE,
  age INTEGER DEFAULT 18,
  CHECK (age >= 0)
);
```

- `id` 为主键，自动唯一且非空。
- `name` 字段不能为空。
- `email` 字段必须唯一。
- `age` 默认为 18，且不能为负数。

合理使用约束，有助于维护数据库数据的规范和安全。
