MySQL5.1列类型

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

 

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

 

一、数值类型

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

定义存储需求数据范围说明
无符号有符号
BIT[(M )]约( M +7)/8B   位字段类型。M 表示每个值的位数,范围为从1 到64; M 默认值为1 。
TINYINT[(M )] [UNSIGNED] [ZEROFILL]1B 0 ~255 -128 ~127 很小的整数。
BOOL ,BOOLEAN     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-38 、0 小( 单精度) 浮点数。 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 <= 24 为4 B, 如果25 <= p <= 53 为8 B  浮点数。p 表示精度(以位数表示),但MySQL 只使用该值来确定是否结果列的数据类型为FLOAT 或DOUBLE 。如果p 为从0 到24 ,数据类型变为没有M D 值的FLOAT 。如果p 为从25 到53 ,数据类型变为没有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 的同义词。

 

二、日期和时间类型

 

定义

存储需求

支持的范围

”值

说明
DATETIME8B '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'

仅日期值;

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

TIMESTAMP4B不能早于1970 或晚于2037

00000000000000

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

'00:00:00'

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

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

YEAR1B 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' 格式的没有间割符的字符串。

YYYYMMDDHHMMSS 或YYMMDDHHMMSS 格式的数字。

YYYYMMDD 或YYMMDD 格式的数字。

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

 

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

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

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

HHMMSS 格式的数值。

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

 

三、字符串类型:

定义

存储需求

长度存储(值)说明

CHAR(M )

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

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

长度可以为从0 到255 的任何值。

 

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

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

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

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

VARCHAR(M )

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

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

长度可以指定为0 到65,535 之间的值。


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

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

BINARY(M )

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

长度是字节长度。

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

存储二进制字符串。

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

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

VARBINARY(M )

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

长度是字节长度。

 

存储二进制字符串。

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

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

BLOB

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

有4 种BLOB 类型:TINYBLOB 、BLOB 、MEDIUMBLOB 和LONGBLOB 。

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

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

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

有4 种TEXT 类型:TINYTEXT 、TEXT 、MEDIUMTEXT 和LONGTEXT 。

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

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

TINYBLOB , TINYTEXT

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

   

MEDIUMBLOB , MEDIUMTEXT

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

   

LONGBLOB , LONGTEXT

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

   

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

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

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

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

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

1 、2 、3 、4 或者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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值