努力,一定可以成长起来

MySQL数据库表的列类型[转]

MySQL支持多种列类型:

数值类型、日期/时间类型、字符串(字符)类型。


1.
数值类型:
BIT[(M)],位字段类型;
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

TINYINT[(M)],很小的整数。带符号的范围是-128127。无符号的范围是0255

BOOL
BOOLEAN,是TINYINT(1)的同义词。zero值被视为假。非zero值视为真。是TINYINT(1)的同义词。

SMALLINT[(M)]
,小的整数。带符号的范围是-3276832767。无符号的范围是065535

MEDIUMINT[(M)]
,中等大小的整数。带符号的范围是-83886088388607。无符号的范围是016777215

INT[(M)]
INTEGER[(M)],普通大小的整数。带符号的范围是-21474836482147483647。无符号的范围是04294967295

BIGINT[(M)]

FLOAT[(M,D)]
DOUBLE[(M,D)]DECIMAL[(M[,D])],等等

2.
日期和时间类型:
DATE,日期。支持的范围为'1000-01-01''9999-12-31'MySQL'YYYY-MM-DD'格式显示DATE

DATETIME
,日期和时间的组合。支持的范围是'1000-01-01 00:00:00''9999-12-31 23:59:59'MySQL'YYYY-MM-DD HH:MM:SS'格式显示DATETIME

TIMESTAMP[(M)]
,时间戳。TIMESTAMP值返回后显示为'YYYY-MM-DD HH:MM:SS'格式的字符串,显示宽度固定为19个字符。

TIME
,时间。范围是'-838:59:59''838:59:59'MySQL'HH:MM:SS'格式显示TIME

YEAR[(2|4)]
,两位或四位格式的年。默认是四位格式。在四位格式中,允许的值是190121550000。在两位格式中,允许的值是7069,表示从1970年到2069年。MySQLYYYY 格式显示YEAR

3.
字符串类型:
1)字符串数据类型的列定义可以包括指定字符集的CHARACTER SET属性
c1 CHAR(20) CHARACTER SET utf8
2
)常见的字符串类型
CHAR,单个char表示CHAR(1)的同义词,字符长度为1
CHAR(M)
,固定长度字符串,当保存时在右侧填充空格以达到指定的长度。M表示列长度。M的范围是0255个字符。注释:当检索CHAR值时尾部空格被删除。
BINARY(M)
BINARY类型类似于CHAR类型,但保存二进制字节字符串而不是非二进制字符串。

 

VARCHAR(M),变长字符串。M 表示最大列长度。M的范围是065,535(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定。最大有效长度是65,532字节)。注释:MySQL 5.1遵从标准SQL规范,并且不删除VARCHAR值的尾部空格。

 

注意:MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定)。在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字 节,也就是说,在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以使用可变长的varchar来存放,这样就能有效的减少数据库文 件的大小。


VARBINARY(M)
VARBINARY类型类似于VARCHAR类型,但保存二进制字节字符串而不是非二进制字符串。但是 VARBINARY(M)中M的取值范围却不同0 <= M <= 255


TINYBLOB
,最大长度为255(28–1)字节的BLOB列。
BLOB[(M)]
,最大长度为65,535(216–1)字节的BLOB列。
MEDIUMBLOB

LONGBLOB

TINYTEXT
TEXT[(M)]
MEDIUMTEXT
LONGTEXT
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

ENUM('value1','value2',...),枚举类型。只能有一个值的字符串
SET('value1','value2',...)


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

 

关于列类型更详细信息参考:http://dev.mysql.com/doc/refman/5.1/zh/column-types.html

 

 

4.着重分析字符串类型:
1CHARVARCHAR类型的不同:
CHAR
为固定长度;VARCHAR为可变长度
2
BINARYVARBINARY类似于CHARVARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。
也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
3
BLOBTEXT类型
a. BLOB

二进制大对象,可以容纳可变数量的数据。

4BLOB类型:TINYBLOBBLOBMEDIUMBLOBLONGBLOB。它们只是可容纳值的最大长度不同。
BLOB
列被视为二进制字符串(字节字符串)
BLOB
列没有字符集,并且排序和比较基于列值字节的数值值。
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

b. TEXT:
4TEXT类型:TINYTEXTTEXTMEDIUMTEXTLONGTEXT。这些对应4BLOB类型,有相同的最大长度和存储需求.
TEXT
列被视为非二进制字符串(字符字符串)
TEXT
列有一个字符集,并且根据字符集的 校对规则对值进行排序和比较。

 

<!--[if !supportLists]-->·           <!--[endif]-->TEXTBLOB列的存储或检索过程中,不存在大小写转换。

<!--[if !supportLists]-->·           <!--[endif]-->在大多数方面,可以将BLOB列视为能够足够大的VARBINARY列。

<!--[if !supportLists]-->·           <!--[endif]-->可以将TEXT列视为VARCHAR列。

<!--[if !supportLists]-->·           <!--[endif]-->BLOBTEXT在以下几个方面不同于VARBINARYVARCHAR
1.
当保存或检索BLOBTEXT列的值时不删除尾部空格。(这与VARBINARYVARCHAR列相同)。
请注意比较时将用空格对TEXT进行扩充以适合比较的对象,正如CHARVARCHAR
2.
对于BLOBTEXT列的索引,必须指定索引前缀的长度。对于CHARVARCHAR,前缀长度是可选的。

 

VARCHARBLOBTEXT类是变长类型。每个类型的存储需求取决于列值的实际长度(用前面的表中的L表示),而不是该类型的最大可能的大小。

posted on 2007-11-17 18:15 努力的猪 阅读(593) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2007年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜