- 关于 TiDB
- 主要概念
- 操作指南
- 快速上手
- 部署
- 配置
- 安全
- 安全传输层协议 (TLS)
- 生成自签名证书
- 监控
- 迁移
- 运维
- 扩容缩容
- 升级
- 故障诊断
- 参考手册
- SQL
- 与 MySQL 兼容性对比
- SQL 语言结构
- 数据类型
- 函数与操作符
- SQL 语句
ADD COLUMN
ADD INDEX
ADMIN
ADMIN CANCEL DDL
ADMIN CHECKSUM TABLE
ADMIN CHECK [TABLE|INDEX]
ADMIN SHOW DDL [JOBS|QUERIES]
ALTER DATABASE
ALTER TABLE
ALTER USER
ANALYZE TABLE
BEGIN
CHANGE COLUMN
COMMIT
CREATE DATABASE
CREATE INDEX
CREATE TABLE LIKE
CREATE TABLE
CREATE USER
DEALLOCATE
DELETE
DESC
DESCRIBE
DO
DROP COLUMN
DROP DATABASE
DROP INDEX
DROP TABLE
DROP USER
EXECUTE
EXPLAIN ANALYZE
EXPLAIN
FLUSH PRIVILEGES
FLUSH STATUS
FLUSH TABLES
GRANT <privileges>
INSERT
KILL [TIDB]
LOAD DATA
LOAD STATS
MODIFY COLUMN
PREPARE
RENAME INDEX
RENAME TABLE
REPLACE
REVOKE <privileges>
ROLLBACK
SELECT
SET [NAMES|CHARACTER SET]
SET PASSWORD
SET TRANSACTION
SET [GLOBAL|SESSION] <variable>
SHOW CHARACTER SET
SHOW COLLATION
SHOW [FULL] COLUMNS FROM
SHOW CREATE TABLE
SHOW DATABASES
SHOW ENGINES
SHOW ERRORS
SHOW [FULL] FIELDS FROM
SHOW GRANTS
SHOW INDEXES [FROM|IN]
SHOW INDEX [FROM|IN]
SHOW KEYS [FROM|IN]
SHOW PRIVILEGES
SHOW [FULL] PROCESSSLIST
SHOW SCHEMAS
SHOW STATUS
SHOW [FULL] TABLES
SHOW TABLE STATUS
SHOW [GLOBAL|SESSION] VARIABLES
SHOW WARNINGS
START TRANSACTION
TRACE
TRUNCATE
UPDATE
USE
- 约束
- 生成列
- 字符集
- 配置
- tidb-server
- pd-server
- tikv-server
- 安全
- 事务
- 系统数据库
- 错误码
- 支持的连接器和 API
- 垃圾回收 (GC)
- 性能调优
- 监控指标
- 报警规则
- 最佳实践
- TiSpark 使用指南
- TiDB Binlog
- 周边工具
- 常见问题 (FAQ)
- 技术支持
- 贡献
- 版本发布历史
- 术语表
重要
你正在查看 TiDB 数据库的较旧版本 (TiDB v2.1) 的文档。
如无特殊需求,建议使用 TiDB 数据库的最新稳定版本。
数据类型的默认值
在一个数据类型描述中的 DEFAULT value
段描述了一个列的默认值。这个默认值必须是常量,不可以是一个函数或者是表达式。但是对于时间类型,可以例外的使用 NOW
、CURRENT_TIMESTAMP
、LOCALTIME
、LOCALTIMESTAMP
等函数作为 DATETIME
或者 TIMESTAMP
的默认值。
BLOB
、TEXT
以及 JSON
不可以设置默认值。
如果一个列的定义中没有 DEFAULT
的设置。TiDB 按照如下的规则决定:
- 如果该类型可以使用
NULL
作为值,那么这个列会在定义时添加隐式的默认值设置DEFAULT NULL
。 - 如果该类型无法使用
NULL
作为值,那么这个列在定义时不会添加隐式的默认值设置。
对于一个设置了 NOT NULL
但是没有显式设置 DEFAULT
的列,当 INSERT
、REPLACE
没有涉及到该列的值时,TiDB 根据当时的 SQL_MODE
进行不同的行为:
- 如果此时是
strict sql mode
,在事务中的语句会导致事务失败并回滚,非事务中的语句会直接报错。 - 如果此时不是
strict sql mode
,TiDB 会为这列赋值为列数据类型的隐式默认值。
此时隐式默认值的设置按照如下规则:
- 对于数值类型,它们的默认值是 0。当有
AUTO_INCREMENT
参数时,默认值会按照增量情况赋予正确的值。 - 对于除了时间戳外的日期时间类型,默认值会是该类型的“零值”。时间戳类型的默认值会是当前的时间。
- 对于除枚举以外的字符串类型,默认值会是空字符串。对于枚举类型,默认值是枚举中的第一个值。
文档内容是否有帮助?