`

MySQL5.1列类型

    博客分类:
  • DB
阅读更多

官方文档:MySQL 5.1参考手册 :: 11. 列类型

 

MySQL列类型分为3大类:数值类型、日期和时间类型、字符串类型。

 

一、数值类型

如无特别说明 M 表示最大显示宽度。最大有效显示宽度是255 。显示宽度与存储大小或类型包含的值的范围无关。

定义 存储需求 数据范围 说明
无符号 有符号
BIT[(M )] ( M +7)/8B     位字段类型。M 表示每个值的位数,范围为从164; M 默认值为1
TINYINT[(M )] [UNSIGNED] [ZEROFILL] 1B 0 ~255 -128 ~127 很小的整数。
BOOLBOOLEAN       TINYINT(1) 的同义词。zero 值为false;非zero 值为true。
SMALLINT[(M )] [UNSIGNED] [ZEROFILL] 2B 0 ~65535 -32768 ~32767 小的整数。
MEDIUMINT[(M )] [UNSIGNED] [ZEROFILL] 3B 0 ~16777215 -8388608 ~8388607 中等大小的整数。
INT[(M )] [UNSIGNED] [ZEROFILL] 4B 0 ~4294967295 -2147483648 ~2147483647 普通大小的整数。
INTEGER[(M )] [UNSIGNED] [ZEROFILL]       INT 的同义词。
BIGINT[(M )] [UNSIGNED] [ZEROFILL] 8B 0 ~18446744073709551615 -9223372036854775808 ~9223372036854775807 大整数。
FLOAT[(M ,D )] [UNSIGNED] [ZEROFILL] 4B 1.175494351E-38 ~3.402823466E+38 -3.402823466E+38 ~-1.175494351E-380 ( 单精度) 浮点数。 M 是小数纵位数,D 是小数点后面的位数。如果M D 被省略,根据硬件允许的限制来保存值。单精度浮点数精确到大约7 位小数位。
DOUBLE[(M ,D )] [UNSIGNED] [ZEROFILL] 8B      
DOUBLE PRECISION[(M ,D )] [UNSIGNED] [ZEROFILL] , REAL[(M ,D )] [UNSIGNED] [ZEROFILL]       DOUBLE 的同义词。
FLOAT(p ) [UNSIGNED] [ZEROFILL] 如果0 <= p <= 244 B, 如果25 <= p <= 538 B     浮点数。p 表示精度(以位数表示),但MySQL 只使用该值来确定是否结果列的数据类型为FLOATDOUBLE 。如果p 为从024 ,数据类型变为没有M D 值的FLOAT 。如果p 为从2553 ,数据类型变为没有M D 值的DOUBLE 。结果列范围与本节前面描述的单精度FLOAT 或双精度DOUBLE 数据类型相同。
DECIMAL[(M [,D ])] [UNSIGNED] [ZEROFILL] 变长      
DEC[(M [,D ])] [UNSIGNED] [ZEROFILL] , NUMERIC[(M [,D ])] [UNSIGNED] [ZEROFILL] , FIXED[(M [,D ])] [UNSIGNED] [ZEROFILL]       DECIMAL 的同义词。

 

二、日期和时间类型

 

定义

存储需求

支持的范围

”值

说明
DATETIME 8B '1000-01-01 00:00:00' ~ '9999-12-31 23:59:59'

'0000-00-00 00:00:00'

同时包含日期和时间信息;

允许保存日/ 月和日是零的日期。

DATE 3B '1000-01-01' ~ '9999-12-31'

'0000-00-00'

仅日期值;

允许保存日/ 月和日是零的日期。

TIMESTAMP 4B 不能早于1970 或晚于2037

00000000000000

列类型的属性不固定,取决于MySQL 版本和服务器运行的SQL 模式。
TIME 3B '-838:59:59' ~ '838:59:59'

'00:00:00'

'HH:MM:SS' 格式检索和显示TIME 值。

无效TIME 值被转换为'00:00:00'。

YEAR 1B 1901 ~ 2155

0000

表示年。

单字节类型。

YYYY 格式检索和显示YEAR 值。

非法YEAR 值被转换为0000

 

1. 每个时间类型有一个有效值范围和一个“ ”值,当指定不合法的MySQL 不能表示的值时使用“ ”值。
    如果不想在日期中出现零,可以使用NO_ZERO_IN_DATE SQL 模式。
2. 如果试图插入一个不合法的日期,MySQL 将给出警告或错误。
3. 可以使用ALLOW_INVALID_DATES SQL 模式让MySQL 接受某些日期。
4. 允许将'0000-00-00' 保存为“伪日期”( 如果不使用NO_ZERO_DATE SQL 模式) ,这在某些情况下比使用NULL 值更方便( 并且数据和索引占用的空间更小)

 

5. 可以使用任何常见格式指定DATETIME DATE TIMESTAMP 值:

'YYYY-MM-DD HH:MM:SS''YY-MM-DD HH:MM:SS' 格式的字符串。

'YYYY-MM-DD''YY-MM-DD' 格式的字符串。

'YYYYMMDDHHMMSS''YYMMDDHHMMSS' 格式的没有间割符的字符串。

'YYYYMMDD''YYMMDD' 格式的没有间割符的字符串。

YYYYMMDDHHMMSSYYMMDDHHMMSS 格式的数字。

YYYYMMDDYYMMDD 格式的数字。

无效DATETIMEDATE 或者TIMESTAMP 值被转换为相应类型的“ ”值。

 

6. 可以用各种格式指定TIME 值:

'D HH:MM:SS.fraction' 格式的字符串。

'HHMMSS' 格式的没有间割符的字符串。

HHMMSS 格式的数值。

超出TIME 范围但合法的值被裁为范围最接近的端点。

 

三、字符串类型:

定义

存储需求

长度 存储(值) 说明

CHAR(M )

M 个字节,0 <= M <= 255

列长度固定为创建表时声明的长度。

长度可以为从0255 的任何值。

 

当保存CHAR 值时,在它们的右边填充空格以达到指定的长度。

声明的长度表示你想要保存的最大字符数。

当检索到CHAR 值时,尾部的空格被删除掉。

在存储或检索过程中不进行大小写转换。

VARCHAR(M )

L +1 个字节,其中L <= M 0 <= M <= 65535

列中的值为可变长字符串。

长度可以指定为065,535 之间的值。


值保存时不进行填充,只保存需要的字符数,另加一个字节来记录长度( 如果列声明的长度超过255 ,则使用两个字节)

声明的长度表示你想要保存的最大字符数。

BINARY(M )

M 个字节,0 <= M <= 255

长度是字节长度。

保存BINARY 值时,在它们右边填充值以达到指定长度。

存储二进制字符串。

插入值时在右侧添加0x00 on ,并且选择时不删除尾部的字节。

比较时所有字节很重要,包括ORDER BYDISTINCT 操作。

VARBINARY(M )

L +1 个字节,其中L <= M 0 <= M <= 255

长度是字节长度。

 

存储二进制字符串。

插入时不填充字符,选择时不裁剪字节。

比较时所有字节很重要,包括ORDER BYDISTINCT 操作。

BLOB

L +2 个字节,其中L < 216

4BLOB 类型:TINYBLOB BLOBMEDIUMBLOB LONGBLOB

它们只是可容纳值的最大长度不同。

二进制大对象,可以容纳可变数量的数据。 没有字符集,并且排序和比较基于列值字节的数值值。
TEXT

L +2 个字节,其中L < 216

4TEXT 类型:TINYTEXT TEXTMEDIUMTEXT LONGTEXT

这些对应4BLOB 类型,有相同的最大长度和存储需求。

非二进制字符串( 字符字符串) 有一个字符集,并且根据字符集的 校对规则对值进行排序和比较。

TINYBLOB , TINYTEXT

L +1 个字节,其中L < 28

     

MEDIUMBLOB , MEDIUMTEXT

L +3 个字节,其中L < 224

     

LONGBLOB , LONGTEXT

L +4 个字节,其中L < 232

     

ENUM('value1 ','value2 ',...)

12 个字节,取决于枚举值的个数( 最多65,535 个值)

  是一个字符串对象,其值来自表创建时在列规定中显式枚举的一列值。

枚举最多可以有65,535 个元素。

SET('value1 ','value2 ',...)

1234 或者8 个字节,取决于set 成员的数目( 最多64 个成员)

  是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。 最多可以有64 个不同的成员。

 

其它数据库与MySQL的类型对应关系:

其它数据库类型

MySQL 类型

BOOL ,

TINYINT

BOOLEAN

TINYINT

CHAR VARYING(M )

VARCHAR(M )

DEC

DECIMAL

FIXED

DECIMAL

FLOAT4

FLOAT

FLOAT8

DOUBLE

INT1

TINYINT

INT2

SMALLINT

INT3

MEDIUMINT

INT4

INT

INT8

BIGINT

LONG VARBINARY

MEDIUMBLOB

LONG VARCHAR

MEDIUMTEXT

LONG

MEDIUMTEXT

MIDDLEINT

MEDIUMINT

NUMERIC

DECIMAL

分享到:
评论
1 楼 showzh 2013-12-03  

相关推荐

    MySql 5.1 参考手册.chm

    前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 ...11.6. 选择正确的列类型

    MySQL 5.1参考手册 (中文版)

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串...

    MySQL 5.1参考手册

    2.3.9. 选择MySQL服务器类型 2.3.10. 首次启动服务器 2.3.11. 从Windows命令行启动MySQL 2.3.12. 以Windows服务方式启动MySQL 2.3.13. 测试MySQL安装 2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 ...

    MySQL 5.1参考手册中文版

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. ...

    MySQL 5.1官方简体中文参考手册

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串...

    MySQL 5.1中文手冊

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串...

    mysql5.1中文手册

    使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串...

    MySQL5.1参考手册官方简体中文版

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串...

    MySQL-5.1-Manual_zh.rar_12.21_mysql api_mysql manual chm_mysql5.

    MySQL5.1 中文手册 这是MySQL参考手册的翻译版本,关于MySQL参考手册,请访问dev.mysql.com。 原始参考手册为英文版。 -------------------------------------------------------------------------------- ...

    MySQL中decimal类型用法的简单介绍

    MySQL中支持浮点数的类型有FLOAT、DOUBLE和DECIMAL类型,DECIMAL 类型不同于FLOAT和DOUBLE,DECIMAL 实际是以串存放的。DECIMAL 可能的最大取值范围与DOUBLE ...DECIMAL从MySQL 5.1引入,列的声明语法是DECIMAL(M,D)。

    MySQL中文参考手册.chm

    7.1.4 NULL值 7.1.5 数据库,表,索引,列和别名的命名 7.1.5.1 名字的大小写敏感性 7.2 用户变量 7.3 列类型 7.3.1 列类型的存储要求 7.3.5 数字类型 7.3.6 日期和时间类型...

    MYSQL

    7.1.5.1 名字的大小写敏感性 7.2 用户变量 7.3 列类型 7.3.1 列类型的存储要求 7.3.5 数字类型 7.3.6 日期和时间类型 7.3.6.1 问题和日期类型 7.3.6.2 DATETIME,DATE和TIMESTAMP...

    MySQL中文手册MySQL中文手册

    11. 列类型 12. 函数和操作符 13. SQL语句语法 14. 插件式存储引擎体系结构 15. 存储引擎和表类型 16. 编写自定义存储引擎 17. MySQL簇 18. 分区 19. 中的空间扩展 20. 存储程序和函数 21. 触发程序 22. ...

    MySQL中文参考手册

    + 7.3.1 列类型的存储要求 + 7.3.5 数字类型 + 7.3.6 日期和时间类型 # 7.3.6.1 问题和日期类型 # 7.3.6.2 DATETIME,DATE和TIMESTAMP类型 # 7.3.6.3 TIME类型 # 7.3.6.4 YEAR类型 + 7.3.7 字符串类型 # 7.3...

    MYSQL中文手册

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. ...

    MYSQL安装包官方试用版

    根据类别列出了MySQL支持的每个列类型的存储需求。 MyISAM表中行的最大大小为65,534字节。每个BLOB和TEXT列 账户只占其中的5至9个字节。 如果MyISAM表包括变长列类型,记录格式也是可变长度。当创建表时,在某些...

    高性能MySQL(第3版).part2

    7.10.3MySQL5.1中全文索引的变化303 7.10.4全文索引的限制和替代方案304 7.10.5全文索引的配置和优化306 7.11分布式(XA)事务307 7.11.1内部XA事务307 7.11.2外部XA事务308 7.12查询缓存309 7.12.1MySQL如何...

    mysql官方中文参考手册

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串...

Global site tag (gtag.js) - Google Analytics