文章目录
- 表的约束的介绍
- 空属性约束(null)和非空属性约束
- 测试
- 建表
- 插入测试
- 默认值约束
- 测试
- 建表
- 测试
- 建表查看默认行为
- 建表
- 插入测试
表的约束的介绍
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。
表中一定要有各种约束,通过约束让我们未来插入数据库中的数据是符合预期的。
约束本质是通过技术手段倒逼程序员插入正确的数据。
反过来站在mysql的视角,凡是插入成功的数据都是符合数据约束的。
约束的最终目标是保证数据的完整性和可预期性。
表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。
空属性约束(null)和非空属性约束
MySQL中null表示没有
null vs ‘ ’(空串)
null:表示该数据什么都没有
‘ ’:表示该数据是有的,只不过是空串
MySQL默认插入数据可以为null。
not null:插入数据不能为空
测试
建表
创建表和查看表的信息
插入测试
我们看到有not null约束的列确实不能为空,而没有not null约束的列时默认可以为空的。
上面称为非空约束,不指明约束的情况下可以为空。
默认值约束
默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。
测试
建表
建表和查看表的信息
测试
从上面我们可以得出结论:default如果设置了用户如果插入有具体的数据就用用户的,没有就用默认的。
insert是也要指定要插入的列,如果要用默认值可以不指定,如果没有指定就会报错。
建表查看默认行为
建表
插入测试
如果我们没有明确指定一定要插入的数据,而用的是default,如果建表对应列默认没有设置default值,如果也设置了not null就无法直接插入。
default和not null不冲突而是互相补充的。
not null:约束用户向插入的时候
default:当用户忽略这一列的时候,如果设置了就使用默认值,如果没有就直接为空或者报错。
演示
1.有设置默认值时
2.没有设置默认值时
a.建表
b.测试