【TIDB】TIDB数据类型详解

TIDB的数据类型

文章目录

    • TIDB的数据类型
      • 1 数值类型
      • 2 日期和时间类型
      • 3 字符串类型
      • 3 SET 类型
      • 4 JSON类型

1 数值类型

1 整数类型
【TIDB】TIDB数据类型详解_第1张图片
2 浮点类型
【TIDB】TIDB数据类型详解_第2张图片
3 定点类型
decamal(20,6)

2 日期和时间类型

【TIDB】TIDB数据类型详解_第3张图片

3 字符串类型

1 CHAR 类型
定长字符串。CHAR 列的长度固定为创建表时声明的长度。当保存 CHAR 值时,不足固定长度的字符串在后面填充空格,以达到指定的长度。M 表示列长度(字符的个数,不是字节的个数)。长度可以为从 0 到 255 的任何值。
VARCHAR 类型
变长字符串。M 表示最大列长度(字符的最大个数)。VARCHAR 的空间占用大小不得超过 65535 字节。在选择 VARCHAR 长度时,应当根据最长的行的大小和使用的字符集确定。
对于不同的字符集,单个字符所占用的空间可能有所不同。以下表格是各个字符集下单个字符占用的字节数,以及 VARCHAR 列长度的取值范围:
【TIDB】TIDB数据类型详解_第4张图片
2 TEXT类型
文本串。M 表示最大列长度(字符的最大个数),范围是 0 到 65535。在选择 TEXT 长度时,应当根据最长的行的大小和使用的字符集确定。
TINYTEXT 类型
类似于 TEXT,区别在于最大列长度为 255。
MEDIUMTEXT 类型
类似于 TEXT,区别在于最大列长度为 16,777,215。
LONGTEXT 类型
类似于 TEXT,区别在于最大列长度为 4,294,967,295。
BINARY 类型
类似于 CHAR,区别在于 BINARY 存储的是二进制字符串。
VARBINARY 类型
类似于 VARCHAR,区别在于 VARBINARY 存储的是二进制字符串。
BLOB 类型
二进制大文件。M 表示最大列长度,单位是字节,范围是 0 到 65535。
TINYBLOB 类型
类似于 BLOB,区别在于最大列长度为 255。
MEDIUMBLOB 类型
类似于 BLOB,区别在于最大列长度为 16777215。
LONGBLOB 类型
类似于 BLOB,区别在于最大列长度为 4,294,967,295。
ENUM 类型
枚举类型是一个字符串,它只能有一个值的字符串对象。其值必须是从一个固定集合中选取,这个固定集合在创建表的时候定义,语法是:

ENUM('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]

3 SET 类型

集合类型是一个包含零个或多个值的字符串,其中每个值必须是从一个固定集合中选取,这个固定集合在创建表的时候定义,语法是:

SET('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]

4 JSON类型

警告:
当前该功能为实验特性,不建议在生产环境中使用。
JSON 类型可以存储 JSON 这种半结构化的数据,相比于直接将 JSON 存储为字符串,它的好处在于:
使用 Binary 格式进行序列化,对 JSON 的内部字段的查询、解析加快;
多了 JSON 合法性验证的步骤,只有合法的 JSON 文档才可以放入这个字段中;
JSON 字段本身上,并不能创建索引。相反,可以对 JSON 文档中的某个子字段创建索引。例如:

CREATE TABLE city (
    id INT PRIMARY KEY,    
    detail JSON,
    population INT AS (JSON_EXTRACT(detail, '$.population')
    ),    
    index index_name (population)
);
INSERT INTO city (id,detail) VALUES (
    1, '{"name": "Beijing", "population": 100}'
);
SELECT id FROM city WHERE population >= 100;

你可能感兴趣的:(tidb,java,数据库)