SQL基础入门:第4课:为表中字段设置默认值(2)

上面我们讲了,在创建一张表时,需要为表中的字段定义数据类型。这样在向表中插入数据时,就需要插入与对应位置字段的字段类型一致的数据,否则是会报错的。

但当我们插入数据的时候,并不想或并不需要对某个字段赋值时,如果字段有设置默认值,则会以默认值来填充该字段的值而不会导致错误;比如,在网上下订单时,对于下订单的日期字段,可以使用数据库的系统变量“当前日期”来默认赋值,这样就不需要在向订单表插入订单数据时,单独再对下订单的日期字段进行赋值。

再举个例子,我们在CSDN网站上注册一个新用户时,除了用户名、密码、手机号外,还有一些非必填信息,比如性别、QQ号、职业等。这些信息如果没有填写,那向数据库插入时,默认就会赋值为NULL值。

可如果性别、QQ号、职业等,这些字段被设置为NOT NULL,不可以插入NULL值,那怎么办呢?

同样,这个时候,就可以在创建表时,为字段设置默认值。

在向表中插入数据的时候,如果某个字段并没有指定赋值为多少,而此时该字段也没有赋默认值,那么就会向该字段插入NULL值。而NULL值的使用效率并不高,并且使用起来也比较麻烦。

所以,为避免字段的值被插入NULL值,一般在表创建时,都会为字段指定默认值。

设置默认值的关键字为DEFAULT,比如,像下面这样为老师姓名字段设置默认值”,为年龄字段设置默认值0,也就是空字段串:

CREATETABLEteacher

(

teacher_idVARCHAR(20),

teacher_nameVARCHAR(50)DEFAULT'',

genderVARCHAR(10),

ageINTDEFAULT

)COMMENT'老师';

设置默认值需要关注以下几点:

表中所有的字段都可以设置默认值;

默认值的数据类型必须与字段类型保持一致;(不一致时,数据库虽然有时也会默认做隐式类型转换,但并不推荐这样做。一方面是这样做并不规范,另一方面是这样做可能会导致未知的错误)

除主键字段外,建议其他所有字段都设置默认值;

那一般根据什么来决定字段应该赋什么默认值呢?

对于字符型字段来说,一般赋值为空字符串(也就是”),或者具有某种业务含义的值。比如,对于性别字段,有三个取值,F-女,M-男,N-未知,当向这个性别字段插入数据时,可能并不知道性别是男还是女,那这时,就可以定义默认值为N-未知,代表我们并不知道这条数据记录的值到底是多少。

对于数值型字段来说,一般赋值为0,或者具有某种业务含义的值,或者该字段所表示的业务含义的最大值或极大值。

对于日期和时间型呢,常见的赋值有系统当前日期CURRENT_DATE、系统当前时间CURRENT_TIME、系统当前时间戳CURRENT_TIMESTAMP及NOW()等。

总的来说,我们都可以根据字段的业务含义来为字段赋默认值。

下面的表格列出了各个数据类型常见的默认值。

(小提示:长按如下二维码添加老师微信)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181208G13JY600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励