MySQL使用了很多不同的数据类型,分解成三大类:数字,日期和时间,和字符串类型。
数字数据类型:
MySQL使用所有标准的ANSI SQL数值数据类型,所以如果与MySQL不同的数据库系统这些定义会看起来也熟悉。下面的列表显示了常见的数值数据类型和它们的说明。
INT - 一个正常大小可以有符号或无符号的整数。如果带符号的,允许的范围是-2147483648到2147483647。如果没有符号,允许的范围是从0到4294967295。可以指定一个宽度达11位数字。
TINYINT -一个非常小可以有符号或无符号的整数。如果带符号的,允许的范围是从-128到127。如果没有符号,允许的范围是从0到255。可以指定一个4位数字的宽度。
SMALLINT - 一个小可以有符号或无符号的整数。如果带符号的,允许的范围是从-32768到32767。如果没有符号,允许的范围是从0到65535。可以指定一个宽度为5位数字。
MEDIUMINT - 一个中等大小的,可以有符号或无符号的整数。如果带符号的,允许的范围是-8388608到8388607。如果没有符号,允许的范围是从0到16777215。可以指定一个宽度达9位数。
BIGINT - 一个大的,可以有符号或无符号的整数。如果带符号的,允许的范围是-9223372036854775808到9223372036854775807。如果没有符号,允许的范围是从0到18446744073709551615。可以指定一个宽度达11位数字。
FLOAT(M,D) - 一个浮点数字,不能是无符号的。可以定义的显示长度(M)和小数(D)的数量。这不是必需的,将默认为10,2,其中2为小数位数和10是总人数的数字(包括小数)。小数精度可以到24位的持股量。
DOUBLE(M,D) -双精度浮点数字,不能是无符号的。可以定义的显示长度(M)和小数(D)的数量。这不是必需的,将默认为16.4,其中4个是小数位数。十进位至53位的双精度可以去。 REAL是双的代名词。
DECIMAL(M,D) - 一个解包浮点数字,不能是无符号的。每个十进制在解压缩小数,对应一个字节。定义的显示长度(M)和小数点后的位数(D)是必需的。 NUMERIC是DECIMAL的代名词。
日期和时间类型:
MySQL的日期和时间数据类型有:
DATE - 日期格式YYYY-MM-DD,1000-1-1和9999-12-31之间。例如1973年12月30日将存储为1973-12-30日。
DATETIME - 日期和时间的组合YYYY-MM-DD HH:MM:SS格式,在1000-1-1 00:00:00和9999-12-31 23:59:59。例如,1973年12月30号15:30:00将存储为1973-12-30 15:30:00.。
TIMESTAMP-1970年1月1日午夜,在2037年的某个时候之间的时间戳。这看起来像之前的DATETIME格式,不带连字符之间的数字,1973年12月30日下午3:30将被存储为19731230153000(YYYYMMDDHHMMSS)。
TIME - 存储HH:MM:SS格式的时间。
YEAR(M) - 储存年在2位或4位数字格式。如果长度指定为2(例如年(2)),年份可在1970到2069(70到69)。如果长度指定为4,年份可在1901到2155。默认长度为4。
字符串类型:
虽然数字和日期类型有些相似,将存储的大部分数据将在字符串格式。下面列出了在MySQL中常用的字符串数据类型。
CHAR(M) - 一个固定长度的字符串的长度介于1到255个字符(例如CHAR(5)),向右填充到指定的长度与空间存储。定义的长度不是必需的,但默认值是1。
VARCHAR(M) - 可变长度的字符串的长度介于1到255个字符,例如VARCHAR(25)。当创建一个VARCHAR字段必须定义一个长度。
BLOB 或 TEXT - 字段的最大长度为65535个字符。 BLOB是二进制大对象“,是用来存储大量的二进制数据,如图像或其他类型的文件。字段定义为文本也持有大量的数据,两者之间的区别是存储的数据进行排序和比较是区分大小写的BLOB,并在文本字段不区分大小写。不指定BLOB或TEXT的长度。
TINYBLOB 或 TINYTEXT -一个BLOB或TEXT列,最大长度为255个字符。不能指定TINYBLOB或TINYTEXT长度。
MEDIUMBLOB 或 MEDIUMTEXT -一个BLOB或TEXT列,最大长度为16777215个字符。不能指定MEDIUMBLOB或MEDIUMTEXT的长度。
LONGBLOB 或 LONGTEXT -一个BLOB或TEXT列,最大长度为4294967295个字符。不能指定LONGBLOB或LONGTEXT的长度。
ENUM - 枚举,这是一种奇特的术语列表。当定义一个枚举,要创建一个列表项目的值必须被选中(或它可以是NULL)。例如,如果希望字段包含“A”或“B”或“C”,则ENUM定义为ENUM('A','B','C'),只有那些值(NULL)所能填充该字段。
上面可能写得看不清楚,下面补充一文章
1.整型(xxxint)
MySQL数据类型 | 含义 |
tinyint(m) | 1个字节表示(-128~127) |
smallint(m) | 2个字节表示(-32768~32767) |
mediumint(m) | 3个字节表示(-8388608~8388607) |
int(m) | 4个字节表示(-2147483648~2147483647) |
bigint(m) | 8个字节表示(+-9.22*10的18次方) |
MySQL数据类型 | 含义 |
float(m,d) | 单精度浮点型,8位精度(4字节),m是十进制数字的总个数,d是小数点后面的数字个数 |
double(m,d) | 双精度浮点型,16位精度(8字节) |
MySQL数据类型 | 含义 |
char(n) | 固定长度的字符串,最多255个字符 |
varchar(n) | 固定长度的字符串,最多65535个字符 |
tinytext | 可变长度字符串,最多255个字符 |
text | 可变长度字符串,最多65535个字符 |
mediumtext | 可变长度字符串,最多2的24次方-1个字符 |
longtext | 可变长度字符串,最多2的32次方-1个字符 |
MySQL数据类型 | 含义 | |
date | 日期'2008-12-2' | |
time | 时间'12:25:36' | |
datetime | 日期时间'2008-12-2 22:06:44' | |
timestamp | 不固定 |
MySQL关键字 | 含义 | |
NULL | 数据列可包含NULL值 | |
NOT NULL | 数据列不允许包含NULL值 | |
DEFAULT xxx | 默认值,如果插入记录的时候没有指定值,将取这个默认值 | |
PRIMARY KEY | 主键 | |
AUTO_INCREMENT | 递增,如果插入记录的时候没有指定值,则在上一条记录的值上加1,仅适用于整数类型 | |
UNSIGNED | 无符号 | |
CHARACTER SET name | 指定一个字符集 |