Skip to content

约束

mysql约束用于确保数据库的数据满足特定的商业规则

mysql中,有五种常用的约束:

  • not null:非空,基本使用:字段名 字段类型 not null,如果在列上定义了非空,那么插入数据时,必须为该列提供数据

  • unique:唯一,基本使用:字段名 字段类型 unique,当定义了唯一约束后,该列的值是不能重复的,注意:如果没有指定not null,则声明了unique的字段可以有多个null;同时,一张表中可以有多个unique字段;如果一个列指定了非空和唯一,那么这个列的效果就类似于主键的效果

  • primary key:主键,基本使用:字段名 字段类型 primary key,用于唯一的标示表行的数据,当定义主键约束后,该列的值不能重复

    使用细节:

    • 主键的值不能重复,且不能为null
    • 一张表中,只能有一个主键(在实际的开发中,一张表往往都会有一个主键),但可以是复合主键primary key(列名1, 列名2)(两个列的内容都相同才会违反主键的约束)
    • 主键的指定方式有两种:
      • 直接在字段名后面指定:字段名 primary key
      • 在表定义最后面写:primary key(列名)
    • 使用DESC 表名,可以查看主键的使用情况
  • foreigin key:外键,用于定义主表和从表之间的关系:外键约束要定义在从表上,主表则必须具有主键约束或者是unique约束。当定义外键约束后,要求外键列数据必须在主表的主键列存在或者是为null,否则从表的数据是添加不进去的,同理,如果主表于从表形成了外键约束,在从表对应数据存在时,主表对应的内容是不能进行删除的

  • check:用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal列的值在1000~2000之间,如果不在范围内,就会提示出错

    基本语法:字段名 字段类型 check (check条件),如sal DOUBLE CHECK (sal > 100 AND sal < 200)

    注意:oraclesql server均支持check约束,但是mysql5.7目前还不支持check,只是作为语法校验

Released under the MIT License.