- 论坛徽章:
- 0
|
一、数据类型 字符串类型: ENUM(‘value1’,'value2',....)---枚举,一个仅有一个值的字符串对象。 SET(‘value1’,'value2',....)---一个集合。能有一个或多个值的字符串对象。一个set最多能有64个成员。 CHAR()---定长字符串。可以提高数据库的数据处理效率。 VARCHAR()---变长字符串。只存储所需字符,不会填补。 *在同一个表中不能混用CHAR和VARCHAR这两种类型,只允许一种出现。如果同时存在,mysql会进行转换,规则是: 1.长度小于4的VARCHAR被转换为CHAR; 2.如果一个表中包含任何变长的列(VARCHAR/TEXT/BLOB),所有大于3个字符的CHAR被转换为VARCHAR。 例如,我们创建下面一个表: CREATE TABLE ch_type ( ch1 char(3), ch2 varchar(3), ch3 char(4), ch4 varchar(4) ) 然后查看表的结构: DESCRIBE ch_type 在MySQL3.23上结果为: ------- ------------ | Field | Type | ------- ------------ | ch1 | char(3) | | ch2 | char(3) | | ch3 | varchar(4) | | ch4 | varchar(4) | ------- ------------ BLOB和TEXT类型的唯一区别是:对BLOB值的排序和比较以大小写敏感方式执行,而对TEXT值是大小写不敏感的。换句话说,一个TEXT是一个大小写不敏感的BLOB。 由于,BLOB和TEXT类型可以存储非常多的数据,因此使用BLOB和TEXT类型需要注意的是: BLOB 或 TEXT 列在 MySQL 3.23 以上版本中可以进行索引,虽然在索引时必须指定一个用于索引的约束尺寸,以免建立出很大的索引项从而抵消索引所带来的好处。 由于 BLOB 和 TEXT 值的大小变化很大,如果进行的删除和更新很多,则存储它们的表出现高碎片率会很高。应该定期地运行 OPTIMIZE TABLE 减少碎片率以保持良好的性能。
|
|