DB2表约束

DB2支持的表约束包括非空约束[NOT NULL],主键约束[PRIMARY KEY],唯一性约束[UNIQUE],外键约束[FOREIGN KEY]和检查性约束[CHECK]
     1:非空约束[NOT NULL]
空值[NULL]是不存在的值,不是0也不是空字符串。默认情况下表中的是允许为NULL的,在建表时如
NAME VARCHAR(20) NOT NULL,即标记该字段不能为空。
     2:主键约束[PRIMARY KEY]
主键用于唯一的标识表中的每一行记录,在一个表中,最多只能有一个主键约束[可没有],主键既可以由一个列组成,也可以由两个或以上的列组成[这种称为组合键],主键约束同时也具有非空约束的特征。如果主键约束由一列组成,该主键约束被称为行级约束,如果主键由两个或以上列组成,则该主键约束被称为表级约束。主键约束列不允许为空值。
     ALTER TABLE TAB_NAME ADD PRIMARY KEY COL_NAME;
     3:唯一性约束[UNIQUE]
唯一性约束强调所在的列不允许有相同的值,但是它的定义要比主键约束弱,即它允许所在的列可以为空值。唯一性约束的主要作用是在保证除主键列外,其他列值的唯一性。
     ALTER TABLE TAB_NAME ADD UNIQUE COL_NAME;
     4:外键约束[FOREIGN KEY]
一般的外键约束会使用两个表进行关联[也存在一个表自连接的情况],外键是指'当前表[外键表]'引用另一个表[即被引用的表]的某个列或某几个列,而被引用的表的列必须具有主键约束或者唯一性约束。被引用表的列中不存在的数据不能出现在当前表对应的列中。一般情况下,当删除被引用表中的数据时,该数据也不能出现在外键表的外键列中,如果外键列存储了被引用表中将要删除的数据,那么对被引用的删除操作将失败,添加外键约束的语法如下:
     ALTER TABLE TAB_NAME ADD FOREIGN KEY COL_NAME REFERENCES TAB_NAME ON DELETE CASCAHE;
     5:检查约束[CHECK]
指定某个字段内容必须在约束范围之内,如定义的年龄字段不能超过200等
     ALTER TABLE TAB_NAME ADD CONSTRAINT COL_NAME CHECK (约束条件);
在设计时需要考虑这些约束是在数据库层面实现还是在应用程序层实现,在数据层实现的好处是减少了开发工作量,对应用透明,但是若业务逻辑复杂的话,放在应用层实现逻辑更清晰,而且也会增加运维的负担。例如在数据迁移时,如果表上有约束需要执行特别检查

猜你喜欢

转载自blog.csdn.net/tangmingxin0529/article/details/80411698