MySQL数据类型
- 数字类型
- 整数: tinyint、smallint、mediumint、int、bigint
- 浮点数: float、double、real、decimal
- 日期和时间: date、time、datetime、timestamp、year
- 字符串类型
- 字符串: char、varchar
- 文本: tinytext、text、mediumtext、longtext
- 二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob
数字类型
整型
| type |
Storage(Bytes) |
Signed Range |
Unsigned Range |
| 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 |
-9223372036854775808-9223372036854775807 |
0-18446744073709551615 |
浮点型
| 属性 |
存储空间 |
精度 |
精确性 |
说明 |
| FLOAT(M, D) |
4 bytes |
单精度 |
非精确 |
单精度浮点型,m总个数,d小数位 |
| DOUBLE(M, D) |
8 bytes |
双精度 |
比Float精度高 |
双精度浮点型,m总个数,d小数位 |
定点数DECIMAL
- 高精度的数据类型,常用来存储交易相关的数据
- DECIMAL(M,N).M代表总精度,N代表小数点右侧的位数(标度)
- 1 < M < 254, 0 < N < 60;
- 存储空间变长
时间类型
| 类型 |
字节 |
例 |
精确性 |
| DATE |
三字节 |
2015-05-01 |
精确到年月日 |
| TIME |
三字节 |
11:12:00 |
精确到时分秒 |
| DATETIME |
八字节 |
2015-05-01 11::12:00 |
精确到年月日时分秒 |
| TIMESTAMP |
|
2015-05-01 11::12:00 |
精确到年月日时分秒 |
- MySQL在
5.6.4版本之后,TIMESTAMP和DATETIME支持到微秒。
TIMESTAMP会根据系统时区进行转换,DATETIME则不会
- 存储范围的区别
TIMESTAMP存储范围:1970-01-01 00::00:01 to 2038-01-19 03:14:07
DATETIME的存储范围:1000-01-01 00:00:00 to 9999-12-31 23:59:59
- 一般使用
TIMESTAMP国际化
- 如存时间戳使用数字类型
BIGINT
字符串类型
| 类型 |
单位 |
最大 |
特性 |
| CHAR |
字符 |
最大为255字符 |
存储定长,容易造成空间的浪费 |
| VARCHAR |
字符 |
可以超过255个字符 |
存储变长,节省存储空间 |
| TEXT |
字节 |
总大小为65535字节,约为64KB |
- |
- TEXT在MySQL内部大多存储格式为溢出页,效率不如CHAR
- Mysql默认为utf-8,那么在英文模式下1个字符=1个字节,在中文模式下1个字符=3个字节。
其它
SERIAL 是 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE 的别名。