SQL——约束

环境

  DBMS:MySQL 8.0.17

  工具:Navicat Premium 11.2.16

概述

  约束是指对当前字段的数据的限制条件。常见的约束有:非空约束、default约束、唯一约束、check约束、主键约束和外键约束。

非空约束

  定义了非空约束的字段的数据不能取空值。

default约束

  定义了default约束的字段的数据没有被赋值或被赋予空值时会取默认值。

唯一约束

  若唯一约束只有一个字段,则该字段的值必须唯一。

  若唯一约束包含多个字段,则所有字段值的组合必须唯一。

check约束

  定义了check约束的字段的数据取值必须满足check约束中定义的条件。

主键约束

  定义了主键约束的一个或多个字段组合成一个主键。

  一个基本表中最多只能有一个主键。

  主键的值必须唯一且不能取空值。也就是说:

  • 若主键只有一个字段,则该字段的值必须唯一且不能取空值。
  • 若主键包含多个字段,则每个字段的值不能取空值,所有字段值的组合必须唯一。

外键约束

  定义了外键约束的字段成为外键。

  外键必须关联一个字段,而且该字段必须具有唯一约束或主键约束,而外键的数据类型必须与该字段的数据类型相同。

  外键的取值要么为空值,要么为关联字段中的一个值。

定义约束

  约束的定义有两种方式:

  列级约束是在对列进行定义时添加约束。列级约束无法定义多个字段的约束。

  表级约束是在对表进行定义时为表中的字段添加约束。表级约束无法定义非空约束、default约束和check约束。

  MySQL中check约束不起作用,而且外键约束只有通过表级约束定义才能生效。

  所以,通常情况下:

  • 非空约束、default约束使用列级约束定义。
  • 外键约束使用表级约束定义。
    FOREIGN KEY(<列名>) REFERENCES <表名>(<列名>);
  • 定义单个字段的唯一约束或主键约束使用列级约束定义。
  • 定义多个字段组合的唯一约束或主键约束使用表级约束定义。
    UNIQUE | PRIMARY KEY(<列1>,<列2>,...)

  创建基本表class,包含字段clno(主键)、clname(非空、唯一):

  

  创建基本表student,其中包含字段sno(主键、自增)、sname(非空、唯一)、sage、ssex(默认值为“男”)、shobby、clno(关联class表的clno):

  

posted on 2019-09-05 23:39  寇德·坡特  阅读(284)  评论(0)    收藏  举报

导航