MySQL的约束

一: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值