This Domain(Admin5.com) is for Sale:

My SQL数据库实用技术(08)

时间:2007-12-23  来源:不详  作者:迈克DB



2. BLOB 与TEXT 列类型
BLOB 是一个二进制大对象,是一个可以存储大量数据的容器,可以使其任意大。在MySQL 中,BLOB 类型实际是一个类型系列( T I N Y B L O B、B L O B、M E D I U M B L O B、L O N G B L O B),除了在可以存储的最大信息量上不同外(请参阅表2 - 8),它们是等同的。
MySQL 还有一个TEXT 类型系列( T I N Y T E X T、T E X T、M E D I U M T E X T、L O N G T E X T)。除了用于比较和排序外,它们在各个方面都与相应的BLOB 类型等同,BLOB 值是区分大小写的,而TEXT 值不区分大小写。BLOB 和TEXT 列对于存储可能有很大增长的值或各行大小有很大变化的值很有用,例如,字处理文档、图像和声音、混合数据以及新闻文章等等。BLOB 或TEXT 列在MySQL 3.23 以上版本中可以进行索引,虽然在索引时必须指定一个用于索引的约束尺寸,以免建立出很大的索引项从而抵消索引所带来的好处。除此之外,一般不通过查找BLOB 或TEXT 列来进行搜索,因为这样的列经常包含二进制数据(如图像)。常见的做法是用表中另外的列来记录有关BLOB 或TEXT 值的某种标识信息,并用这些信息来确定想要哪些行。使用BLOB 和TEXT 列需要非凡注重以下几点: dedecms.com
■ 由于BLOB 和TEXT 值的大小变化很大,假如进行的删除和更新很多,则存储它们的
表出现高碎片率会很高。应该定期地运行OPTIMIZE TABLE 减少碎片率以保持良好的
性能。要了解更具体的信息请参阅第4章。
■ 假如使用非常大的值,可能会需要调整服务器增加max_allowed_packet 参数的值。具体的信息请参阅第11章“常规的MySQL 治理”。假如需要增加希望使用非常大的值的客户机的块尺寸,可见附录E“MySQL 程序参考”,该附录介绍了怎样对mysql 和mysqldump 客户机进行这种块尺寸的增加。
3. ENUM 和SET 列类型
ENUM 和SET 是一种非凡的串类型,其列值必须从一个固定的串集中选择。它们之间的主要差别是ENUM 列值必须确实是值集中的一个成员,而SET 列值可以包括集合中任意或所有的成员。换句话说, ENUM 用于互相排斥的值,而S E T列可以从一个值的列表中选择多个值。
ENUM 列类型定义了一个枚举。可赋予ENUM 列一个在创建表时指定的值列表中选择的成员。枚举可具有最多65 536 个成员(其中之一为MySQL 保留)。枚举通常用来表示类别值。例如,定义为E N U M (“N”, “Y”) 的列中的值可以是“N”或“Y”。或者可将ENUM 用于诸如调查或问卷中的多项选择问题,或用于某个产品的可能尺寸或颜色等:
dedecms.com


假如正在处理Web 页中的选择,那么可以利用ENUM 来表示站点访问者在某页上的互相排斥的单选钮集合中进行的选择。例如,假如运行一个在线比萨饼订购服务系统,可用ENUM 来表示顾客订购的比萨饼外形:

假如枚举类别表示计数,在建立该枚举时最重要的是选择合适的类别。例如,在记录实验室检验中白血球的数目时,可能会将计数分为如下的几组:

在某个测试结果以精确的计数到达时,要根据该值所属的类别来记录它。但假如想将列从基于类别的ENUM 转换为基于精确计数的整数时,不可能恢复原来的计数。在创建SET 列时,要指定一个合法的集合成员列表。在这种意义上, SET 类型与E N U M是类似的。但是SET 与ENUM 不同,每个列值可由来自集合中任意数目的成员组成。集合中最多可有64 个成员。对于值之间互斥的固定集合,可使用SET 列类型。例如,可利用SET 来表示汽车的可用选件,如下所示:

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息