MySQL 支持大量的列类型,它们可以被分为 3 类:数字类型、日期和时间类型以及字符串(字符)类型。这个章节首先给出可用类型的概述,并且总结各类型所需的存储需求,然后提供各类型中的类型范畴更详细的描述。概述有意地简化了。更详细的说明应该参考特写列类型的附加信息,例如你能为其指定值的允许格式。
MySQL 支持的列类型在下面列出。下列代码字母用于描述中:
M- 指出最大的显示尺寸。最大的显示尺寸长度为 255。
D- 适用于浮点类型。指出跟随在十进制小数点后的数字数量。最大可能值为 30,但不应大于
M-2。
方括号 (“[” and “]”) 指定可选的类型修饰部份。
注意,如果为一个列指定了 ZEROFILL,MySQL 将自动为这个列添加 UNSIGNED 属性。
警告:你应该知道当在两个整数类型值中使用减法时,如有一个为 UNSIGNED类型,那么结果也是无符号的。查看章节 6.3.5 Cast 函数。
TINYINT[(M)] [UNSIGNED] [ZEROFILL]- 一个非常小的整数。有符号的范围是
-128到127。无符号的范围是0到255。 BITBOOL- 它们是
TINYINT(1)的同义词。 SMALLINT[(M)] [UNSIGNED] [ZEROFILL]- 一个小整数。有符号的范围是
-32768到32767。无符号的范围是0到65535。 MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]- 一个中等大小的整数。有符号的范围是
-8388608到8388607。无符号的范围是0到16777215。 INT[(M)] [UNSIGNED] [ZEROFILL]- 一个正常大小的整数。有符号的范围是
-2147483648到2147483647。无符号的范围是0到4294967295。 INTEGER[(M)] [UNSIGNED] [ZEROFILL]INT的同义词。BIGINT[(M)] [UNSIGNED] [ZEROFILL]- 一个大的整数。有符号的范围是
-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615。 你应该知道的有关BIGINT列的一些事情:- 所有的算术运算均是用有符号的
BIGINT或DOUBLE值来完成的,因此你不应该使用大于9223372036854775807(63 bits) 的无符号大整数,除了位函数之外!如果你这样做了,结果中的某些大数字可能会出错,因为将BIGINT转换成DOUBLE时产生了舍入错误。MySQL 4.0 在下列情况下可以处理BIGINT:- 在一个
BIGINT列中使用整数存储一个大的无符号值。 - 在
MIN(big_int_column)和MAX(big_int_column)中。 - 当两个操作数都是整数时使用操作符 (
+、-、*、等)。
- 在一个
- 通常你可以在一个
BIGINT列中以字符串方式存储的一个精确的整数。在这种情况下,MySQL 将执行一个字符串到数字的转换,包括无 intermediate 的双精度表示法。 - 当两个参数均是整数值时,“-”、“+”和 “*” 将使用
BIGINT运算!这就意味着,如果两个大整数的乘积(或函数的结果返回整数)的结果大于9223372036854775807时,你可能会得到意想不到的结果。
- 所有的算术运算均是用有符号的
FLOAT(precision) [UNSIGNED] [ZEROFILL]


