TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT;text,longtext,mediumtext,ENUM,SET等字段类型区别

http://www.path8.net/tn/archives/951

MySQL支持大气底列类型,它可以吃分成3类:数字型、日期以及时档次及字符串(字符)类型。本节首先被出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个接近中之种性质的再次详细的叙述。概述有意简化,更详尽的证实该考虑到关于特定列类型的增大信,例如你可知也那指定值的允许格式。

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

M
指出最老的来得尺寸。最深之法定的示尺寸是 255 。
D
适用于浮点类型又指出从在十进制小数点后底多少的多寡。最可怜或的价值是30,但是当无浮M-2。
方括号(“[”和“]”)指出可选的档次修饰符的有的。

留意,如果您指定一个了呢ZEROFILL,MySQL将为该列自动地充实UNSIGNED属性。

TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一个百般有些的整数。有号的克是-128到127,无符号的界定是0交255。

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
一个小平头。有标志的限量是-32768到32767,无符号的限定是0暨65535。

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
一个中大小整数。有标志的克是-8388608交8388607,无符号的界定是0交16777215。

INT[(M)] [UNSIGNED] [ZEROFILL]
一个健康尺寸整数。有号子的限定是-2147483648到2147483647,无符号的范围是0暨4294967295。

INTEGER[(M)] [UNSIGNED] [ZEROFILL]
旋即是INT的一个同义词。

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

一个大整数。有标志的界定是-9223372036854775808交9223372036854775807,无符号的限制是0到

18446744073709551615。注意,所有算术运算用有号的BIGINT或DOUBLE值完成,因此若莫该以过量9223372036854775807(63各项)的发生号子大整数,除了各类函数!注意,当半个参数是INTEGER值时,-、+和*用祭BIGINT运算!这象征要您就2个大整数(或缘于于返回整数的函数),如果结果超过9223372036854775807,你可以落意外的结果。一个浮点数字,不可知是无符号的,对一个单精度浮点数,其精度可以是<=24,对一个双双精度浮点数,是当25
和53中间,这些类别如FLOAT和DOUBLE类型马上以下面描述。FLOAT(X)有照应的FLOAT和DOUBLE相同之克,但是来得尺寸和小数位数是免定义的。在MySQL3.23饱受,这是一个审的浮点值。在再度早的MySQL版本中,FLOAT(precision)总是发出2位小数。该句法为了ODBC兼容性而提供。

FLOAT[(M,D)] [ZEROFILL]
一个多少(单精密)浮点数字。不可知无标志。允许的价值是-3.402823466E+38及-1.175494351E-38,0
和1.175494351E-38及3.402823466E+38。M是显示涨幅而D是小数的位数。没有参数的FLOAT或出<24
的一个参数表示一个单精密浮点数字。

DOUBLE[(M,D)] [ZEROFILL]
一个正规尺寸(双精美)浮点数字。不能够不管标志。允许的价是-1.7976931348623157E+308顶-2.2250738585072014E-308、
0和2.2250738585072014E-308届1.7976931348623157E+308。M是显示涨幅而D是小数位数。没有一个参数的DOUBLE或FLOAT(X)(25
< = X < = 53)代表一个夹娇小玲珑浮点数字。

DOUBLE PRECISION[(M,D)] [ZEROFILL]

REAL[(M,D)] [ZEROFILL]
这些是DOUBLE同义词。

DECIMAL[(M[,D])] [ZEROFILL]
一个请勿减(unpack)的浮点数字。不能够不管标志。行为像一个CHAR列:“未减”意味着数字作为一个字符串被积存,值的每一样号使用一个字符。小数接触,并且对负数,“-”符号不在M中计算。如果D是0,值将从未小数点或小数部分。DECIMAL值的极致充分范围以及DOUBLE相同,但是本着一个加以的DECIMAL列,实际的范围可透过M和D的选择于界定。如果D被概括,它为装为0。如果M被省掉,它吃安装为10。注意,在MySQL3.22里,M参数包括符号和小数点。

NUMERIC(M,D) [ZEROFILL]
即时是DECIMAL的一个同义词。

DATE
一个日子。支持的克是’1000-01-01’到’9999-12-31’。MySQL以’YYYY-MM-DD’格式来显示DATE值,但是允许而以字符串或数字将值赋给DATE列。

DATETIME
一个日期与时空成。支持之克是’1000-01-01 00:00:00’到’9999-12-31
23:59:59’。MySQL以’YYYY-MM-DD
HH:MM:SS’格式来显示DATETIME值,但是允许而采取字符串或数字将值赋给DATETIME的排列。

TIMESTAMP[(M)]
一个时空戳记。范围是’1970-01-01
00:00:00’到2037年之某时。MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式来显示TIMESTAMP值,取决于是否M是14(或简捷)、12、8要么6,但是允许你下字符串或数字将值赋给TIMESTAMP列。一个TIMESTAMP列对于记录一个INSERT或UPDATE操作的日子以及日是可行之,因为若你免友善吃她赋值,它自动地于装置为近年来操作的日期及岁月。你坐可经过给予给它一个NULL值设置它为当下之日子与时空。
TIME
一个日子。范围是’-838:59:59’到’838:59:59’。MySQL以’HH:MM:SS’格式来展示TIME值,但是允许你用字符串或数字将值赋给TIME列。

YEAR[(2|4)]
一个2要4各类数字格式的年(缺省凡4各项)。允许的值是1901至2155,和0000(4个年格式),如果您下2位,1970-2069(
70-69)。MySQL以YYYY格式来显示YEAR值,但是允许而将利用字符串或数字值赋给YEAR列。(YEAR类型在MySQL3.22着凡新类型。)

CHAR(M) [BINARY]
一个定长字符串,当存储时,总是是因此空格填满右边到指定的尺寸。M的克是1

255个字符。当值被寻找时,空格尾部被剔除。CHAR值根据缺省字符集以大小写不区分的不二法门排序和比较,除非叫出BINARY关键词。NATIONAL
CHAR(短形式NCHAR)是ANSI
SQL的方法来定义CHAR列应该利用短省字符集。这是MySQL的缺省。CHAR是CHARACTER的一个缩写。

[NATIONAL] VARCHAR(M) [BINARY]
一个变长字符串。注意:当值被积存时,尾部底空格被剔除(这两样于ANSI
SQL规范)。M的界定是1 ~ 255只字符。
VARCHAR值根据缺省字符集以大小写不分的措施排序和于,除非叫出BINARY关键词值。
VARCHAR是CHARACTER VARYING一个缩写。

TINYBLOB

TINYTEXT
一个BLOB或TEXT列,最深长为255(2^8-1)个字符。
BLOB

TEXT
一个BLOB或TEXT列,最充分长为65535(2^16-1)个字符。

MEDIUMBLOB

MEDIUMTEXT
一个BLOB或TEXT列,最可怜长也16777215(2^24-1)个字符。
LONGBLOB

LONGTEXT
一个BLOB或TEXT列,最酷尺寸也4294967295(2^32-1)个字符。

ENUM(‘value1′,’value2′,…)
枚举。一个单纯发生一个价的字符串对象,这个值式选自与值列表’value1’、’value2’,
…,或NULL。一个ENUM最多会生出65535见仁见智之值。

SET(‘value1′,’value2′,…)
一个聚。能闹零个或多只价的一个字符串对象,其中各一个须从值列表’value1’,
‘value2’, …选出。一个SET最多克发64单成员。

网站地图xml地图