Mysql入门系列:选择MYSQL列的类型
2006-12-31 10:47:37 来源:WEB开发网2.3.4 希望对值进行什么样的比较
根据定义串的方式,可以使串类型以区分大小写或不区分大小写的方式进行比较和排序。表2-14 示出不区分大小写的每个类型及其等价的区分大小写类型。根据列定义中给不给出关键字B I N A RY,有的类型(CHAR、VARCHAR)是二进制编码或非二进制编码的。其他类型(B L O B、T E X T)的“二进制化”隐含在类型名中。
请注意,二进制(区分大小写)类型仅在比较和排序行为上不同于相应的非二进制(不区分大小写)类型。任意串类型都可以包含任意种类的数据。特别是, TEXT 类型尽管在列类型名中称为“T E X T(文本)”,但它可以很好地存储二进制数据。如果希望使用一个在比较时既区分大小写,又可不区分大小写的列。可在希望进行区分大小写的比较时,利用B I N A RY 关键字强制串作为二进制串值。例如,如果my_col 为一个CHAR 列,可按不同的方式对其进行比较:
my_col = “A B C” 不区分大小写
BINARY my_col =“A B C” 区分大小写
my_col = BINARY“A B C” 区分大小写
如果有一个希望以非字典顺序存储的串值,可考虑使用ENUM 列。ENUM 值的排序是根据列定义中所列出枚举值的顺序进行的,因此可以使这些值以任意想要的次序排序。
2.3.5 计划对列进行索引吗
使用索引可更有效地处理查询。索引的选择是第4 章中的一个主题,但一般原则是将WHERE 子句中用来选择行的列用于索引。如果您要对某列进行索引或将该列包含在多列索引中,则在类型的选择上可能会有限定。在早于3.23.2 版的MySQL发行版中,索引列必须定义为NOT NULL,并且不能对BLOB 或TEXT 类型进行索引。这些限制在MySQL3.23.2 版中都撤消了,但如果您正使用一个更早的版本,不能或不愿升级,那么必须遵从这些约束。不过在下列情形中可以绕过它们:
更多精彩
赞助商链接