表的约束,表中一定要有各种约束,通过各种约束,让我们未来插入数据库表中的数据是符合预期的。
约束的本质是通过技术手段,倒逼程序员,插入正确的数据。反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。
真正约束字段的是数据类型,但是数据类型的约束很单一,需要有一些额外的约束,更好的保证了数据的合法性,从业务逻辑角度保证数据的正确性。
约束的最终目标:保证数据的完整性和可预期性。
表的约束有很多,以下我们将介绍以下几个:
null/not null,default, comment, zerofill,primary
key,auto_increment,unique key。
1、空属性
null(默认的)和not null(不为空)。数据库默认字段基本都是字段为空,但是实际开发中,尽可能保证字段不为空,因为数据为空没办法参加运算。
示范:创建一个表
往表里面插入数据
2、default默认值
某一类数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值
不传参数,就是默认值。
总结:default如果设置了,用户将来插入,有具体的数据,就用用户的,没有就用默认的。
如果我们没有明确指定一列要插入,用的是default,如果建表中,对应列默认没有设置default值,无法直接插入。
default和not null 并不冲突,而是相互补充的,当用户想要插入数据的时候,会有NULL,或者是合法数据,当用户忽略这一列的时候,使用默认值(如果设置了)
如果没有设置,就会直接报错。
3、列描述
列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA 来进行了解。
创建如下数据表:
not null 和default 一般不需要同时出现,因此default本身有默认值,不会为空
4、zerofill
建一个表
![]()
查看表的结构
![]()
![]()
![]()
再插入数据
zerofill是给添加zerofill属性,再进行查找,返回如下的结果:
这次可以看到a的值由原来的1变成00001,这就是zerofill属性的作用,如果宽度小于设定的宽度(这里
设置的是5),自动填充0。要注意的是,这只是最后显示的结果,在MySQL中实际存储的还是1。
5、主键
主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。
插入两个数据
主键约束:主键对应的字段中不能重复,一旦重复,操作失败。
删除主键
alter table表名dropprimary key