mysql数据完整性和约束
数据的完整性是指数据的可靠性和准确性.它分四类:
1.实体完整性:实体的完整性强制表的标识符列或主键的完整性(通过索引,唯一约束,主键约束或标识列属性).
2.域完整性:限制类型(数据类型),格式(通过检查约束和规则),可能值范围(通过外键约束,检查约束,默认值定义,非空约束和规则).
3.引用完整性:在删除和输入记录时,引用完整性保持表之间已定义的关系.引用完整性确保键值在所有表中一致.这样的一致辞性要求不能引用不存在的值.如果一个键值更改了,那么在整个数据库中,对该键值的引用要进行一致的更改.
4.自定义完整性:用户自己定义的业务规则.
约束和数据完整性
主键(Primary key)
外键(Foreign key)
唯一(unique)
检查(check):MySQL不支持。
默认(default)
1、约束
create table s(sno char(2) not null
create table c (cno char(2) not null
create table sc(sno char(2)
2、另一种约束
create table s(sno char(2) not null ,
create table c (cno char(2) not null
create table sc(sno char(2)
foreign key(sno) references s(sno) on delete cascade on update cascade,
foreign key(cno) references c(cno),
check(score>=0 and score<=100)
3、第三种约束
create table s(sno char(2) not null ,
create table c (cno char(2) not null
create table sc(sno char(2)
alter table s
add constraint pk_sno primary key(sno),
add constraint uq_id unique(id),
add constraint ck_sex check(sex=‘男’ or sex=‘女’);
alter table c
add constraint pk_cno primary key(cno);
alter table sc
add constraint pk_sc primary key(sno,cno),
add constraint ck_score check(score>=0 and score<=100),
add constraint fk_sno foreign key(sno) references s(sno),
add constraint fk_cno foreign key(cno) references c(cno);