Table of Contents 11.1.1. Overview of Numeric Types 11.1.2. Overview of Date and Time Types 11.1.3. Overview of String Types 11.3.1. The DATETIME, DATE, and TIMESTAMP Types 11.3.4. Y2K Issues and Date Types 11.4.1. The CHAR and VARCHAR Types 11.4.2. The BINARY and VARBINARY Types 11.4.3. The BLOB and TEXT Types 11.5. Column Type Storage Requirements 11.6. Choosing the Right Type for a Column 11.7. Using Column Types from Other Database Engines MySQL支持几种类类型,每种类型里又有若干种类别:numeric types, date and time types, and string (character) types. 本章首先概览这些列类型,然后给出详细的介绍。 MySQL 5.0 支持处理空间数据的扩展。有关空间类型见: Chapter 17, Spatial Extensions in MySQL. 一些列类型描述使用如下约定: M 表示最大长度。最大的合法的显示长度是255。 D 用于浮点类型和定点类型,表示小数点之后的数字位数。最大可能值是30,但是最好不要超过M-2. 11.1. Column Type Overview 下面是数字类型的总结。详细信息见: Section 11.2, “Numeric Types”. 列的存储要求见: Section 11.5, “Column Type Storage Requirements”.
如果你给数字列指定了 ZEROFILL, MySQL会自动给这个列赋属性值为UNSIGNED. SERIAL 是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的别名。 整数列的定义中SERIAL DEFAULT VALUE 是 NOT NULL AUTO_INCREMENT UNIQUE的别名. 警告: 当你在两个整数值之间使用减法运算时,如果一个是UNSIGNED类型,那么结果是UNSIGNED类型。见:Section 12.8, “Cast Functions and Operators”.
A bit-field type. M 表示每个值的bit数,从1到64。默认是1。 这个数值类型在 MySQL
一个很小的整数。其有符号值的范围是 -128 到 127. 无符号值的范围是 0 255.
他们是 TINYINT(1)的同义词。0值认为是false。非0值认为是true. In the future, full boolean type handling will be introduced in accordance with standard SQL.
小整数。有符号值的范围是-32768 to 3276.。无符号值的范围是0 to 65535。
中等大小(medium-size)的整数。有符号值的范围是-8388608 to 8388607。无符号值的范围是0 to 16777215。
一般大小(normal-size)的整数. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295.
是 INT的同义词。
一个大整数。有符号值的范围是-9223372036854775808 to 9223372036854775807。无符号值的范围是0 to 18446744073709551615。. 对于BIGINT列,你应该注意以下问题:
MySQL 5.0 在下列情况下可以处理BIGINT:
小的(单精度)的数字。范围是-3.402823466E+38 到 -1.175494351E-38, 0, 和 1.175494351E-38 到 3.402823466E+38.这些是基于IEEE标准的理论上的限制。实际的范围可能稍微小些,这取决于你的硬件和操作系统。 M 是小说的总位数。 D是小数点之后的数字位数。如果M和D漏写了,那么缺省的限制是你的硬件决定的。单精度的浮点数精确到大约小数点后7位。 如果指定UNSIGNED ,是不允许有负值的。 使用 FLOAT可能会产生预想不到的结果,因为所有MySQL中的计算都是按照双精度计算的。见: Section A.5.7, “Solving Problems with No Matching Rows”.
一般大大小(双精度)的浮点数。范围是-1.7976931348623157E+308 到-2.2250738585072014E-308, 0, 和2.2250738585072014E-308 到 1.7976931348623157E+308.这些是理论上的限制。实际情况取决于你的硬件和操作系统。 M 是小数的总位数。D是小数点后的数字位数。 如果M和D漏写了,那么这个限制由你的硬件决定。一个双精度的浮点数精确到小数点后15位。 如果指定 UNSIGNED 则不允许有负值。
是 DOUBLE的同意词。异常:如果服务器的SQL模式包括 REAL_AS_FLOAT 选项, REAL 是 FLOAT 而非 DOUBLE的同义词。
浮点数。p 表示bit的精确位。但是 MySQL 只是使用这个值来确定是否给结果列一个FLOAT或DOUBLE值。如果 p 是0到24,数值类型成为FLOAT,没有D或D值。如果p 是25到53,则数值类型为DOUBLE,没有M或D。 FLOAT(p) 语法是用来解决ODBC兼容的。
MySQL A packed “exact” fixed-point number. M 是小数的总位数(the precision) , D 是小数点之后的数字位数。小数点和负号 ‘-’ 不包括在 M.中。如果 D 是 0, 值没有小说点或小说部分。DECIMAL中最大的(M)是 65 (64 from 如果指定UNSIGNED 就不允许有负值。 DECIMAL列的所有基本的计算 (+, -, *, /) 都是65位精度的。 MySQL An unpacked fixed-point number. Behaves like a CHAR column; “unpacked” means the number is stored as a string, using one character for each digit of the value. M is the total number of digits and D is the number of digits after the decimal point. The decimal point and (for negative numbers) the ‘-’ sign are not counted in M, although space for them is reserved. If D is 0, values have no decimal point or fractional part. The maximum range of DECIMAL values is the same as for DOUBLE, but the actual range for a given DECIMAL column may be constrained by the choice of M and D. If D is omitted, the default is 0. If M is omitted, the default is 10. If UNSIGNED is specified, negative values are disallowed.
都是DECIMAL的同义词。 The FIXED synonym is available for compatibility with other servers. 时间类型如下。详见: Section 11.3, “Date and Time Types”. 存储要求见: Section 11.5, “Column Type Storage Requirements”.
日期. 范围是 ‘
日期和时间的结合. 范围是 ‘1000-01-01 00:00:00‘ 到 ‘9999-12-31 23:59:59‘. MySQL 用格式‘YYYY-MM-DD HH:MM:SS‘表示DATETIME, 但是允许你使用数值或字符串给DATETIME赋值。
A timestamp. 范围是 ‘1970-01-01 00:00:00‘ 到 partway through the year 2037. TIMESTAMP 列对于记录INSERT或UPDATE操作的时间和日期的记录是很有用的。如果你没有指定值,那么表格中的第一个 TIMESTAMP 列制动设置为最近操作过的日期和时间。你也可以通过给它指定一个NULL值来为TIMESTAMP列设置一个当前日期和时间。 . MySQL 5.0中, TIMESTAMP作为一个格式为‘YYYY-MM-DD HH:MM:SS‘的字符串返回。 其显示宽度为19个字符。如果你想要取得其数字值,你应该加+0到timestamp列上。
A time. 范围是 ‘-838:59:59‘到 ‘838:59:59‘. MySQL 以格式‘HH:MM:SS‘显示TIME ,但是允许你使用字符串或数字来给TIME指定值。
格式为2个或4个数字的年。默认是4个数字格式。在4个数字的格式中,其范围是1901到2155和0000。2个数字的格式的范围是70到69,表示1970到2069年。MySQL 以格式YYYY表示年,但是允许使用字符串或数字来指定年值。 字符串列的类型如下。详细信息见: Section 11.4, “String Types”. 存储要求见 in Section 11.5, “Column Type Storage Requirements”. I有时,MySQL可以把一个string列转换为不同的类型。详见: Section 13.1.5.1, “Silent Column Specification Changes”. MySQL 5.0 中的string数据类型有以前的4.1版本不同的性质: 许多字符串数据类型的列定义包括指定字符集的属性CHARACTER SET ,可选,校验. (CHARSET 是 CHARACTER SET的同义词。) 这些属性也适用于 CHAR, VARCHAR, the TEXT types, ENUM, and SET. 如: · CREATE TABLE t · ( · c1 CHAR(20) CHARACTER SET utf8, · c2 CHAR(20) CHARACTER SET latin1 COLLATE latin1_bin · ); 这个表定义了一个字符集为utf8的名为c1的列,一个字符集为latin1且二进制校验该集合的名为c2的列。二进制校验大小写敏感。
更多有关MySQL 5.0字符集合的信息见: Chapter 10, Character Set Support.
固定长度的字符串,存储时通常是右填充的。M 表示列的长度。MySQL 5.0中范围是0到255。 注意: 当读取CHAR值时,末尾的空格被移除。 Before MySQL MySQL mysql> CREATE TABLE c1 (col1 INT, col2 CHAR(500)); ERROR 1074 (42000): Column length too big for column ‘col‘ (max = 255); use BLOB or TEXT instead mysql> SHOW CREATE TABLE c1; ERROR 1146 (42S02): Table ‘test.c1‘ doesn‘t exist CHAR 是 CHARACTER的缩写。 NATIONAL CHAR (或其等价形式 NCHAR) 是标准的定义CHAR 列的SQL 方式,且应使用默认字符集。. This is the default in MySQL. BINARY 属性是attribute is shorthand for specifying the binary collation of the column character set. Sorting and comparison is based on numeric character values. 列类型 CHAR BYTE 是 CHAR BINARY的别名. This is a compatibility feature. ASCII 属性可以指定给CHAR。它指定latin1字符集。 MySQL 5.0中UNICODE属性可以指定给CHAR。 它指定了ucs2字符集。 MySQL 允许创建一个类型为CHAR(0)的列。This is mainly useful when you have to be compliant with some old applications that depend on the existence of a column but that do not actually use the value. This is also quite nice when you need a column that can take only two values: 一个不被指定为NULL的 CHAR(0) 列只占有一个bit,并且只可以赋值为NULL或 ’’。.
等价于CHAR(1).
可变长度的字符串。M 表示列的最大长度。. MySQL Note: Before Previus to MySQL VARCHAR 是 CHARACTER VARYING 的缩写。 In MySQL 5.0, the BINARY attribute is shorthand for specifying the binary collation of the column character set. Sorting and comparison is based on numeric character values. Starting from MySQL
BINARY 类似于CHAR ,单存储的是byte字符串而不是非byte字符串。
The VARBINARY 类似于 VARCHAR ,但是存储的是byte字符串,而不是非byte字符串。
BLOB列的最大长度是255 (28 – 1) bytes.
TEXT 列的最大长度是255 (28 – 1) characters.
BLOB 最大长度是 65,535 (216 – 1) bytes. MySQL 5.0中可选长度 M 也可以这种类型给出。 如果这样做了,那么 MySQL将创建最小的BLOG类型来存储M byte值。 TEXT[(M)] TEXT 最大长度 65,535 (216 – 1) characters. In MySQL 5.0, an optional length M can be given. Then MySQL will create the column as the smallest TEXT type large enough to hold values M characters long.
BLOB列最大长度 16,777,215 (224 – 1) bytes.
TEXT 列最大长度16,777,215 (224 – 1) characters.
BLOB 列最大长度 4,294,967,295 or 4GB (232 – 1) bytes. LONGBLOG的最大有效长度取决于客户/服务器协议和可用的寄存器的最大包的大小。 effective (permitted) length of LONGBLOB columns depends on the configured maximum packet size in the client/server protocol and available memory.
TEXT 列的最大长度是 4,294,967,295 or 4GB (232 – 1) characters. 最大有效长度取决于客户/服务器协议和可用的寄存器的最大包的大小。effective (permitted) length of LONGTEXT columns depends on the configured maximum packet size in the client/server protocol and available memory.
枚举类型。一个字符串对象只能右一个值,且必须是‘value1‘, ‘value2‘, ...其中的一个。NULL 或专用的 ‘‘ 错误值。 ENUM 列可以右最多65,535 个互斥值。 ENUM 值是用内部的整数表示的。
集合。一个字符串对象有一个或多个值。每一必须从‘value1‘, ‘value2‘, ...中选择。SET 列最多有64个元素。SET 值在内部是用整数表示的。 |
|
来自: 元傲一 > 《mysql5.0手册中文翻译》