MySQL 的字段类型及长度
数值类型
列类型 | 需要的存储量 |
---|---|
TINYINT | 1 字节 |
SMALLINT | 2 字节 |
MEDIUMINT | 3 字节 |
INT | 4 字节 |
INTEGER | 4 字节 |
BIGINT | 8 字节 |
FLOAT(X) | 4 字节(如果 X < = 24 或 8 如果 25 < = X < = 53) |
FLOAT | 4 字节 |
DOUBLE | 8 字节 |
DOUBLE PRECISION | 8 字节 |
REAL | 8 字节 |
DECIMAL(M,D) | M 字节 (D+2 , 如果M < D) |
NUMERIC(M,D) | M 字节 (D+2 , 如果M < D) |
日期和时间类型
列类型 | 需要的存储量 |
---|---|
DATE | 3 字节 |
DATETIME | 8 字节 |
TIMESTAMP | 4 字节 |
TIME | 3 字节 |
YEAR | 1 字节 |
串类型
列类型 | 需要的存储量 |
---|---|
CHAR(M) | M 字节,1 <= M <= 255 |
VARCHAR(M) | L+1 字节, 在此 L <= M 和 1 <= M <= 255 |
TINYBLOB, TINYTEXT | L+1 字节, 在此 L < 2 ^ 8 |
BLOB, TEXT | L+2 字节, 在此 L < 2 ^ 16 |
MEDIUMBLOB, MEDIUMTEXT | L+3 字节, 在此 L < 2 ^ 24 |
LONGBLOB, LONGTEXT | L+4 字节, 在此 L < 2 ^ 32 |
ENUM(‘value1′,’value2’,…) | 1 或 2 个字节, 取决于枚举值的数目(最大值65535) |
SET(‘value1′,’value2’,…) | 1,2,3,4或8个字节, 取决于集合成员的数量(最多64个成员) |
附:MySQL 数据表类型说明
1. MyISAM 表 MyISAM 存储格式自版本3.23 以来是 MySQL 中的缺省类型,它有下列特点:
■ 如果操作系统自身允许更大的文件,那么文件比 ISAM 存储方法的大。
■ 数据以低字节优先的机器独立格式存储。这表示可将表从一种机器拷贝到另一种机器,即使它们的体系结构不同也可以拷贝。
■ 数值索引值占的存储空间较少,因为它们是按高字节优先存储的。索引值在低位字节中变化很快,因此高位字节更容易比较。
■ AUTO_INCREMENT 处理比 ISAM 的表更好。
■ 减少了几个索引限制。例如,可对含 NULL 值的列进行索引,还可以对 BLOB 和 TEXT 类型的列进行索引。
■ 为了改善表的完整性检查,每个表都具有一个标志,在 myisamchk 对表进行过检查后,设置该标志。可利用 myisamchk – fast 跳过对自前次检查以来尚未被修改过表的检查,这样使此管理任务更快。表中还有一个指示表是否正常关闭的标志。如果服务器关闭不正常,或机器崩溃,此标志可用来检测出服务器起动时需要检查的表。
2. ISAM 表 ISAM 存储格式是 MySQL3.23 所用的最旧的格式,但当前仍然可用。通常,相对于 ISAM 表来说,宁可使用 MyISAM 表,因为它们的限制较少。对 ISAM 表的支持随着此存储格式被 MyISAM 表格式所支持很有可能会逐渐消失。
3. HEAP 表 HEAP 存储格式建立利用定长行的内存中的表,这使表运行得非常快。在服务器停止时,它们将会消失。在这种意义上,这些表是临时的。但是,与用 CREATE TEMPORARY TABLE 所创建的临时表相比,HEAP 表是其他客户机可见的。HEAP 表有几个限制,这些限制对 MyISAM 或 ISAM 表没有,如下所示:
■ 索引仅用于“=”和“< = >”比较。
■ 索引列中不能有 NULL 值。
■ 不能使用 BLOB 和 TEXT 列。
■ 不能使用 AUTO_INCREMENT 列。