完整性是指数据的准确性和一致性
针对表中的数据做一些完整性检查操作,通过表的约束完成
通常在建表的时候作为元组的属性加入。
一、完整性约束定义
完整性约束关键字 | 含义 |
---|---|
NOT NULL | 约束字段的值不能为空 |
DEFAULT | 设置字段的默认值 |
UNIQUE | 约束字段的值唯一 |
PRIMARY KEY | 约束字段为表的主键,可以作为该表记录的唯一标识 |
AUTO_INCREMENT | 约束字段的值为自动增加 |
FOREIGN KEY | 约束字段为表的外键 |
CHECK ( ) | 检查列值是否满足一个条件表达式 |
单字段主键
对单属性构成的码有两种说明方法,一种是定义为列级约束条件,另一种是定义为表级约束条件。
列级约束条件
create table student(
sno char(9) primary key,
sname char(20) not null,
sex char(2)
);
表级约束条件
create table student(
sno char(9),
sname char(20) not null,
sex char(2),
primary key (sno)
);
多字段主键
对多属性构成的码只能用表级约束条件。
将sno和sname两个属性(列)定义为码
create table student(
sno char(9) not null,
sname char(20) not null,
sex char(2),
primary key (sno,sname)
);
外键
外键保证两个多个表之间的参照完整性,主要目的是控制存储在外键表中的数据。
设置外键约束的两个表之间会具有父子关系,子表中的为外键
创建SC表,其中(sno,cno)是主码。sno、cno分别参照关联student表的主码和course表的主码。
create table SC(
sno char(9) not null,
sname char(20) not null,
cno char(9),
primary key (sno,cno),
foreign key (sno) references student(sno),
foreign key (cno) references course(cno)
);
check约束
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
创建表时使用check约束
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Sex char(2) check (FirstName in ('男','女')),
CHECK (Id_P>0)
)
表已存在的情况下创建check约束
ALTER TABLE Persons
ADD CHECK (Id_P>0)
删除check约束
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
二、完整性约束检查
发生完整性不一致时,系统会有以下策略:
1、拒绝执行
2、级联操作(cascade)
3、设置为空值
级联操作
决定了从表的外码更新了之后,主表的主码做出什么操作
ON DELETE CASCADE 级联删除
ON UPDATE CASCADE 级联更新
ON UPDATE NO ACTION 无操作
同步删除
同步更新
不对主表进行操作
来源:CSDN
作者:Mr.庞
链接:https://blog.csdn.net/weixin_39589033/article/details/104154303