MySQL(8.0)数据类型的总体介绍
MySQL的基本数据类型可以分为四类:
一、数值类型
数值类型包括:整数类型(精确值)、定点类型(精确值)、浮点类型(近似值),其中浮点类型无法表示精确的数值,如果涉及精确计算,需要用整数类型和定点类型。
二、日期和时间类型
三、字符串(字符和字节)类型
四、其他类型
我们主要经常接触的是前三类,这里就主要介绍前三类。
一、数值类型
1. 整数类型(精确值)
类型 | 存储(字节) | 有符号数值取值范围 | 无符号数值取值范围 |
---|---|---|---|
TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 |
MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 |
INT | 4 | -2147483648 ~ 2147483647 | 0 ~ 4294967295 |
BIGINT | 8 | -2^63 ~ 2^63-1 | 0 ~ 2^64-1 |
整数类型可以精确表示数据,也可以精确计算。
2. 定点类型(精确值)
类型 | 存储(字节) | 数值取值范围 |
---|---|---|
DECIMAL | 依赖于DECIMAL(M, D)中的具体精度。具体的计算方法,可以参考:MySQL官方手册12.24.2 DECIMAL Data Type Characteristics | 依赖于DECIMAL(M, D)中的具体精度。例如: DECIMAL(5, 2)的取值范围为:-999.99 ~ 999.99。 |
DECIMAL(M, D),如果D省略则默认为0,如果M省略则默认为10。
M指的是最大位数(精度),取值范围为1~65;
D指的是小数位数(刻度),取值范围为0~30,且不能大于M。
定点类型可以精确表示数据,也可以精确计算,经常用于金融、会计等精确计算的场景。
3. 浮点类型(近似值)
FLOAT:单精度浮点型,占用4个字节。
DOUBLE:双精度浮点型,占用8个字节。
需要注意的是:浮点类型,不能精确进行数据表示和计算,如果涉及到精确计算,使用整数类型和定点类型。
二、日期和时间类型
类型 | 存储(字节) | 范围 | 格式 |
---|---|---|---|
DATE | 3 | ‘1000-01-01’ ~ ‘9999-12-31’ | ‘YYYY-MM-DD’ |
TIME | 3 | ‘-838:59:59’ ~ ‘838:59:59’ | ‘hh:mm:ss’ 或 ‘hhh:mm:ss’ |
DATETIME | 8 | ‘1000-01-01 00:00:00’ ~ ‘9999-12-31 23:59:59’ | ‘YYYY-MM-DD hh:mm:ss’ |
TIMESTAMP | 4 | ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC | ‘YYYY-MM-DD hh:mm:ss’ |
YEAR | 1 | 1901 ~ 2155 | YYYY 或者 ‘YYYY’ |
向表中插入日期时间类型的数据时,YEAR类型可以直接插入YYYY形式(也可以带引号’YYYY’),其他类型都要带引号。
三、字符串(字符和字节)类型
类型 | 大小 | 解释 |
---|---|---|
CHAR | 0 ~ 255 bytes | 定长字符串 |
VARCHAR | 0 ~ 65535 bytes | 变长字符串 |
TINYTEXT | 0 ~ 255 bytes | 短文本字符串 |
MEDIUMTEXT | 0 ~ 16 777 215 bytes | 中等长度文本数据 |
TEXT | 0 ~ 65535 bytes | 长文本数据 |
LONGTEXT | 0 ~ 4294967295 bytes | 极大文本数据 |
TINYBLOB | 0 ~ 255 bytes | 二进制形式的短长文本数据 |
MEDIUMBLOB | 0 ~ 16777215 bytes | 二进制形式的中等长度文本数据 |
BLOB | 0 ~ 65535 bytes | 二进制形式的长文本数据 |
LONGBLOB | 0 ~ 4294967295 bytes | 二进制形式的极大文本数据 |
字符串常用的是CHAR(n),VARCHAR(n),其中n指的是字符串的长度。
四、其他类型
其他还有:空间数据类型、JSON数据类型等。因为用的少,这里就不介绍了。