约束

分类

根据列的数目分为:

  • 列级约束
    • 对一个数据列建立的约束,称为列级约束
    • NOT NULL 和 DEFAULT 只有列级约束
    • 其他三个有表级约束
  • 表级约束
    • 对多个数据列建立的约束,称为表级约束

列级约束可以在列定义时声明,也可以在列定义后声明。
表级约束只能在列定义后声明。

根据功能分为:

代码 描述
NOT NULL 非空约束
PRIMARY KEY 主键约束
UNIQUE 唯一约束
DEFAULT 默认约束
FOREGIN KEY 外键约束

注意

  • 父表和子表具有相同的存储引擎(–InnoDB–)
  • 外键列和参照列必须具有相似的数据类型
    • 其中数字的长度或是否有符号必须相同
    • 字符的长度可以不同
  • 外键列和参照列必须创建 _索引_,如果外键列不存在索引,MySQL 会自动帮其创建,但是不会自动帮参照列创建

父表:具有参照列的是父表,比如省份与人中的省份。
子表:具有外键列的是子表,比如人

外键约束的参照操作

  • CASEADE //更新(删除)父表(中的行),子表也随之更新
  • SET NULL
  • RESTRICT
  • NO ACTION //标准的 SQL 关键字,功能与 MySQL 中的 RESTRICT 相同。