mysql(数据类型)
MySQL 的数据类型有大概可以分为 5 种,分别是整数类型、浮点数类型和定点数类型、日期和时间类型、字符串类型、二进制类型等。
注意:整数类型和浮点数类型可以统称为数值数据类型。
1 数值类型
整数类型包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,浮点数类型包括 FLOAT 和 DOUBLE,定点数类型为 DECIMAL。
2 日期/时间类型
包括 YEAR、TIME、DATE、DATETIME 和 TIMESTAMP。
3 字符串类型
包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等。
4 二进制类型
包括 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。
数值类型:
MySQL 主要提供的整数类型有 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,其属性字段可以添加 AUTO_INCREMENT 自增约束条件。下表中列出了 MySQL 中的数值类型。
TINYINT |
很小的整数 |
1个字节 |
SMALLINT |
小的整数 |
2个宇节 |
MEDIUMINT |
中等大小的整数 |
3个字节 |
INT (INTEGHR) |
普通大小的整数 |
4个字节 |
BIGINT |
大整数 |
8个字节 |
字符串类型:
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个成员) |
注意:
CHAR 和 VARCHAR 类型
1.CHAR(M) 为固定长度字符串,在定义时指定字符串列长。当保存时,在右侧填充空格以达到指定的长度。M 表示列的长度,范围是 0~255 个字符。
2.例如,CHAR(4) 定义了一个固定长度的字符串列,包含的字符个数最大为 4。当检索到 CHAR 值时,尾部的空格将被删除。
3.VARCHAR(M) 是长度可变的字符串,M 表示最大列的长度,M 的范围是 0~65535。VARCHAR 的最大实际长度由最长的行的大小和使用的字符集确定,而实际占用的空间为字符串的实际长度加 1。
4.例如,VARCHAR(50) 定义了一个最大长度为 50 的字符串,如果插入的字符串只有 10 个字符,则实际存储的字符串为 10 个字符和一个字符串结束字符。VARCHAR 在值保存和检索时尾部的空格仍保留。
5.下面将不同的字符串保存到 CHAR(4) 和 VARCHAR(4) 列,说明 CHAR 和 VARCHAR 之间的差别,如下表所示。
CHAR(4) |
存储需求 |
VARCHAR(4) |
存储需求 |
'' |
4字节 |
'' |
1字节 |
'ab' |
4字节 |
'ab' |
3字节 |
'abc' |
4字节 |
'abc' |
4字节 |
'abcd' |
4字节 |
'abcd' |
5字节 |
小数类型:
FLOAT |
单精度浮点数 |
4 个字节 |
DOUBLE |
双精度浮点数 |
8 个字节 |
日期时间:
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 |
4 个字节 |