7.1 认识数据表中的约束

在数据库中添加约束的主要原因是保证数据的完整性(正确性)。简单地说,约束是用来保证数据库完整性的一种方法,设计表时,需要定义列的有效值并通过限制字段中数据、记录中数据和表之间的数据来保证数据的完整性。

在SQL Server 2017中,常用的约束有6种,分别是:主键约束(primary key constraint)、外键约束(foreign key constraint)、默认值约束(default constraint)、检查约束(check constraint)、唯一性约束(unique constraint)和非空约束。

在数据库中添加这6种约束的好处如下:

(1)主键约束:主键约束可以在表中定义一个主键值,以唯一确定表中每一条记录,是最重要的一种约束。另外,设置主键约束的列不能为空。主键约束的列可以由1列或多列来组成,由多列组成的主键被称为联合主键。有了主键约束,在数据表中就不用担心出现重复的行了。

(2)唯一性约束:唯一性约束(UNIQUE)确保在非主键列中不输入重复的值,用于指定一个或者多个列的组合值具有唯一性,以防止在列中输入重复的值。用户可以对一个表定义多个UNIQUE约束,但只能定义一个PRIMARY KEY约束。UNIQUE约束允许空值,但是当和参与UNIQUE约束的任何值一起使用时,每列只允许一个空值。

(3)检查约束:检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。检查约束通过数据的逻辑表达式确定有效值,一张表中可以设置多个检查约束。

(4)默认值约束:默认值约束指定在插入操作中如果没有提供输入值时,系统自动指定插入值,即使该值是NULL。当必须向表中加载一行数据但不知道某一列的值或该值尚不存在时,可以使用默认值约束。默认值约束可以包括常量、函数、不带变元的内建函数或者空值。

(5)外键约束:外键约束用于强制参照完整性,提供单个字段或者多个字段的参照完整性。定义时,该约束参考同一个表或者另外一个表中主键约束字段或者唯一性约束字段,而且外键表中的字段数目和每个字段指定的数据类型都必须和REFERENCES表中的字段相匹配。

(6)非空约束:一张表中可以设置多个非空约束,主要用来规定某一列必须要输入值。有了非空约束,就可以避免表中出现空值了。