表通过约束来确保数据纪录的唯一性,维护表内以及表间的关系。约束,就是数据库管理器强制的规则。有三种规则:唯一性约束,引用完整性,表核查约束。
唯一性约束:关键字的值在表内必须唯一。通过primary key或者unique子句定义。在create table, alter table时候使用。定义唯一性约束之后,数据库管理器创建一个唯一索引并指出它是主索引还是唯一的系统索引。约束通过唯一索引来实现。
引用完整性:定义一些表间或者表内的关系,并由数据库管理器来维护这些关系。就是外关键字和主关键字,依赖表和父表之间的关系。引用约束的目的是维护数据库以及遵守数据入口规则。外关键字可以和父表中的主键或者唯一键建立关系。用到引用完整性的规则有:
DEPTNO主关键字 | DEPTNAME | MGRNO |
EMPLOYEENO主关键字 | FIRSTNAME | LASTNAME | WORKDEPT外关键字 | PHONENO |
(1)INSERT规则:父表中插入行不依赖于依赖表;依赖表中插入行,必须考察外键和父表主键/唯一键的关系是否允许插入。
(2)DELETE规则:从依赖表中删除行时候,对父表没有影响。从父表中删除行时候,要考察建立依赖表时候指定的规则:RESTRICT,则必须先删除依赖表中的行,才能删除父表中的行,不能单独删除父表中的行。NO ACTION,字面理解就是无作为,但是依赖表所有的行也还要有父行,于是就要保证删除后依赖行仍然有父行,具体可以参考SQL Reference。CASCADE(级联),删除父行时候,自动删除依赖行。SET NULL,删除父行时候,将依赖行的外关键字置空(如果允许空),其它部分不变。
(3)UPDATE规则:禁止更新父表中行的关键字。更新依赖表的外关键字时候,若该外关键字定义为NOT NULL选项,它必须和父键中的值匹配。两个选项。RESTRICT,