一、数据类型
字符串类型:
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 减少碎片率以保持良好的性能。
阅读(1064) | 评论(0) | 转发(0) |