《Mysql》-表的约束

19 篇文章 0 订阅
4 篇文章 0 订阅

表的约束

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

表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,
auto_increment,unique key 。

1、空属性
两个值:null(默认的)和not null(不为空)

数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法参与运
算。

 
mysql> select null; 
+------+
| NULL |
+------+
| NULL |
+------+
1 row in set (0.00 sec)
mysql> select 1+null; 
+--------+
| 1+null |
+--------+
| NULL   |
+--------+
1 row in set (0.00 sec)

案例:
创建一个班级表,包含班级名和班级所在的教室,如果班级没有名字,你不知道你在哪个班级,如果教室名字可以 为空,就不知道在哪上课。

在这里插入图片描述
在这里插入图片描述
2、默认值
默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。

在这里插入图片描述
在初始化时,不赋值则会使用默认值;
在这里插入图片描述
3、列描述

可类比于注释的一种东西,并没有实际的含义;
在这里插入图片描述
在这里插入图片描述

4、zerofill

刚开始学习数据库时,很多人对数字类型后面的长度很迷茫。通过show看看tt3表的建表语句:

在这里插入图片描述
可以看到int(10),这个代表什么意思呢?整型不是4字节码?这个10又代表什么呢?其实没有zerofill这个属性,括号 内的数字是毫无意义的。a和b列就是前面插入的数据,如下:

 mysql> select * from tt3; 
 +------+------+
 |a     |b     | 
 +------+------+ 
 |     1|    2 | 
 +------+------+

但是对列添加了zerofill属性后,显示的结果就有所不同了。修改tt3表的属性:

mysql> alter table tt3 change a a int(5) unsigned zerofill;

对a列添加了zerofill属性,再进行查找,返回如下结果:
在这里插入图片描述
这次可以看到a的值由原来的1变成00001,这就是zerofill属性的作用,如果宽度小于设定的宽度(这里设置的是 5),自动填充0。要注意的是,这只是最后显示的结果,在MySQL中实际存储的还是1。为什么是这样呢?我们可 以用hex函数来证明。

在这里插入图片描述
可以看出数据库内部存储的还是1,00001只是设置了zerofill属性后的一种格式化输出而已。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值