数据库中表的常见七大约束

真正约束字段的是数据类型,可是数据类型约束很单一,须要有一些额外的约束,更好的保证数据的合法性,从业
务逻辑角度保证数据的正确性。好比有一个字段是email,要求是惟一的。web

一、空属性not null:not null 此列属性不容许为空,必须作数据插入sql

create table t1( per_name varchar(20), per_age int not null );

这里写图片描述
插入值:数据库

insert into t1(per_age) values(20);

//让pet_age为NULL时尝试插入一下,看是否会报错
insert into t1(per_name) values("易烊千玺");

查询:svg

select * from t1;

这里写图片描述
注:数据库默认字段基本都是字段为空,可是实际开发时,尽量保证字段不为空,由于数据为空没办法参与运算测试

二、默认值:某一种数据会常常性的出现某个具体的值,能够在一开始就指定好,在须要真实数据的时候,用户能够选 择性的使用默认值。spa

默认值default:a:若是某一种属性常常出现,能够在一开始就指定数据
b:默认值配合not null使用
c:set和enum不容许设置默认值3d

例子:code

create table t2( name varchar(20), age int not null default 0, sex varchar(1) default '男' );

这里写图片描述

insert into t2(name,age) values("名字",20);
insert into t2(name,sex) value(" 名字","女");

这里写图片描述
增长一列属性xml

alter table t2 add time_test TIMESTAMP;()

三、列描述 comment:comment描述仅做为列的做用,没有实际含义
查看到当前数据库的描述信息:show create table t3;blog

* comment不等同于注释
create table t3( name varchar(20) comment '此列描述学生姓名', age int default 0 comment '描述学生年龄', sex char(1) default '男' comment '性别信息' );

这里写图片描述

查看到当前数据库的描述信息:show create table t3;
这里写图片描述

添加注释

create table t4( comment_name char(1) comment '测试comment是否能看到', annotation_name char(1) --测试注释释放能看到 );

四、自动填充0 (zerofill)

a:若是某一数值列规定了zerofill,则自动把此列变为无符号整形 b:
规定了zerofill的数据列,若是数据列的长度没达到规定长度,则在数据前面自动填充0
eg:insert into t6 value (10,123); —–>00123。(若是超过或者达到长度,则不填充)

create table t5( a int default 0, b int(5) default 55 zerofill );

这里写图片描述

// 添加
insert into t5 value (10,123);

// 建立t6
create table t6( a int default 0, b int(5) zerofill );

这里写图片描述

// 添加信息给t6
insert into t6 value (10,123);

五、主键约束(primary key):主键用于惟一约束字段数据,使用主键约束的字段,不能为空,不能重复,主键所在的列为整数类型,一张表有且只能有一个主键

(1)单主键:

create table t7( id int primary key comment 'id列表示学生学号不容许为空,也不容许重复', name varchar(20) not null );

这里写图片描述

测试:主键不能重复
insert into t7 values(1,"易烊千玺"),(2,"我本身");

这里写图片描述
(2)复合主键:

create table t8( name varchar(20) comment '学生姓名', sushe varchar(20) comment '描述学生宿舍', age int comment '学生年龄', primary key(name,sushe) comment 'id和宿舍做为复合主键' );

这里写图片描述

测试:组合起来的主键不能重复
insert into t8 values("1","101","10"),("2","101","15");
insert into t8 values("2","101","11"); 

这里写图片描述
(3)建立表之后追加主键:

alter table 表名 add primary key(字段1……); 注意:追加主键必须确保(做为主键的字段)字段1不能为空,不能重复;

(4)删除主键

alter table 表名 drop primary key; eg: alter table t7 drop primary key;(删除主键以后就能够容许重复)

这里写图片描述
这里写图片描述
六、自增加(auto_increment)

a、任何一个字段要作自增加,其自己必须是索引(key必须有值)
c、一张表有且只能有一个自增加
主键和自增加搭配使用
id + auto_increment:逻辑主键 eg:订单表、商品信息表

create table t9( id int primary key auto_increment comment '描述商品编号', name varchar(20) comment '描述商品名称' );

这里写图片描述

测试:
insert into t9(name) values("IphoneX"),("Iphone8");

这里写图片描述

1和2 就是自增加的,再添加一条信息就会在2的基础上继续加

insert into t9(name) values(8,”小米Mix2”); 【再添加一条后,就从8开始自增】

* 说明:

指定自增数值后,之后的自增以此为基础
删除指定列之后仍是以最大值为基础自增

七、惟一键(unique)

惟一键容许为空,可是不能重复,一张表中能够有多个字段设置惟一
惟一键解决表中多个字段须要惟一性约束的问题
null不作比较,能够容许多个null

create table t10( id char(10) unique comment '描述学号惟一', name varchar(10) );

这里写图片描述

insert into t10 values(1,"哈哈"),(2,"呵呵");

这里写图片描述
这里写图片描述