SQL 中的约束是应用于数据库表的规则,用于强制数据完整性并确保一致性。它们定义了数据在插入、更新或删除时必须满足的特定条件。约束是表结构的一部分,并由数据库引擎自动强制执行,无需在应用程序代码中进行手动检查。常见的类型包括 PRIMARY KEY(主键)、FOREIGN KEY(外键)、UNIQUE(唯一)、NOT NULL(非空)和 CHECK(检查)约束。每种约束都有其独特的用途,例如防止重复值、链接相关表或确保值落在有效范围内。通过使用约束,开发人员可以在不完全依赖应用程序逻辑的情况下维护可靠的数据关系和有效性。
例如,PRIMARY KEY 约束确保表中的某一列(或列的组合)唯一标识每一行。如果创建一个 users
表,其中 user_id INT PRIMARY KEY
,则数据库将阻止任何复制现有 user_id
的插入或更新操作。FOREIGN KEY 约束,例如 FOREIGN KEY (department_id) REFERENCES departments(id)
,强制要求 department_id
中的值必须存在于 departments
表中,从而防止出现孤立记录。CHECK 约束,例如 CHECK (salary > 0)
,确保 salary
列仅包含正数。NOT NULL 强制列始终具有值,而 UNIQUE 保证列中没有重复项(例如,电子邮件地址)。这些约束通常在使用 CREATE TABLE
创建表时定义,或者稍后使用 ALTER TABLE
添加。
在使用约束时,开发人员必须在数据完整性与性能和灵活性之间取得平衡。例如,FOREIGN KEY 约束可能会由于引用检查而减慢批量操作的速度,而 UNIQUE 约束则需要索引以避免全表扫描。然而,通过将验证逻辑集中在数据库中,它们降低了应用程序的复杂性。约束还有助于及早捕获错误——例如,CHECK 约束阻止负数价格可以避免财务计算中的下游错误。正确应用约束可以作为安全网,确保即使应用程序不断发展,数据也能遵循业务规则。它们是设计健壮、可维护的数据库的基础工具。