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

为什么数据库要设置默认值呢?因为我们希望在插入数据时,有意或无意间被忽略的字段能够交由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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。