数据类型(data_type)是指系统中所允许的数据的类型。MySQL 数据类型定义了列中可以存储什么数据以及该数据怎样存储的规则。
数据库中的每个列都应该有适当的数据类型,用于限制或允许该列中存储的数据。例如,列中存储的为数字,则相应的数据类型应该为数值类型。
如果使用错误的数据类型可能会严重影响应用程序的功能和性能,所以在设计表时,应该特别重视数据列所用的数据类型。更改包含数据的列不是一件小事,这样做可能会导致数据丢失。因此,在创建表时必须为每个列设置正确的数据类型和长度。
MySQL 的数据类型有大概可以分为 5 种,分别是整数类型、浮点数类型和定点数类型、日期和时间类型、字符串类型、二进制类型等。注意:整数类型和浮点数类型可以统称为数值数据类型。 1) 数值类型整数类型包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。
类型名称 | 说明 | 存储需求 | TINYINT | 很小的整数 | 1个字节 | SMALLINT | 小的整数 | 2个宇节 | MEDIUMINT | 中等大小的整数 | 3个字节 | INT (INTEGHR) | 普通大小的整数 | 4个字节 | BIGINT | 大整数 | 8个字节
| 浮点数类型包括 FLOAT 和 DOUBLE,定点数类型为 DECIMAL。
类型名称 | 说明 | 存储需求 | FLOAT | 单精度浮点数 | 4 个字节 | DOUBLE | 双精度浮点数 | 8 个字节 | DECIMAL (M, D),DEC | 压缩的“严格”定点数 | M+2 个字节
| 2) 日期/时间类型包括 YEAR、TIME、DATE、DATETIME 和 TIMESTAMP。
类型名称 | 日期格式 | 日期范围 | 存储需求 | YEAR | YYYY | 1901 ~ 2155 | 1 个字节 | TIME | HH:MM:SS | -838:59:59 ~ 838:59:59 | 3 个字节 | DATE | YYYY-MM-DD | 1000-01-01 ~ 9999-12-3 | 3 个字节 | DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 8 个字节 | TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC | 4 个字节
| 3) 字符串类型包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等,括号中的M表示可以为其指定长度。
类型名称 | 说明 | 存储需求 | CHAR(M) | 固定长度非二进制字符串 | M 字节,1<=M<=255 | VARCHAR(M) | 变长非二进制字符串 | L+1字节,在此,L< = M和 1<=M<=255 | TINYTEXT | 非常小的非二进制字符串 | L+1字节,在此,L<2^8 | TEXT | 小的非二进制字符串 | L+2字节,在此,L<2^16 | MEDIUMTEXT | 中等大小的非二进制字符串 | L+3字节,在此,L<2^24 | LONGTEXT | 大的非二进制字符串 | L+4字节,在此,L<2^32 | ENUM | 枚举类型,只能有一个枚举字符串值 | 1或2个字节,取决于枚举值的数目 (最大值为65535) | SET | 一个设置,字符串对象可以有零个或 多个SET成员 | 1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员)
| 4) 二进制类型包括 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。下表列出了 MySQL 中的二进制数据类型,括号中的M表示可以为其指定长度。
类型名称 | 说明 | 存储需求 | BIT(M) | 位字段类型 | 大约 (M+7)/8 字节 | BINARY(M) | 固定长度二进制字符串 | M 字节 | VARBINARY (M) | 可变长度二进制字符串 | M+1 字节 | TINYBLOB (M) | 非常小的BLOB | L+1 字节,在此,L<2^8 | BLOB (M) | 小 BLOB | L+2 字节,在此,L<2^16 | MEDIUMBLOB (M) | 中等大小的BLOB | L+3 字节,在此,L<2^24 | LONGBLOB (M) | 非常大的BLOB | L+4 字节,在此,L<2^32 | 定义字段的数据类型对数据库的优化是十分重要的。
|