首页/数据/数据库速查/约束与外键:主键 / 唯一 / 非空 / 外键
本包目录(495 条)
MySQL 基础与连接36 条
SQL 语法52 条
用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条Redis 命令96 条Redis 运维与场景124 条

约束与外键:主键 / 唯一 / 非空 / 外键

用约束把数据正确性交给数据库:主键唯一标识、UNIQUE 防重复、NOT NULL 防缺失、外键保引用完整;外键在高并发写入场景要权衡。

数据库速查数据更新于 2026-10-12
用途数据完整性
约束PRIMARY KEY / UNIQUE / NOT NULL / DEFAULT / CHECK / FOREIGN KEY
开关FOREIGN_KEY_CHECKS

外键示例

外键示例
CREATE TABLE order_items (
  id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
  order_id BIGINT UNSIGNED NOT NULL,
  sku VARCHAR(64) NOT NULL,
  qty INT NOT NULL CHECK (qty > 0),
  CONSTRAINT fk_order FOREIGN KEY (order_id) REFERENCES orders(id)
    ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE=InnoDB;
批量导入时可临时 SET FOREIGN_KEY_CHECKS=0 提速,但只限数据校验阶段,导入完成务必恢复为 1。

易错点

  • 外键检查加锁可能带来额外争用,分库分表与高并发写入系统常改用应用层保证
  • ON DELETE CASCADE 会静默级联删除大量行,设计时先想清影响面

数据来源与参考

  • MySQL 8.0 Reference Manual: CREATE TABLE - Foreign Key Constraints

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌