在mysql设计表中,有个概念叫做约束
什么是约束
约束英文:constraint
约束实际上就是表中数据的限制条件
约束种类
mysql的约束大概分为以下几种:非空约束(not null)
唯一性约束(unique)
主键约束(primary key) PK
外键约束(foreign key) FK
检查约束(目前MySQL不支持、Oracle支持,本文不做介绍)
为了能继续看下去,打开mysql,创建了一个表:create table `test`
(
`id` int auto_increment primary key , ## 主键约束
`name` varchar(64) not null unique , ## 非空约束+唯一性约束
`password` varchar(64) not null default '', ## 非空约束
`age` tinyint(3) default 0,## 没有约束
`add_time` datetime ## 没有约束
)engine =InnoDb
charset = 'utf8';
在这个创建语句中,我们使用到了3种约束(非空约束,主键约束,唯一性约束);在后面会使用到外键约束
非空约束
非空约束是我们最常见的一种约束方式,它规定了我们插入数据不允许为空(在mysql中,''不是空,null才是),例如以下插入语句:insert into `test`(`name`,`password`)value ('test','123456');## 插入成功
insert into `test`(`name`,`password`)value ('test2',null);## password不能为null
insert into `test`(`name`)value ('test3');## 插入成功,password虽然有约束,但是有default '',当未指定password值时,默认为''
insert into `test`(`name`)value ('test');## 唯一性约束,test已经存在
应用场景方面,例如用户邮箱,用户密码不能为空,都可以增加非空约束
唯一性约束
唯一性约束是使用unique关键字进行的约束,它有多种约束方式以及约束形式.
单字段约束
列级直接约束:create table `unique_test1`(
`id` int(11) auto_increment primary key ,
`name` varchar(64) unique
)
表级约束:create table `unique_test1`(
`id` int(11) auto_increment primary key