MySQL数据类型
MySQL中的数据类型以及使用时需要注意的地方记录如下
数字类型
数字类型包括:
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINTDECIMAL
| 类型 | 长度(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。不会影响上面所说的字符长度。
