This Domain(Admin5.com) is for Sale:

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

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


然后,特定的SET 值将表示顾客实际订购哪些选件,如下所示:

  空串表示顾客未订购任何选件。这是一个合法的SET 值。SET 列值为单个串。假如某个值由多个集合成员组成,那么这些成员在串中用逗号分隔。显然,这表示不应该用含有逗号的串作为SET 成员。SET 列的其他用途是表示诸如病人的诊断或来自Web 页的选择结果这样的信息。对于诊断,可能会有一个向病人提问的标准症状清单,而病人可能会表现出某些症状或所有的症状。对于在线比萨饼服务系统,用于订购的Web 页应该具有一组复选框,用来表示顾客想在比萨饼上加的配料。对ENUM 或SET 列的合法值列表的定义很重要,例如:
  ■ 正如上面所介绍的,此列表决定了列的可能合法值。
  ■ 可按任意的大小写字符插入ENUM 或SET 值,但是列定义中指定的串的大小写字符决定了以后检索它们时的大小写。例如,假如有一个E N U M (“Y”, “N”) 列,但您在其中存储了“ y”和“n”,当您检索出它们时显示的是“ Y”和“N”。这并不影响比较或排序的状态,因为ENUM 和SET 列是不区分大小写的。 织梦内容管理系统
  ■ 在ENUM 定义中的值顺序就是排序顺序。SET 定义中的值顺序也决定了排序顺序,但是这个关系更为复杂,因为列值可能包括多个集合成员。
  ■ SET 定义中的值顺序决定了在显示由多个集合成员组成的SET 列值时,子串出现的顺序。
  ENUM 和SET 被归为串类型是由于在建立这些类型的列时,枚举和集合成员被指定为串。但是,这些成员在内部存放时作为数值,而且同样可作为数值来处理。这表示ENUM 和S E T类型比其他的串类型更为有效,因为通常可用数值运算而不是串运算来处理它们。而且这还表示ENUM 和SET 值可用在串或数值的环境中。
列定义中的ENUM 成员是从1 开始顺序编号的。(0 被MySQL 用作错误成员,假如以串的形式表示就是空串。)枚举值的数目决定了ENUM 列的存储大小。一个字节可表示256 个值,两个字节可表示65 536 个值。(可将其与一字节和两字节的整数类型T I N Y I N T、
UNSIGNED 和SMALLINT UNSIGNED 进行对比。)因此,枚举成员的最大数目为65 536(包括错误成员),并且存储大小依靠于成员数目是否多于256 个。在ENUM 定义中,可以最多指定65 535(而不是65 536)个成员,因为MySQL 保留了一个错误成员,它是每个枚举的隐含成员。在将一个非法值赋给ENUM 列时,MySQL 自动将其换成错误成员。下面有一个例子,可用mysql 客户机程序测试一下。它给出枚举成员的数值顺序,而且还说明了NULL 值无顺序编号:
copyright dedecms


可对ENUM 成员按名或者按编号进行运算,例如:

可以定义空串为一个合法的枚举成员。与列在定义中的其他成员一样,它将被赋予一个非零的数值。但是使用空串可能会引起某些混淆,因为该串也被作为数值为0 的错误成员。在下面的例子中,将非法的枚举值“ x”赋予ENUM 列引起了错误成员的赋值。仅在以数值
形式进行检索时,才能够与空串区分开:

SET 列的数值表示与ENUM 列的表示有所不同,集合成员不是顺序编号的。每个成员对应SET 值中的一个二进制位。第一个集合成员对应于0 位,第二个成员对应于1 位,如此等等。数值SET 值0 对应于空串。SET 成员以位值保存。每个字节的8 个集合值可按此方式存

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

文章评论

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

24小时热门信息