首页 > L.A.M.P > MySQL 的字段类型及长度

MySQL 的字段类型及长度

2009年1月23日 发表评论 阅读评论

数值类型

列类型 需要的存储量
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 列。

分类: L.A.M.P 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.