为了保证数据的完整性,不会出现重复和类型错误,比如,成绩里面出现了姓名,两个
人有同一个身份证号等等。我们还要对数据进行约束,来保证数据的完整性,我们常用
以下三种类型的约束来保证数据的完整性。
- 实体完整性
- 域(列)完整性
- 引用完整性
一.、实体完整性
实体完整性的作用:就是保证实体具有唯一标识(也就是保证所有的行唯一),那么如
何做才能保证实体完整性呢?我们可以通过主键约束、标识列或唯一约束 来保证每一
行都不会有重复。
主键约束(primary key):
什么叫主键约束呢?主键约束就是,我们找到一列数据(比如学生信息,学生信息包
括:学号、姓名、班级、家庭地址、身份证号),比如学号,每个学号都只代表一个
人,我们就可以用这个学号来作为 主 键。那么我们怎么让这一列成为主键呢?光靠
说肯定不行,有两种方法:
第一种方法:建表的时候就表明谁是主键,这是最常用的一种方法。举个栗子:
create table Students
(
StudentId int identity(10000,1) primary key, -学号(主键)
-从10000开始,每次递增1
StudentName varchar(20) not null,
Gender char(2) not null,
StudentIdNo numeric(18,0) not null - 身份证号
ClassId int refernces StudentsClass (ClassId) - 班级编号(外键)
)
我们在列的特征那加上 primary key来表明这就是主键,就是这么简单。
第二种方法:就是使用添加约束的基本语法,这种不常用,了解就好
语法结构:
alter table 表名 add constraint 约束名 约束类型 具体的约束说明
比如: alter table Students add constraint PK_StudentId primary key (StudentId)
标识列:
我们使用标识列也能作为行的唯一区分,标识列上一篇里讲到了,这里不多说。
唯一约束(Unique Key):
如果不想这一列的值出现重复的错误(比如身份证号),我们可以给他加上唯一约束,唯一约束也可以建表的时候表明,也可以使用一下语法
语法:
alter table Students add constraint UQ_StudentIdNo Unique key (StudentIdNo)
一般情况下,每一个表都要有一个主键,一个数据表必须有主键才有意义,如果你找的
这个主键并不能作为这一行的唯一区分,那么就说明这个主键你找错了。如果找了半天
都没有找到合适的一列来作为主键呢,又该怎么办?别急,如果找不到,我们就给他加
上这么一列,这一列就是标识列,我们用标识列来作为主键。
二.、域(列)完整性
域(列)完整性的作用就是保证实体的属性值符合规范要求,比如年龄里面不能出现地
名,对年龄进行范围限制等。我们可以使用检查约束(check key),默认值(default),
非空约束,数据类型来对数据进行约束。
检查约束与默认约束:
alter table Students add constraint ck_Age check (ck_Age )
创建默认约束
alter table Students add constraint df_StudentsAddress default(d"地址不详") for
StudentsAddress
三.、引用完整性
引用完整性就是我们所说的外键关系,为了保证两表种相同属性值的一致性,建立外键
关联另一个表的主键。
方法:外键约束(foreign key)
alter table Students add constraint fk_ClassId foreign key(ClassId) refeences
StudentsClass (ClassId)
ClassId是StudentsClass表中的主键,是Students中的外键
注意:添加数据时,要首先添加主键表,再添加外键表,删除数据时,要先删除外键表
数据,再删除主键表数据。
创建完一个完整的数据库,接下来就是数据的增 删 查 改,请看下篇。。。