MySQL数据类型
MySQL中的数据类型以及使用时需要注意的地方记录如下
数字类型
数字类型包括:
- TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
- DECIMAL
| 类型 | 长度(Byte) | 最小值(SIGNED/UNSIGNED) | 最大值(SIGNED/UNSIGNED) | 
|---|---|---|---|
| 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 | 
DECIMAL(M,D):
- M 代表精度,即总共的位数,范围1-65
- D 代表小数部分的位数,范围0-30,但不能大于M
- 如果插入数值超过M,则只显示该精度内的最大值
- price DECIMAL(5, 2)表示最大值为 999.99
下面这段代码注意:
    `status` TINYINT(4) UNSIGNED NOT NULL AUTO_INCREMENT- 整数类型后面的长度表示显示数字时的宽度。
- 尽量使用 TINYINT表示状态
日期类型
- DATE: 3字节,- 'YYYY-MM-DD'格式, 范围是- '1000-01-01' ~ '9999-12-31'。如果只记录日期, 存储空间、性能都要比varchar(10)要好。
- TIMESTAMP: 4字节,- 'YYYY-MM-DD HH:MM:SS'格式, 范围是- '1970-01-01 00:00:01' ~ '2038-01-19 03:14:07'。
- DATETIME: 8字节,- 'YYYY-MM-DD HH:MM:SS'格式, 范围是- '1000-01-01 00:00:00' ~ '9999-12- 31 23:59:59'。
注意:
- DATETIME在5.6之后占5个字节
- 一个表中日期类只能存在一个定义默认值为 CURRENT_TIMESTAMP的 timestamp列(5.6之后可以多个)
字符类型
- CHAR: 定长文本字符类型
- VARCHAR: 变长文本字符类型
- TEXT: 大变长文本字符类型
- BINARY: 类似于char, 变长二进制字符类型
- VARBINARY: 类似于varchar, 变长二进制字符类型
- BLOB: 大变长二进制字符类型
注意:
- VARCHAR类型最多能存储65535个字节长度的数据,如果采用- UTF8编码,则每个字符占3字节,即最大长度为- 65535/3=21845个字符
- VARCHAR(4)表示的是4个字符,而不是字节,一个字母和一个汉字都是一个字符
- VARCHAR开头会占用1到2个字节来存储字符串实际长度(长度超过255时要2个字节),最大长度不超过65535。不会影响上面所说的字符长度。
