使用CREATE TABLE语句创建数据表的时候,通过定义一个字段的类型,我们规范了一个字段所能存储的数据类型,但是在有的情况下这种类型的约束是远远不够的。加入一个用户向T_Person表中录入数据,由于疏忽它录入的数据中有一条记录中的FName字段忘记了填入数据,这就造成了一个没有名字的人员的出现,即数据库中的数据遭到了污染。
可以在宿主程序中通过应用逻辑来保证数据的正确性,比如在用户点击【保存】按钮的时候去校验是否录入了“人员名称”,如果没有录入则提示用户“人员名称不能为空!”。这样可以保证绝大多数情况下的数据的正确性,但是在如下几种情况下仍然无法保证数据的正确性:宿主程序中存在Bug,导致不正确的数据被保存到了数据表中;有一定技术条件的用户跳过宿主程序,直接修改数据库破坏数据的正确性。因此需要数据库系统提供指定数据表中数据约束条件的机制,这样校验在数据库系统这一最终层面来完成,保证了数据万无一失的正确性,而且在数据库系统中比在宿主程序中的校验更加高效。
数据库系统中主要提供了如下几种约束:非空约束;唯一约束; CHECK 约束;主键约束;外键约束。本节中将会对这些约束做一一介绍。