zoukankan      html  css  js  c++  java
  • 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):

      

  • 相关阅读:
    动态规划总结(01背包 完全背包 多重背包)
    HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化)
    HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化)
    HDOJ(HDU).2191. 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活 (DP 多重背包+二进制优化)
    HDOJ(HDU).2159 FATE (DP 带个数限制的完全背包)
    HDOJ(HDU).4508 湫湫系列故事――减肥记I (DP 完全背包)
    HDOJ(HDU).1284 钱币兑换问题 (DP 完全背包)
    HDOJ(HDU).1114 Piggy-Bank (DP 完全背包)
    HDOJ(HDU).3466 Dividing coins ( DP 01背包 无后效性的理解)
    POJ.3624 Charm Bracelet(DP 01背包)
  • 原文地址:https://www.cnblogs.com/lqkStudy/p/11470560.html
Copyright © 2011-2022 走看看