# 自定义结果集
# 相关资料
- 支持的数据类型 (opens new window)
- --------- 后面是协议相关-------------
- 数据类型 (opens new window)
- 列定义(响应包) (opens new window)
- 结果集 (opens new window)
TIP
数值类型中的强制表现的写法是 [1,2] 后面的都强制表现为前面的。 如:[INT,INTEGER] 虽然在一些工具中可以指定这 2 个类型,但是提交之后都会强制转成 INT 类型
# 数字类型
- 整数类型(精确值) - [INT,INTEGER],SMALLINT,TINYINT,MEDIUMINT,BIGINT
- 定点类型(精确值) - [DECIMAL,NUMERIC]
- 浮点类型(近似值) - FLOAT,DOUBLE
- 比特值类型 - BIT
# 数字类型属性
显示宽度:类型括号中的数值,比如 TINYINT(100); TINYINT 的取值范围是 -128~127(无符号为0~255,但是无法显示的写入127以上的数据)
TINYINT(100):表定义是可以的,不会报错,但是存储的值只能是在范围内,否则报错;
显示宽度的定义是无上限的;
UNSIGNED 所有数据类型都可以选用(非标准)的属性,无符号属性;
无符号属性的定义:CREATE TABLE t1 (i1 TINYINT, i2 TINYINT UNSIGNED);
# 超出范围和溢出处理
当 sql 模式处于严格模式的时候:SET sql_mode = 'TRADITIONAL';
超出数据类型的范围会报错;
SET sql_mode = '';
: 非严格模式只会把值裁剪到范围类存储,并发出警告日志
# 时间类型
- DATE, DATETIME, TIMESTAMP
- TIME
- YEAR:限制为显示宽度为固定值 YEAR(4)
# 字符串类型
- CHAR、VARCHAR
- BINARY、VARBINARY
- BLOB、TEXT
- ENUM
- SET
# 空间数据类型
# JSON 数据类型(5.7.8+)
# 小总结
- 上面的数据类型有些是有强制性的默认宽度。但是在官网暂时没有找到;
- 只有字符串类型有自定义编码;
- 字符串类型中 CHAR、VARCHAR 必须要指定显示宽度
- 数值类型中 整数类型 和 比特值类型 和 定点类型 必须有显示宽度
- 时间类型只有 YEAR 有显示宽度
# 强制默认宽度汇总
类型 | 默认值 | 强制固定值 |
---|---|---|
TINYINT | 4 | |
SMALLINT | 6 | |
MEDIUMINT | 9 | |
INT | 11 | |
BIGINT | 20 | |
BIT | 1 | |
DECIMAL | 10,0 | |
CHAR_string | 255 | |
VARCHAR | 255 | |
BINARY | 255 | |
VARBINARY | 255 | |
YEAR | 4 | 4 |
BLOB | 65535 | |
TEXT | 196605 |
# 数据类型 与 协议类型的映射关系
数据类型 | 协议类型 | 字符集(默认) | Decimals(默认) | flags(server status) |
---|---|---|---|---|
INT | FIELD_TYPE_LONG (3) | binary COLLATE binary (63) | ||
SMALLINT | FIELD_TYPE_SHORT (2) | binary COLLATE binary (63) | ||
TINYINT | FIELD_TYPE_TINY (1) | binary COLLATE binary (63) | ||
MEDIUMINT | FIELD_TYPE_INT24 (9) | binary COLLATE binary (63) | ||
BIGINT | FIELD_TYPE_LONGLONG (8) | binary COLLATE binary (63) | ||
DECIMAL | FIELD_TYPE_NEWDECIMAL (246) | binary COLLATE binary (63) | ||
FLOAT | FIELD_TYPE_FLOAT (4) | binary COLLATE binary (63) | 31 | |
DOUBLE | FIELD_TYPE_DOUBLE (5) | binary COLLATE binary (63) | 31 | |
BIT | FIELD_TYPE_BIT (16) | binary COLLATE binary (63) | 0x0020 (Unsigned: Set) | |
DATE | FIELD_TYPE_DATE (10) | binary COLLATE binary (63) | 0x0080 (Binary: Set) | |
DATETIME | FIELD_TYPE_DATETIME (12) | binary COLLATE binary (63) | 0x0080 (Binary: Set) | |
TIMESTAMP | FIELD_TYPE_TIMESTAMP (7) | binary COLLATE binary (63) | 0x0080 (Binary: Set) | |
TIME | FIELD_TYPE_TIME (11) | binary COLLATE binary (63) | 0x0080 (Binary: Set) | |
YEAR | FIELD_TYPE_YEAR (13) | binary COLLATE binary (63) | 0x0060 (Zero fill: Set / Unsigned: Set) | |
CHAR | Type: FIELD_TYPE_STRING (254) | |||
VARCHAR | FIELD_TYPE_VAR_STRING (253) | |||
BINARY | FIELD_TYPE_STRING (254) | binary COLLATE binary (63) | 0x0080 (Binary: Set) | |
VARBINARY | FIELD_TYPE_VAR_STRING (253) | binary COLLATE binary (63) | 0x0080 (Binary: Set) | |
BLOB | FIELD_TYPE_BLOB (252) | binary COLLATE binary (63) | 0x0090 (Binary: Set / Blob: Set) | |
TEXT | FIELD_TYPE_BLOB (252) | 0x0010 (Blob: Set) | ||
ENUM | FIELD_TYPE_STRING (254) | 0x0100 (Enum: Set) | ||
SET | FIELD_TYPE_STRING (254) | 0x0800 (Set: Set) |
← 笔记