10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国Ltr)- 36.3 mb
PDF (A4)- 36.3 mb
手册(TGZ)- 235.6 kb
手册(Zip)- 347.2 kb
信息(Gzip)- 3.3 mb
信息(邮政编码)- 3.3 mb
本手册节选

MySQL 5.7参考手册/数据类型/数据类型默认值

11.6数据类型默认值

数据类型规范可以具有显式或隐式默认值。

显式默认处理

一个默认的价值子句显式指示列的默认值。例子:

CREATE TABLE t1 (i INT DEFAULT -1, c VARCHAR(10) DEFAULT ", price DOUBLE(16,2) DEFAULT '0.00');

Serial默认值是一个特例。在整数列的定义中,它是的别名不是null auto_increment唯一

中指定的默认值有一个例外默认的子句必须是一个字面常量;它不能是函数或表达式。这意味着,例如,您不能将日期列的默认值设置为函数的值现在()当前日期.唯一的例外是,for时间戳而且DATETIME列,您可以指定CURRENT_TIMESTAMP作为默认值。看到第11.2.6节“TIMESTAMP和DATETIME的自动初始化和更新”

文本几何,JSON不能为数据类型分配默认值。

隐式默认处理

如果数据类型规范不包含显式的默认的值,MySQL决定默认值如下:

若列可取作为值,列是用显式的默认为空条款。

如果列不能取作为值,MySQL定义的列没有显式默认的条款。

的数据输入非空没有显式的列默认的条款,如果插入取代语句不包含列的值,也不包含更新语句将列设置为, MySQL根据当时有效的SQL模式处理该列:

  • 如果启用了严格的SQL模式,事务性表将发生错误,语句将回滚。对于非事务性表,会发生错误,但如果发生在多行语句的第二行或后续行,则错误之前的任何行都已经插入。

  • 如果没有启用严格模式,MySQL将列设置为列数据类型的隐式默认值。

假设有一张表t定义如下:

创建表t (i INT NOT NULL);

在这种情况下,没有显式默认值,因此在严格模式下,以下语句都会产生错误,并且没有插入任何行。当不使用严格模式时,只有第三条语句产生错误;隐式默认值被插入到前两个语句中,但是第三个语句失败了,因为默认的(我)不能产生值:

INSERT INTO t VALUES();INSERT INTO t VALUES(默认);INSERT INTO t VALUES(DEFAULT(i));

看到第5.1.10节,“Server SQL模式”

对于给定的表,显示创建表语句显示哪些列具有显式默认的条款。

隐式默认值定义如下: