码迷,mamicode.com
首页 > 数据库 > 详细

数据库字段设置为<非空><默认值>

时间:2014-09-25 12:41:29      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   ar   数据   sp   问题   on   c   

为什么数据库要设置默认值呢?因为我们希望在插入数据时,有意或无意间被忽略的字段能够交由MySQL按我们事先预想的方式处理,例如一些默认正常状态码、用户插入数据时候尚未设置的文本字段,诸如此类。

假设student表里有一个字段score被设置为<非空><默认值>,插入一条数据记录时,score字段值为空<‘‘>,那这时score的字段值为<‘‘>还是<默认值>?

设置默认值的作用只有在忽略了字段时才会发挥作用。何为忽略了字段,就是在写SQL插入语句的时候,不写要忽略的字段的字段名,例如:有一个student表,有字段id,name,age,score。score设置了默认值99,插入一条语句,insert into student (name,age)values(‘tom‘,3),这时忽略了score字段(id字段设置了主键和自动增长),mysql数据库就会按照事先设置的默认值插入到数据库中。

所以以上问题的答案是<‘‘>。

因为NULL跟‘‘是完全不一样的,NULL表示未知,没有类型可言;而‘‘是有类型的,表示一个空的字符串。所以,在插入有默认值的字段时,插入值为‘‘时,依然会插入到数据库中。

而实际上数据库中的<空>表示的是NULL

例如,当mysl数据库执行insert into student(name,age,score)values(‘tom‘,3,null)时会报错:#1048 - Column ‘score‘ cannot be null

数据库字段设置为<非空><默认值>

标签:style   http   color   ar   数据   sp   问题   on   c   

原文地址:http://www.cnblogs.com/TimeStory/p/3992339.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!