🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# DBMS 中的约束 > 原文: [https://beginnersbook.com/2015/04/constraints-in-dbms/](https://beginnersbook.com/2015/04/constraints-in-dbms/) 约束强制限制可以从表中插入/更新/删除的数据或数据类型。约束的整个目的是在更新/删除/插入表中时保持**数据完整性**。在本教程中,我们将学习可以在 RDBMS 中创建的几种类型的约束。 ## 约束的类型 * 非空 * 独特 * 默认 * 校验 * 键约束 - 主键,外键 * 域约束 * 映射约束 #### 非空: `NOT NULL`约束确保列不保存`NULL`值。当我们在将记录插入表时不为特定列提供值时,默认情况下它采用`NULL`值。通过指定`NULL`约束,我们可以确定特定列不能具有`NULL`值。 例: ``` CREATE TABLE STUDENT( ROLL_NO INT NOT NULL, STU_NAME VARCHAR (35) NOT NULL, STU_AGE INT NOT NULL, STU_ADDRESS VARCHAR (235), PRIMARY KEY (ROLL_NO) ); ``` 在这里阅读更多关于[这个约束的信息](https://beginnersbook.com/2014/05/not-null-constraint-in-sql/)。 #### 唯一: `UNIQUE`约束强制一列或一组列具有唯一值。如果列具有唯一约束,则意味着特定列不能在表中具有重复值。 ``` CREATE TABLE STUDENT( ROLL_NO INT NOT NULL, STU_NAME VARCHAR (35) NOT NULL UNIQUE, STU_AGE INT NOT NULL, STU_ADDRESS VARCHAR (35) UNIQUE, PRIMARY KEY (ROLL_NO) ); ``` [在这里阅读更多相关信息](https://beginnersbook.com/2014/05/unique-constraint-in-sql/) 。 #### 默认: 当将记录插入表中时没有提供任何值时,`DEFAULT`约束为列提供默认值。 ``` CREATE TABLE STUDENT( ROLL_NO   INT  NOT NULL, STU_NAME VARCHAR (35) NOT NULL, STU_AGE INT NOT NULL, EXAM_FEE INT  DEFAULT 10000, STU_ADDRESS VARCHAR (35) , PRIMARY KEY (ROLL_NO) ); ``` 阅读更多:[默认约束](https://beginnersbook.com/2014/05/default-constraint-in-sql/) #### 检查: 此约束用于指定表的特定列的值范围。在列上设置此约束时,它确保指定的列必须具有落在指定范围内的值。 ``` CREATE TABLE STUDENT( ROLL_NO   INT  NOT NULL CHECK(ROLL_NO >1000) , STU_NAME VARCHAR (35)  NOT NULL, STU_AGE INT  NOT NULL, EXAM_FEE INT DEFAULT 10000, STU_ADDRESS VARCHAR (35) , PRIMARY KEY (ROLL_NO) ); ``` 在上面的例子中,我们在`STUDENT`表的`ROLL_NO`列上设置了检查约束。现在,`ROLL_NO`字段的值必须大于 1000。 ## 键的约束: #### 主键: [主键](https://beginnersbook.com/2015/04/primary-key-in-dbms/)唯一标识表中的每条记录。它必须具有唯一值,并且不能包含空值。在下面的示例中,`ROLL_NO `字段被标记为主键,这意味着`ROLL_NO`字段不能具有重复值和空值。 ``` CREATE TABLE STUDENT( ROLL_NO   INT  NOT NULL, STU_NAME VARCHAR (35)  NOT NULL UNIQUE, STU_AGE INT NOT NULL, STU_ADDRESS VARCHAR (35) UNIQUE, PRIMARY KEY (ROLL_NO) ); ``` #### 外键: 外键是表的列,指向另一个表的主键。它们充当表之间的交叉引用。 [在这里了解更多相关信息。](https://beginnersbook.com/2015/04/foreign-key-in-dbms/) #### 域约束: 每个表都有一组特定的列,每列基于其数据类型允许相同类型的数据。该列不接受任何其他数据类型的值。 [域约束](https://beginnersbook.com/2015/04/domain-constraints-in-dbms/)是**用户定义的数据类型**,我们可以像这样定义它们: 域约束=数据类型+约束(`NOT NULL` / `UNIQUE` / `PRIMARY KEY` / `FOREIGN KEY` / `CHECK` / `DEFAULT`) #### 映射约束: [在这里阅读有关映射约束的内容](https://beginnersbook.com/2015/04/mapping-constraints-in-dbms/)。