Mysql入门系列:选择MYSQL列的类型
2006-12-31 10:47:37 来源:WEB开发网有时具有一些不完整的数据,这会干扰列类型的选择。如果进行家谱研究,需要记录出生日期和死亡日期,有时会发现所能搜集到的数据中只是某人出生或死亡的年份,但没有确切的日期。如果使用DATE 列,除非有完整的日期值,否则不能输入日期。如果希望能够记
录所具有的任何信息,即使不完整也保存,那么可能必须保存独立的年、月、日字段。这样就可以输入所具有的日期成员并将没有的部分设为NULL。在MySQL3.23 及以后的版本中,还允许DATE 的日为0 或者月和日部分为0。这样“模糊”的日期可用来表示不完整的日期值。
2.3.2 列值有特定的取值范围吗
如果已经决定从通用类别上选择一种列类型,那么考虑想要表示的值的取值范围会有助于将您的选择缩减到该类别中特定的类型上。假如希望存储整数值。这些整数值的取值范围为0 到10 0 0,那么可以使用从SMALLINT 到BIGINT 的所有类型。如果这些整数值的取值
范围最多为2 000 000,则不能使用S M A L L I N T,其选择范围从MEDIUMINT 到B I G I N T。需要从这个可能的选择范围中选取一种类型。当然,可以简单地为想要存储的值选择最大的类型(如上述例子中选择B I G I N T)。但是,一般应该为所要存储的值选择足以存储它的最小的类型。这样做,可以最小化表占用的存储量,得到最好的性能,因为通常较小列的处理比较大列的快。如果不知道所要表示的值的取值范围,那么必须进行猜测或使用BIGINT 以应付最坏的情况。(请注意,如果进行猜测时使用了一个太小的类型,工作不会白做;以后可以利用ALTER TABLE 来将此列改为更大一些的类型。)
在第1章中,我们为学分保存方案创建了一个score 表,它有一个记录测验和测试学分的score 列。为了讨论简单起见,创建该表时使用了INT 类型,但现在可以看出,如果学分在0到100 的取值范围内,更好的选择应该是TINYINT UNSIGNED,因为所用的存储空间较小。数据的取值范围还影响列类型的属性。如果该数据从不为负,可使用UNSIGNED 属性;否则就不能用它。
更多精彩
赞助商链接