查看“MySQL 数据类型:数据类型默认值”的源代码
←
MySQL 数据类型:数据类型默认值
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:MySQL文档]] == 显式默认值 == 数据类型规范中的“DEFAULT value”子句明确指示列的默认值。如: <syntaxhighlight lang="xml"> CREATE TABLE t1 ( i INT DEFAULT -1, c VARCHAR(10) DEFAULT '', price DOUBLE(16,2) DEFAULT '0.00' ); </syntaxhighlight> * “'''SERIAL DEFAULT VALUE'''”是一种特殊情况。在整数列的定义中,它是“'''NOT NULL AUTO_INCREMENT UNIQUE'''”的别名。 * “DEFAULT”子句中指定的默认值必须为字面量常量;它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为“NOW()”或“CURRENT_DATE”之类的函数的值。 ** 唯一的例外是,对于“TIMESTAMP”和“DATETIME”列,您可以将“CURRENT_TIMESTAMP”指定为默认值。 * 不能为 BLOB,TEXT,GEOMETRY 和 JSON 数据类型分配默认值。 == 隐式默认值 == 如果数据类型规范不包含显式的“DEFAULT”值,则 MySQL 按照以下方式确定默认值: # 如果该列可以使用 NULL 作为值,则使用显式“DEFAULT NULL”子句定义该列。 # 如果该列不能使用 NULL 作为值,则 MySQL 定义该列时不带显式“DEFAULT”子句。 为了将数据输入到没有显式“DEFAULT”句的“NOT NULL”列中,如果“INSERT”或“REPLACE”语句不包含该列的值,或者“UPDATE”语句将列设置为“NULL”,则 MySQL 将根据有效的 SQL 模式处理该列。时间: # 如果启用了严格的 SQL 模式,则事务表将发生错误,并且该语句将回滚。对于非事务表,会发生错误,但是如果此错误发生在多行语句的第二行或后续行中,则会插入前面的行。 # 如果未启用严格模式,则 MySQL 将列设置为列数据类型的隐式默认值。 示例,假设表 t 定义如下: <syntaxhighlight lang="xml"> CREATE TABLE t (i INT NOT NULL); </syntaxhighlight> 在这种情况下,i 没有明确的默认值,因此在严格模式下,以下每个语句都会产生错误,并且不会插入任何行。当不使用严格模式时,只有第三条语句会产生错误。为前两个语句插入了隐式默认值,但是第三个语句失败,因为DEFAULT(i)无法产生值: <syntaxhighlight lang="xml"> INSERT INTO t VALUES(); INSERT INTO t VALUES(DEFAULT); INSERT INTO t VALUES(DEFAULT(i)); </syntaxhighlight> * 对于给定的表,“'''SHOW CREATE TABLE''' tbl_name”语句显示哪些列具有显式的“DEFAULT”子句。 隐式默认值定义如下: # 对于数字类型,默认值为0,但对于使用“AUTO_INCREMENT”属性声明的整数或浮点类型,默认值为序列中的下一个值。 # 对于 TIMESTAMP 以外的日期和时间类型,默认值为该类型的适当“零”值。【如果启用了“explicit_defaults_for_timestamp”系统变量,则对于TIMESTAMP也是如此】否则,对于表中的第一个 TIMESTAMP 列,默认值为当前日期和时间。 # 对于 ENUM 以外的其他字符串类型,默认值为空字符串。对于 ENUM,默认值为第一个枚举值。
返回至“
MySQL 数据类型:数据类型默认值
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息