约束

约束的种类

NOT NULL

  • NOT NULL 只有列级定义方式,没有表级(只能加在字段后面)

UNIQUE

  • 不能重复,但是可以为NULL

PRIMARY KEY

  • 不能重复,不能为NULL

  • 一张表只能有一个主键

  • 根据主键性质可划分为:

    • 自然主键(主键值是一个和业务没有任何关系的自然数,推荐使用)

    • 业务主键(主键值和业务挂钩,例如:用银行卡的卡号做主键、用身份证号做主键。不推荐使用,因为业务一旦发生改变主键值也需要发生改变,而有时主键值改变不了)

  • 根据字段数可划分为:

    • 单一主键(常用,推荐使用)

    • 复合主键(不建议使用,违背三范式)

  • MySQL提供主键值自增:AUTO_INCREMENT 自动维护一个自增的数字,从1开始,以1递增

FOREIGN KEY

  • 有外键的表叫做子表,被外键引用的表叫做父表

  • 操作顺序:

    • 删除数据:先删子,再删父

    • 添加数据:先父再子

    • 创建表:先父再子

    • 删除表:先子再父

  • 外键引用其他表的字段时,被引用的字段需要具有唯一性

  • 外键约束主要为数据有效性验证

  • 案例见下方代码

CHECK

DEFAULT

列级约束

表级约束

Last updated