转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> MySql >> 正文
MySQL 4.1.0 中文参考手册 --- 6.2 列类型         ★★★★

MySQL 4.1.0 中文参考手册 --- 6.2 列类型

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3701 更新时间:2009/4/22 20:56:55
MySQL 4.1.0 中文参考手册 --- 犬犬(心帆)翻译

MySQL Reference Manual for version 4.1.0-alpha.


6.2 列类型

MySQL 支持大量的列类型,它们可以被分为 3 类:数字类型、日期和时间类型以及字符串(字符)类型。这个章节首先给出可用类型的概述,并且总结各类型所需的存储需求,然后提供各类型中的类型范畴更详细的描述。概述有意地简化了。更详细的说明应该参考特写列类型的附加信息,例如你能为其指定值的允许格式。

MySQL 支持的列类型在下面列出。下列代码字母用于描述中:

M
指出最大的显示尺寸。最大的显示尺寸长度为 255。
D
适用于浮点类型。指出跟随在十进制小数点后的数字数量。最大可能值为 30,但不应大于 M-2。

方括号 (“[” and “]”) 指定可选的类型修饰部份。

注意,如果为一个列指定了 ZEROFILL,MySQL 将自动为这个列添加 UNSIGNED 属性。

警告:你应该知道当在两个整数类型值中使用减法时,如有一个为 UNSIGNED类型,那么结果也是无符号的。查看章节 6.3.5 Cast 函数。

TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一个非常小的整数。有符号的范围是 -128127。无符号的范围是 0255
BIT
BOOL
它们是 TINYINT(1) 的同义词。
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
一个小整数。有符号的范围是 -3276832767。无符号的范围是 065535
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
一个中等大小的整数。有符号的范围是 -83886088388607。无符号的范围是 016777215
INT[(M)] [UNSIGNED] [ZEROFILL]
一个正常大小的整数。有符号的范围是 -21474836482147483647。无符号的范围是 04294967295
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
INT 的同义词。
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
一个大的整数。有符号的范围是 -92233720368547758089223372036854775807。无符号的范围是 018446744073709551615。 你应该知道的有关 BIGINT 列的一些事情:
  • 所有的算术运算均是用有符号的 BIGINTDOUBLE 值来完成的,因此你不应该使用大于 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]
一个浮点型数字。precision 可以是 <=24 作为一个单精度的浮点数字和介于 25 和 53 之间作为一个双精度的浮点数字。这些类型与下面描述的 FLOATDOUBLE 类型相似。 FLOAT(X) 有与相应的 FLOATDOUBLE 类型同样的范围,但是显示尺寸和十进制小数位数是未定义的。 在 MySQL 3.23 中,它是一个真实的浮点值。而在 MySQL 早期的版本中,FLOAT(precision) 通常有 2 小数位。 注意,由于在 MySQL 中所有的计算都是以双精度执行的,所以使用 FLOAT 可能带来一些意想不到的问题。 查看章节 A.5.6 解决没有匹配行的问题。 该句法是为了 ODBC 兼容而提供的。
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
一个小的(单精度) 浮点数字。允许的值是 -3.402823466E+38-1.175494351E-3801.175494351E-383.402823466E+38。如果 UNSIGNED 被指定,负值是不允许的。M 是显示宽度,D 是小数位数。FLOAT 没有参数或有 X <= 24 的 FLOAT(X) 代表一个单精度的浮点数字。
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
一个正常大小的(双精度)浮上数字。允许的值是 -1.7976931348623157E+308-2.2250738585072014E-30802.2250738585072014E-3081.7976931348623157E+308。如果 UNSIGNED 被指定,负值是不允许的。M 是显示宽度,D 是小数位数。DOUBLE 没胡参数或有 25 <= X <= 53 的 FLOAT(X) 代表一个双精度的浮点数字。
DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL]
REAL[(M,D)] [UNSIGNED] [ZEROFILL]
它们是 DOUBLE 同义词。
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
一个未压缩(unpacked)的浮点数。运作如同一个 CHAR 列:“unpacked” 意味着数字是以一个字符串存储的,值的每一位将使用一个字符。小数点并且对于负数,“-” 符号不在 M 中计算(但是它们的空间是被保留的)。如果 D 是 0,值将没有小数点或小数部份。DECIMAL 值的最大范围与 DOUBLE 一致,但是对于一个给定的 DECIMAL 列,实际的范围可以被所选择的 MD 限制。如果 UNSIGNED 被指定,负值是不允许的。 如果 D 被忽略,缺省为 0。如果 M 被忽略,缺省为 10。 在 MySQL 3.23 以前,M 参数必须包含符号与小数点所需的空间。
DEC[(M[,D])] [UNSIGNED] [ZEROFILL]
NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]
DECIMAL 的同义词。
DATE
一个日期。支持的范围是 ''''1000-01-01''''''''9999-12-31''''。MySQL 以 ''''YYYY-MM-DD'''' 格式显示 DATE 值,但是允许你以字符串或数字给一个 DATE 列赋值。查看章节 6.2.2.2 DATETIMEDATETIMESTAMP 类型。
DATETIME
一个日期和时间的组合。支持的范围是 ''''1000-01-01 00:00:00''''''''9999-12-31 23:59:59''''。MySQL 以''''YYYY-MM-DD HH:MM:SS'''' 格式显示 DATETIME 值,但是允许你以字符串或数字给一个 DATETIME 列赋值。查看章节 6.2.2.2 DATETIMEDATETIMESTAMP 类型。
TIMESTAMP[(M)]
一个时间戳。范围是 ''''1970-01-01 00:00:00''''2037 年间的任意时刻。 MySQL 4.0 和更早版本中,TIMESTAMP 值是以 YYYYMMDDHHMMSSYYMMDDHHMMSSYYYYMMDDYYMMDD 格式显示的,它取决于 M 是否是 14 (或省略)、1286,但是允许你以字符串或数字给一个 TIMESTAMP 列赋值。 从 MySQL 4.1 开始,TIMESTAMP''''YYYY-MM-DD HH:MM:DD'''' 格式作为字符返回。如果你你希望以数字形式返回则必须在该时间戳字段后加上 +0。不同的时间戳长度是不支持的。从 MySQL 4.0.12 开始,选项 --new 可以被用来使服务器与 4.1 一样运作。 TIMESTAMP 列有益于记录一个 INSERTUPDATE 操作的日期和时间,因为如果你自己没有给它赋值,它将被自动地设置为最近一次操作的日期和时间。也可以通过给它赋一个 NULL 而使它设置为当前的日期和时间。查看章节 6.2.2 Date 和 Time 类型。 参数 M 只影响一个 TIMESTAMP 列的显示格式;它的值总是占用 4 个字节存储。 注意,当 TIMESTAMP(M) 列的 M 是 8 或 14 时,它返回的是数字而其它的 TIMESTAMP(M) 列返回的是字符串。这仅仅是为了可以可靠地转储并恢复到其它格式的表中。 查看章节 6.2.2.2 DATETIMEDATETIMESTAMP 类型。
TIME
一个时间。范围是 ''''-838:59:59''''''''838:59:59''''。MySQL 以 ''''HH:MM:SS'''' 格式显示 TIME 值,但是允许你使用字符串或数字来给 TIME 列赋值。查看章节 6.2.2.3 TIME 类型。
YEAR[(2|4)]
一个 2 或 4 位数字格式的年(缺省为 4 位)。允许的值是 190121550000(4 位年格式) 以及使用 2 位格式的 1970-2069 (70-69)。MySQL 以 YYYY 格式显示 YEAR 值,但是允许你使用字符串或数字来给 YEAR 列赋值。(YEAR 类型在 MySQL 3.22 之前不支持。) 查看章节 6.2.2.4 YEAR 类型。
[NATIONAL] CHAR(M) [BINARY]
一个定长的字符串,当存储时,总是以空格填满右边到指定的长度。M 的范围是 0 到 255 (在 MySQL 3.23 版本之前为 1 到 255)。当该值被检索时,尾部空格将被删除。CHAR 值根据缺省的字符集进行忽略大小写的排索与比较,除非指定了关键词 BINARYNATIONAL CHAR (或短形式 NCHAR) 是以 ANSI SQL 方式定义一个 CHAR 列,它将使用缺省的字符集。这在 MySQL 中是默认的。 CHARCHARACTER 的缩写。 MySQL 允许以 CHAR(0) 类型建立一个列。一些老程序运行时必需一个列,却又并不使用这个列的值,你就不得不为了适应它而建立该列,在这情况下,CHAR(0) 将是很有益的。当需要一个列仅保存两个值时:一个为 CHAR(0)(该列没有定义为 NOT NULL),这将仅占用一个比特位来存储 2 个值:NULL""。查看章节 6.2.3.1 CHARVARCHAR 类型。
CHAR
这是 CHAR(1) 的同义词。
[NATIONAL] VARCHAR(M) [BINARY]
一个变长的字符串。注意:尾部的空格在存储时将会被删除(这与 ANSI SQL 约规不同)。M 的范围是 0 到 255 (在 MySQL 4.0.2 之前的版本中是 1 到 255)。 VARCHAR 值以大小写忽略方式进行排索与比较,除非关键词 BINARY 被指定。查看章节 6.5.3.1 隐式的列定义变化。 VARCHARCHARACTER VARYING 的缩写。 查看章节 6.2.3.1 CHARVARCHAR 类型。
TINYBLOB
TINYTEXT
一个 BLOBTEXT 列,最大长度为 255 (2^8 - 1) 个字符。查看章节 6.5.3.1 隐式的列定义变化。查看章节 6.2.3.2 BLOBTEXT 类型。
BLOB
TEXT
一个 BLOBTEXT 列,最大长度为 65535 (2^16 - 1) 个字符。查看章节 6.5.3.1 隐式的列定义变化。查看章节 6.2.3.2 BLOBTEXT 类型。
MEDIUMBLOB
MEDIUMTEXT
一个 BLOBTEXT 列,最大长度为 16777215 (2^24 - 1) 个字符。查看章节 6.5.3.1 隐式的列定义变化。查看章节 6.2.3.2 BLOBTEXT 类型。
LONGBLOB
LONGTEXT
一个 BLOBTEXT 列,最大长度为 4294967295 (2^32 - 1) 个字符。查看章节 6.5.3.1 隐式的列定义变化。注意,由于服务器/客户端的协议以及 MyISAM 表通常有一个 16M 每通信包/表行的限制,你仍然不能使用这个类型的整个范围。查看章节 6.2.3.2 BLOBTEXT 类型。
ENUM(''''value1'''',''''value2'''',...)
一个枚举类型。一个仅能有一个值的字符串对象,这个值选自值列 ''''value1''''''''value2''''...NULL 或特殊的 "" 出错值。一个 ENUM 列可以有最大 65535 不同的值。查看章节 6.2.3.3 ENUM 类型。
SET(''''value1'''',''''value2'''',

[1] [2] [3] [4] [5]  下一页


[MySql]PHP存取 Mysql 数据乱码终极解决方案  [MySql]解决Table xxx is marked as crashed and should …
[MySql][MySQL]快速解决"is marked as crashed and shoul…  [MySql]MySQL DELETE语法用法详解
[MySql]mysql中时间日期格式化  [MySql]修改mysql导入文件大小限制
[其他]MySql常用命令大全  [Web开发]把ACCESS的数据导入到Mysql中的方法详解
[MySql]解决mysql 1040错误Too many connections的方法  [系统软件]利用crontab系统每天定时备份MySQL数据库
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台