MySQL数据类型:字符串类型
字符串类型可分成如下几类:
1. CHAR、VARCHAR
2. BINARY、VARBINARY
3. BLOB、TEXT
4. ENUM
5. SET
字符串类型 | 最大值 |
CHAR(M) | M取值范围为0~255个字符 |
VARCHAR(M) | M取值范围为0~65535个字符(与字符集和行的大小有关) |
BINARY(M) | M取值范围为0~255个字节 |
VARBINARY(M) | M取值范围为0~65535个字节 |
TINYBLOB | 属于BLOB类别。取值范围为0~255个字节 |
BLOB | 属于BLOB类别。取值范围为0~65535个字节 |
MEDIUMBLOB | 属于BLOB类别。取值范围为224-1个字节 |
LONGBLOB | 属于BLOB类别。取值范围为232-1个字节 |
TINYTEXT | 属于TEXT类别。取值范围为0~255个字符 |
TEXT | 属于TEXT类别。取值范围为0~65535个字符 |
MEDIUMTEXT | 属于TEXT类别。取值范围为224-1个字符 |
LONGTEXT | 属于TEXT类别。取值范围为232-1个字符 |
ENUM(‘value1’,’value2’,……) | 枚举类型,范围在表创建时指定,最多65535个成员 |
SET(‘value1’,’value2’,……) | 枚举类型,范围在表创建时指定,最多64个成员 |
- CHAR是定长字符串,VARCHAR是变长字符串。如果数据的长度大于CHAR在定义时指定的长度,保存时会在右边填充空格,查询时再把空格去掉(与SQL MODE有关)。除了保存数据本身,VARCHAR还会用一到两个字节来保存数据的长度。
- BINARY和VARBINARY,跟CHAR和VARCHAR类似,只不过前者保存的是二进制字符串,而后者保存的就是字符串。
- BLOB,是binary large object的缩写,用来保存二进制大对象。TEXT与BLOB比较相似,但它们保存的是字符串而不是二进制形式。它们都有四种具体的数据类型,见上表。
- ENUM和SET都是枚举类型,ENUM数据列必须包含且只能包含一个列表中的成员,但SET允许包含任意多个,也可以为空。ENUM最多有65,535个选项,SET最多有64个选项。