总结一下mysql常见约束
时间: 2025-05-18 10:07:50 浏览: 23
### MySQL 常见约束类型及作用总结
#### 主键约束 (PRIMARY KEY)
主键用于唯一标识表中的每一行记录。它不允许为空值(NULL),并且在一个表中只能定义一个主键。主键可以由单个字段组成,也可以由多个字段组合而成(复合主键)。通过主键约束,能够确保每条记录的唯一性和完整性[^1]。
#### 唯一键约束 (UNIQUE)
唯一键约束确保某列或多列组合的数据在整个表范围内不重复。与主键不同的是,唯一键允许存在 NULL 值,并且可以在同一张表上定义多个 UNIQUE 约束。需要注意的是,虽然唯一键允许多个 NULL 值,但在某些数据库实现中,这些 NULL 值可能仍然会被视为不同的实体[^2]。
#### 外键约束 (FOREIGN KEY)
外键用来建立两个表之间的关系,从而维护数据的一致性和参照完整性。具体来说,外键是一个字段或一组字段,其值必须匹配另一个表中的主键或其他唯一索引字段的值。如果违反这一规则,则无法执行相应的插入或更新操作。此外,在涉及级联删除或更新的情况下,外键还能自动同步相关联的数据变化[^3]。
#### 非空约束 (NOT NULL)
非空约束规定某一特定字段不得含有任何 NULL 值。这意味着当向该字段写入新纪录时,必须提供有效的输入值。此类型的约束有助于防止因缺失重要信息而导致的应用程序错误或逻辑混乱[^4]。
#### 默认值约束 (DEFAULT)
默认值约束为指定字段设定了一个初始值,这样在未明确给出其他值的时候就会采用这个预设值填充相应位置。这对于那些经常保持不变或者有固定模式可循的信息非常有用,比如状态标志位、时间戳等属性都可以利用 DEFAULT 来简化日常管理流程。
#### 检查约束 (CHECK)
尽管标准 SQL 支持 CHECK 约束以验证所存储数值是否满足一定条件范围内的要求,但目前主流版本的 MySQL 并未完全支持这种功能。不过可以通过触发器等方式间接达到类似效果——即限定某些列只接受符合条件的数据项加入其中。
```sql
-- 创建带各种约束的表格示例
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
department_id INT,
hire_date DATE DEFAULT CURRENT_DATE(),
salary DECIMAL(10, 2),
CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES departments(id) ON DELETE CASCADE
);
```
上述代码片段展示了如何综合运用多种约束来构建一张结构严谨的关系型数据库表 `employees` ,其中包括了主键自增机制、必填字段设定、电子邮件地址独占性保障措施以及雇佣日期自动化处理等内容。
---
阅读全文
相关推荐



















