使MySQL 在这个字段中插入一个空字符串。另外如果插入值的大小写与集合中值的大小写不匹配,MySQL 会自动使用插入值的大小写转换成与集合中大小写一致的值。
ENUM 类型在系统内部可以存储为数字,并且从 1 开始用数字做索引。一个ENUM 类型最多可以包含65536 个元素,其中一个元素被MySQL 保留,用来存储错误信息,这个错误值用索引0 或者一个空字符串表示。
MySQL 认为ENUM 类型集合中出现的值是合法输入,除此之外其它任何输入都将失败。这说明通过搜索包含空字符串或对应数字索引为0 的行就可以很容易地找到错误记录的位置。
SET 类型
SET 类型与ENUM 类型相似但不相同。SET 类型可以从预定义的集合中取得任意数量的值。并且与ENUM 类型相同的是任何试图在SET 类型字段中插入非预定义的值都会使MySQL 插入一个空字符串。如果插入一个即有合法的元素又有非法的元素的记录,MySQL 将会保留合法的元素,除去非法的元素。
一个SET 类型最多可以包含64 项元素。在SET 元素中值被存储为一个分离的“位”序列,这些“位”表示与它相对应的元素。“位”是创建有序元素集合的一种简单而有效的方式。并且它还去除了重复的元素,所以SET 类型中不可能包含两个相同的元素。
希望从SET 类型字段中找出非法的记录只需查找包含空字符串或二进制值为0 的行。
二、MySQL 数据表类型说明
1. MyISAM 表MyISAM 存储格式自版本3.23 以来是MySQL 中的缺省类型,它有下列特点:
■ 如果操作系统自身允许更大的文件,那么文件比ISAM 存储方法的大。
■ 数据以低字节优先的机器独立格式存储。这表示可将表从一种机器拷贝到另一种机器,即使它们的体系结构不同也可以拷贝。
■ 数值索引值占的存储空间较少,因为它们是按高字节优先存储的。索引值在低位字节中变化很快,因此高位字节更容易比较。
■ AUTO_INCREMENT 处理比ISAM 的表更好。
■ 减少了几个索引限制。例如,可对含NULL 值的列进行索引,还可以对BLOB 和TEXT 类型的列进行索引。
■ 为了改善表的完整性检查,每个表都具有一个标志,在myisamchk 对表进行过检查后,设置该标志。可利用myisamchk - fast 跳过对自前次检查以来尚未被修改过表的检查,这样使此管理任务更快。表中还有一个指示表是否正常关闭的标志。如果服务器关闭不正常,或机器崩溃,此标志可用来检测出服务器起动时需要检查的表。
2. ISAM 表ISAM 存储格式是MySQL
3.23 所用的最旧的格式,但当前仍然可用。通常,相对于ISAM 表来说,宁可使用MyISAM 表,因为它们的限制较少。对ISAM 表的支持随着此存储格式被MyISAM 表格式所支持很有可能会逐渐消失。