mysql数据库字段默认值设为什么_为什么数据库字段需要设置默认值

7fa1449563617aba1e18f6545467a174.png

收到一只叮咚

mysql数据库默认对varchar的字段的值不就是空('')么,对数值默认是0,那还需要设置默认值的必要性何在?疑问的原因是没启用MySQL的严格模式(strictmode),很多快捷开发环境自带的MySQL(PHPnowWAMPAppserv等),都没有启用严格模式,甚至是在一些产品环境(productionenvironment)都忽略了这点。非严格模式下,MySQL会容忍许多开发上的疏忽,例如把一个长度100的字符串插入到varcaht中只会截断多余的部分而不报错。严格模式对数据的格式、长度、类型等进行校验,你贴出的建表语句中指定了DEFAULT,如果此时不指定DEFAULT,在你认为会启用默认值的时候会返回#1364错误。开发阶段最好启用严格模式,这是对我们代码严谨性的测试,严进宽出也能保证转移到产品环境和后续的数据库迁移、重构顺利。为什么数据库要设置默认值呢?因为我们希望在插入数据时,有意或无意间被忽略的字段能够交由MySQL按你事先预想的方式处理,例如一些默认正常状态码、用户插入数据时候尚未设置的文本字段,诸如此类。我的习惯是任何数据表的任何列都是非空(NOTNULL),在此基础上将数字默认设为0,文本默认设为''(在PHPMyAdmin中留空)。这里涉及一个NULL和''的区别,对此我所知尚少,我使用''的原因是根据语义NULL表示“此字段值为空”,而''表示“此字段暂未设置值”。另一个原因是在MyISAM引擎下,NULL对索引、索引统计、磁盘占用都会有额外的开销,一个允许为NULL的列,每个字段的长度都比NOTNULL的多1bit,我不确定最近几年是否有所改善,涉及到NULL的资料大概是在MySQL5.0时看过的。防止误人,有失偏颇请直接修改我的答案,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值