一:MySQL中的数据完整性
注:以下所讨论的主题均基于InnoDB存储引擎。
1.实体完整性
实体完整性在MySQL中表现为设置主键约束和唯一性约束,即primary key与unique key。这两个约束均会在数据库中创建对应的索引。
2.域完整性
域完整性又称为用户自定义完整性,保证数据值满足用户指定的条件。在InnoDB中域的完整性通过以下几点:Default(数据的默认值),not null(数据非空)。在InnoDB中不支持check约束,可以通过enum类型变量去约束离散的值,或者设置触发器来检查数据合法值。
3.参照完整性
参照完整性通过外键实现,并会创建索引。
InnoDB中的约束:
InnoDB支持以下几种约束:
- primary key
- unique key
- foreign key
- default
- not null
二、MySQL中的check约束
MySQL所有的存储引擎均不支持check约束,MySQL会对check子句进行分析,但是在插入数据时会忽略,因此check并不起作用,因此实现对数据约束有两种方法:a:在mysql种约束,如使用enum类型或者触发器等。b:在应用程序里面对数据进行检查再插入。
这里着重讨论再mysql种使用enum和触发器约束数据。
1. enum类型
enum类型将数据的取值限定在在一个离散的集合中。在创建表的时候可以制定数据为enum
如:
create table t (
id int auto_increment primary key,
sex enum('F', 'M'),
name varchar(20) not null
);
转自:https://blog.csdn.net/kailee_hust/article/details/51722265