原文: https://beginnersbook.com/2015/04/constraints-in-dbms/

约束强制限制可以从表中插入/更新/删除的数据或数据类型。约束的整个目的是在更新/删除/插入表中时保持数据完整性。在本教程中,我们将学习可以在 RDBMS 中创建的几种类型的约束。

约束的类型

  • 非空
  • 独特
  • 默认
  • 校验
  • 键约束 - 主键,外键
  • 域约束
  • 映射约束

非空:

NOT NULL约束确保列不保存NULL值。当我们在将记录插入表时不为特定列提供值时,默认情况下它采用NULL值。通过指定NULL约束,我们可以确定特定列不能具有NULL值。

例:

  1. CREATE TABLE STUDENT(
  2. ROLL_NO INT NOT NULL,
  3. STU_NAME VARCHAR (35) NOT NULL,
  4. STU_AGE INT NOT NULL,
  5. STU_ADDRESS VARCHAR (235),
  6. PRIMARY KEY (ROLL_NO)
  7. );

在这里阅读更多关于这个约束的信息

唯一:

UNIQUE约束强制一列或一组列具有唯一值。如果列具有唯一约束,则意味着特定列不能在表中具有重复值。

  1. CREATE TABLE STUDENT(
  2. ROLL_NO INT NOT NULL,
  3. STU_NAME VARCHAR (35) NOT NULL UNIQUE,
  4. STU_AGE INT NOT NULL,
  5. STU_ADDRESS VARCHAR (35) UNIQUE,
  6. PRIMARY KEY (ROLL_NO)
  7. );

在这里阅读更多相关信息

默认:

当将记录插入表中时没有提供任何值时,DEFAULT约束为列提供默认值。

  1. CREATE TABLE STUDENT(
  2. ROLL_NO INT NOT NULL,
  3. STU_NAME VARCHAR (35) NOT NULL,
  4. STU_AGE INT NOT NULL,
  5. EXAM_FEE INT DEFAULT 10000,
  6. STU_ADDRESS VARCHAR (35) ,
  7. PRIMARY KEY (ROLL_NO)
  8. );

阅读更多:默认约束

检查:

此约束用于指定表的特定列的值范围。在列上设置此约束时,它确保指定的列必须具有落在指定范围内的值。

  1. CREATE TABLE STUDENT(
  2. ROLL_NO INT NOT NULL CHECK(ROLL_NO >1000) ,
  3. STU_NAME VARCHAR (35) NOT NULL,
  4. STU_AGE INT NOT NULL,
  5. EXAM_FEE INT DEFAULT 10000,
  6. STU_ADDRESS VARCHAR (35) ,
  7. PRIMARY KEY (ROLL_NO)
  8. );

在上面的例子中,我们在STUDENT表的ROLL_NO列上设置了检查约束。现在,ROLL_NO字段的值必须大于 1000。

键的约束:

主键:

主键唯一标识表中的每条记录。它必须具有唯一值,并且不能包含空值。在下面的示例中,ROLL_NO字段被标记为主键,这意味着ROLL_NO字段不能具有重复值和空值。

  1. CREATE TABLE STUDENT(
  2. ROLL_NO INT NOT NULL,
  3. STU_NAME VARCHAR (35) NOT NULL UNIQUE,
  4. STU_AGE INT NOT NULL,
  5. STU_ADDRESS VARCHAR (35) UNIQUE,
  6. PRIMARY KEY (ROLL_NO)
  7. );

外键:

外键是表的列,指向另一个表的主键。它们充当表之间的交叉引用。
在这里了解更多相关信息。

域约束:

每个表都有一组特定的列,每列基于其数据类型允许相同类型的数据。该列不接受任何其他数据类型的值。

域约束用户定义的数据类型,我们可以像这样定义它们:

域约束=数据类型+约束(NOT NULL / UNIQUE / PRIMARY KEY / FOREIGN KEY / CHECK / DEFAULT

映射约束:

在这里阅读有关映射约束的内容