写在前面。utf-8字符集的数据库,一个汉字占3个字节。一个数字和一个字母都各占1个字节
一、数字数据类型
- 整数类型(精确值)——INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT
类型 | 存储(字节 | 最小值(有符号) | 最小值(无符号) | 最大值(有符号) | 最大值(无符号) |
---|---|---|---|---|---|
TINYINT | 1 | -128 | 0 | 127 | 255 |
SMALLINT | 2 | -32768 | 0 | 32767 | 65535 |
MEDIUMINT | 3 | -8388608 | 0 | 8388607 | 16777215 |
INT | 4 | -2147483648 | 0 | 2147483647 | 4294967295 |
BIGINT | 8 | -2的63次方 | 0 | 2的63次方-1 | 2的64次方-1 |
- 定点类型(精确值)- DECIMAL、NUMERIC。
DECIMAL和NUMERIC 类型的存储精确的数值数据。这些类型用于保持精确精度很重要的情况。例如:DECIMAL(5,2) 表示具有五位数字和两位小数的任何值,因此可以存储的范围值从-999.99到 999.99. - 浮点类型(近似值)- FLOAT、DOUBLE。
类型 | 存储(字节) | 范围(有符号) | 范围(无符号) |
---|---|---|---|
FLOAT | 4 | (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) |
DOUBLE | 8 | (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) |
- BIT(M) 位值类型。位数从 1 到 64。如果省略,则默认为 1
二、日期和时间数据类型
类型 | 存储(字节) | 范围 | 格式 |
---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD |
TIME | 3 | ‘-838:59:59’/‘838:59:59’ | HH:MM:SS |
YEAR | 1 | 1901/2155 | YYYY |
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/2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS |
注意:
- TIME缩写值时要小心。
MySQL 将TIME带有冒号的缩写值解释为一天中的时间。也就是说,'11:12’意味着 ‘11:12:00’,而不是 ‘00:11:12’。
三、字符串数据类型
类型 | 存储(字节) | 用途 |
---|---|---|
CHAR | 0-255 | 定长字符串 |
VARCHAR | 0-65535 | 变长字符串 |
TINYBLOB | 0-255 | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255 | 短文本字符串 |
BLOB | 0-65 535 | 二进制形式的长文本数据 |
TEXT | 0-65 535 | 长文本数据 |
MEDIUMBLOB | 0-16 777 215 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295 | 极大文本数据 |
注意
- char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符
注:其他类型(空间数据类型,JSON数据类型等)可以查看官网api。