数据引自:http://dev.mysql.com/doc/refman/5.1/zh/column-types.html
1. 数值类型(取值范围)
类型 | 字节 | 最小值 | 最大值 |
|
| (带符号的/无符号的) | (带符号的/无符号的) |
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
|
·TINYINT——这个类型最多可容纳三位数。
·SMALLINT——最多可容纳五位数。
·MEDIUMINT——最多可容纳八位数。
·INT——可以容纳十位数。
·BIGINT——最多可容纳二十位数。
2. 时间和日期类型
列类型 | “零”值 |
DATETIME | '0000-00-00 00:00:00' |
DATE | '0000-00-00' |
TIMESTAMP | 00000000000000 |
TIME | '00:00:00' |
YEAR | 0000
|
3. 字符串类型:
CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。
VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。
下面的表显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别:
值 | CHAR(4) | 存储需求 | VARCHAR(4) | 存储需求 |
'' | ' ' | 4个字节 | '' | 1个字节 |
'ab' | 'ab ' | 4个字节 | 'ab ' | 3个字节 |
'abcd' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
'abcdefgh' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
4. 数值类型存储需求:
列类型 | 存储需求 |
TINYINT | 1个字节 |
SMALLINT | 2个字节 |
MEDIUMINT | 3个字节 |
INT, INTEGER | 4个字节 |
BIGINT | 8个字节 |
FLOAT(p) | 如果0 <= p <= 24为4个字节, 如果25 <= p <= 53为8个字节 |
FLOAT | 4个字节 |
DOUBLE [PRECISION], item REAL | 8个字节 |
DECIMAL(M,D), NUMERIC(M,D) | 变长;参见下面的讨论 |
BIT(M) | 大约(M+7)/8个字节 |
DECIMAL和NUMERIC类型在MySQL中视为相同的类型。它们用于保存必须为确切精度的值,例如货币数据。当声明该类型的列时,可以(并且通常要)指定精度和标度;例如:
salary DECIMAL(5,2)
5. 日期和时间的存储需求:
列类型 | 存储需求 |
DATE | 3个字节 |
DATETIME | 8个字节 |
TIMESTAMP | 4个字节 |
TIME | 3个字节 |
YEAR | 1个字节
|
6. 字符串类型的存储需求:
列类型 | 存储需求 |
CHAR(M) | M个字节,0 <= M <= 255 |
VARCHAR(M) | L+1个字节,其中L <= M 且0 <= M <= 65535(参见下面的注释) |
BINARY(M) | M个字节,0 <= M <= 255 |
VARBINARY(M) | L+1个字节,其中L <= M 且0 <= M <= 255 |
TINYBLOB, TINYTEXT | L+1个字节,其中L < 28 |
BLOB, TEXT | L+2个字节,其中L < 216 |
MEDIUMBLOB, MEDIUMTEXT | L+3个字节,其中L < 224 |
LONGBLOB, LONGTEXT | L+4个字节,其中L < 232 |
ENUM('value1','value2',...) | 1或2个字节,取决于枚举值的个数(最多65,535个值) |
SET('value1','value2',...) | 1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员)
|
VARCHAR、BLOB和TEXT类是变长类型。每个类型的存储需求取决于列值的实际长度(用前面的表中的L表示),而不是该类型的最大可能的大小。例如,VARCHAR(10)列可以容纳最大长度为10的字符串。实际存储需求是字符串(L)的长度,加上一个记录字符串长度的字节。对于字符串'abcd',L是4,存储需要5个字节。
注释:VARCHAR列的有效最大长度为65,532字符。