文档介绍:目录
111 列类型概述
1111 数值类型概述
1112 日期和时间类型概述
1113 字符串类型概述
112 数值类型
113 日期和时间类型
1131 DATETIME、DATE和TIMESTAMP类型
1132 TIME类型
1133 YEAR类型
1134 Y2K事宜和日期类型
114 String类型
1141 CHAR和VARCHAR类型
1142 BINARY和VARBINARY类型
1143 BLOB和TEXT类型
1144 ENUM类型
1145 SET类型
115 列类型存储需求
116 选择正确的列类型
117 使用来自其他数据库引擎的列类型
MySQL支持多种列类型:数值类型、日期/时间类型和字符串(字符)类型。本章首先对这些列类型进行了概述,然后更加详细地描述了各种列的类型,以及列类型存储需求的总结。概述很简单。关于具体列类型的详细信息应查阅详细的描述,例如指定值时允许使用的格式。
MySQL支持处理空间数据的扩展名。关于空间类型的信息参见第19章:MySQL中的空间扩展。
几种列类型描述使用了下述惯例:
· M
表示最大显示宽度。最大有效显示宽度是255。
· D
适用于浮点和定点类型,并表示小数点后面的位数。最大可能的值是30,但不应大于M-2。
· 方括号(‘[’和‘]’)表示可选部分。
111 列类型概述
1111 数值类型概述
1112 日期和时间类型概述
1113 字符串类型概述
1111 数值类型概述
下面为数值列类型的概述。详细信息参见112节,“数值类型”。列存储需求参见115节,“列类型存储需求”。
M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关,相关描述见112节,“数值类型”。
如果为一个数值列指定ZEROFILL,MySQL自动为该列添加UNSIGNED属性。
SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的一个别名。
在整数列定义中,SERIAL DEFAULT VALUE是NOT NULL AUTO_INCREMENT UNIQUE的一个别名。
警告:应当清楚,当使用在整数值(其中一个是UNSIGNED类型)之间使用减号时,结果是无符号。参见128节,“Cast函数和操作符”。
· BIT[(M)]
位字段类型。M表示每个值的位数,范围为从1到64。如果M被省略, 默认为1。
· TINYINT[(M)] [UNSIGNED] [ZEROFILL]
很小的整数。带符号的范围是-128到127。无符号的范围是0到255。
· BOOL,BOOLEAN
是TINYINT(1)的同义词。zero值被视为假。非zero值视为真。
在将来,将根据标准SQL引入完全布尔类型的处理。
· 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列的下述内容:
o
使用带符号的BIGINT或DOUBLE值进行所有算法,因此除了位函数,不应使用大于9223372036854775807(63位)的无符号的大整数!
如果这样做,结果中的最后几位可能出错,这是由于将BIGINT值转换为DOUBLE进行四舍五入时造成的错误。
MySQL可以在以下情况