当前位置: 首页 > 科技观察

MySQL字段默认值设置详解

时间:2023-03-16 18:26:59 科技观察

前言:在MySQL中,我们可以为表字段设置默认值。在表中插入新记录时,如果某个字段没有赋值,系统会自动为该字段插入默认值。价值。关于默认值,还有一些知识需要了解。在本文中,我们将了解该字段的默认值。1、与默认值相关的操作我们可以使用DEFAULT关键字来定义默认值。默认值通常用在非空列中,可以防止录入数据时数据表出错。在创建表时,我们可以为一列设置一个默认值。具体语法格式如下:#formattemplate<字段名><数据类型>DEFAULT<默认值>#examplemysql>CREATETABLE`test_tb`(->`id`intNOTNULLAUTO_INCREMENT,->`col1`varchar(50)notnullDEFAULT'a',->`col2`intnotnullDEFAULT1,->PRIMARYKEY(`id`)->)ENGINE=InnoDBDEFAULTCHARSET=utf8;QueryOK,0rowsaffected(0.06sec)mysql>desctest_tb;+--------+------------+------+-----+--------+--------------+|Field|Type|Null|Key|Default|Extra|+--------+------------+------+-----+---------+----------------+|id|int(11)|NO|PRI|NULL|auto_increment||col1|varchar(50)|NO||a|||col2|int(11)|NO||1||+-------+-------------+-----+-----+--------+----------------+3rowsinset(0.00sec)mysql>insertintotest_tb(col1)values('fdg');QueryOK,1rowaffected(0.01sec)mysql>insertintotest_tb(col2)values(2);QueryOK,1rowaffected(0.03sec)mysql>select*fromtest_tb;+----+------+------+|id|col1|col2|+----+-----+------+|1|fdg|1||2|a|2|+----+------+------+2rowsinset(0.00sec)通过上面的实验可以看出,当为该字段设置默认值时,插入数据时,如果不指定该字段的值,将使用默认值进行处理。关于默认值,还有其他的操作,比如修改默认值,增加默认值,删除默认值等等,我们来看看这些应该是如何工作的。#新增字段并设置默认值altertable`test_tb`addcolumn`col3`varchar(20)notnullDEFAULT'abc';#修改原来的默认值altertable`test_tb`altercolumn`col3`setdefault'3a';altertable`test_tb`changecolumn`col3``col3`varchar(20)notnullDEFAULT'3b';altertable`test_tb`MODIFYcolumn`col3`varchar(20)notnullDEFAULT'3c';#删除原来的默认值altertable`test_tb`altercolumn`col3`dropdefault;#添加默认值(类似修改)altertable`test_tb`altercolumn`col3`setdefault'3aa';2、使用的一些建议其实不仅非空字段可以设置默认值,普通字段也可以设置默认值,但一般建议将非空字段设置为null。mysql>altertable`test_tb`addcolumn`col4`varchar(20)DEFAULT'4a';QueryOK,0rowsaffected(0.12sec)Records:0Duplicates:0Warnings:0mysql>desctest_tb;+------+-----------+-----+-----+--------+-------------+|Field|Type|Null|Key|Default|Extra|+--------+------------+------+------+--------+----------------+|id|int(11)|NO|PRI|NULL|auto_increment||col1|varchar(50)|NO||a|||col2|int(11)|NO||1|||col3|varchar(20)|NO||3aa|||col4|varchar(20)|YES||4a||+-------+------------+-----+-----+--------+----------------+5rowsinset(0.00sec)在项目开发中,经常会用到一些默认值字段,比如默认为当前时间,默认不删除,某状态默认值为1等。简单的用下表来展示一些常用的默认值字段。CREATETABLE`default_tb`(`id`intunsignedNOTNULLAUTO_INCREMENTCOMMENT'自增主键',...`country`varchar(50)notnullDEFAULT'中国',`col_status`tinyintnotnullDEFAULT1COMMENT'1:代表什么2:代表什么...',`col_time`datetimeNOTNULLDEFAULT'2020-10-0100:00:00'COMMENT'什么时间',`is_deleted`tinyintnotnullDEFAULT0COMMENT'0:未删除1:删除',`create_time`timestampNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',`update_time`timestampNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMPCOMMENT'修改时间',PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;这里也提醒大家,默认值一定要和字段类型匹配。比如一个字段表示一个状态值,可能取值1,2,3...那么这个字段建议使用tinyint类型,而不是char或者varchar类型。作者根据我个人的经验总结了一些关于默认值使用的建议:为非空字段设置默认值可以防止插入错误。也可以在可为空的字段上设置默认值。最好给一些状态值字段一个注释,指示某个值代表什么状态。默认值应与字段类型匹配。总结:本文主要讲述关于MySQL字段默认值的知识。它比较简单易懂。希望你有所收获。