Mysql入门系列:MySQL的列类型(1)
2006-12-31 10:48:03 来源:WEB开发网在定义整型列时,可以指定可选的显示尺寸M。如果这样,M 应该是一个1到255 的整数。它表示用来显示列中值的字符数。例如, MEDIUMINT(4) 指定了一个具有4 个字符显示宽度的MEDIUMINT 列。如果定义了一个没有明确宽度的整数列,将会自动分配给它一个缺省的宽度。缺省值为每种类型的“最长”值的长度。如果某个特定值的可打印表示需要不止M 个字符,则显示完全的值;不会将值截断以适合M 个字符。对每种浮点类型,可指定一个最大的显示尺寸M 和小数位数D。M 的值应该取1到2 5 5。D 的值可为0 到3 0,但是不应大于M - 2。(如果熟悉ODBC 术语,就会知道M 和D 对应于
ODBC 概念的“精度”和“小数点位数”)M 和D 对FLOAT和DOUBLE 都是可选的,但对于DECIMAL 是必须的。在选项M 和D时,如果省略了它们,则使用缺省值。下面的语句创建了一个表,它说明了数值列类型的M 和D 的缺省值(其中不包括DECIMAL,因为M 和D 对这种类型不是可选的):
如果在创建表之后使用DESCRIBE my_table 语句,则输出的Field 和Type 列如下所示(注意,如果用MySQL的3.23 以前的版本运行这个查询,则有一个小故障, 即BIGINT 的显示宽度将是21而不是2 0。):
每一个数字列都具有一个由列类型所决定的取值范围。如果打算插入一个不在列范围内的值,将会进行截取:MySQL将剪裁该值为取值范围的边界值并使用这个结果。在检索时不进行值的剪裁。
值的剪裁根据列类型的范围而不是显示宽度进行。例如,一个SMALLINT(3) 列显示宽度为3 而取值范围为-32768 到3 27 6 7。值12345 比显示宽度大,但在该列的取值范围内,因此它可以插入而不用剪裁并且作为12345 检索。值99999 超出了取值范围,因此在插入时被剪裁为3 27 6 7。以后在检索中将以值3 27 6 7检索该值。
更多精彩
赞助商链接