MySQL数据类型

可以被分为3类:

1.整型,数值类型

2.日期和时间类型

3.字符串(字符)类型

整型(INT)

数据类型

大小

M

(默认值)

范围(有符号)

范围(无符号)

用途

tinyint [(M)] [UNSIGNED] [ZEROFILL]

1字节

4

-128~127  (-27~27-1)

0 ~ 255 (0 ~ 28-1)

非常小整数值

smallint [(M)] [UNSIGNED] [ZEROFILL]

2字节

6

-32768~32767(-215 ~ 215-1)

0 ~ 65535 (0 ~ 216-1)

较小整数

mediumint [(M)] [UNSIGNED] [ZEROFILL]

3字节

9

-8388608 ~ 8388607 (-223 ~ 223-1)

0 ~ 16777215 (0 ~ 224-1)

中等大小整数

int [(M)] [UNSIGNED] [ZEROFILL]

4字节

11

-2147483648 ~ 2147483647(-231 ~ 231-1)

0 ~ 4294967295 (0 ~ 232-1)

标准整数

integer [(M)] [UNSIGNED] [ZEROFILL]

4字节

11

-2147483648 ~ 2147483647(-231 ~ 231-1)

0 ~ 4294967295 (0 ~ 232-1)

和int相同

bigint [(M)] [UNSIGNED] [ZEROFILL]

8字节

20

-9223372036854775808 ~9223372036854775807

(-263 ~ 263-1)

0 ~ 18446744073709551615

(0 ~ 264-1)

较大整数

注:取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。

方括号(“[”和“]”)指出可选的类型修饰符的部分

M :指出最大的显示尺寸。最大的合法的显示尺寸是 255 。 在MySQL中创建整型字段INT(或其它像tinyint)时,可以设定该字段的位数。如int(11),int(5),如果不指定位数,INT型默认长度为11。字段插入长度与int设定的M无关,当插入长度大于设定的M时,字段值不会被截断,还是按照类型的实际精度进行保存。

D :适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30,但是应该不大于M-2。

ZEROFILL:填零,即在数字长度不够的数据前面填充0,以达到设定的长度,MySQL中字段设置为该属性时,将为该列自动地增加UNSIGNED属性.整型字段有个ZEROFILL属性,在数字长度不够的数据前面填充0,以达到设定的长度。M值只当属性为ZEROFILL时,才有区别效果。如表结构为id1 int(10) ,id2 int(5),对应数据为  第一行为(1,1),第二行为(1111111,1111111),当id1,id2字段设置为ZEROFILL属性时,显示数据为第一行为(0000000001,00001),第二行为(0001111111,1111111),不够的位数会以0补齐。

UNSIGNED

为“无符号”的意思, 即为非负数。是MYSQL自定义的类型,非标准SQL。unsigned 属性只针对整型,用途:

1.UNSIGNED 可用来约束数据的范围,例如有些年龄这种值一般能是负数,那么就可以设置一个 UNSIGNED ,这样可以不允许负数插入。

2.可以增加数值范围(相当于把负数那部分加到正数上)。不过少用,不方便移植。

整型的每一种都分有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。

浮点型(float和double)

(M,D) 表示总共M位,D个小数位,D包含于M中。浮点类型不能是unsigned的。

对每种浮点类型,可指定一个最大的显示尺寸M和小数位数D。M的值应该取1到255。D的值可为0到30,但是不应大于M-2。M和D对float和double都是可选的,但对于decimal是必须的,在选项M和D时,如果省略了它们,则使用缺省值,如果D被省略,它被设置为0。如果M被省掉,它被设置为10。

mysql long类型数据长度 mysql数据类型及长度_数据

设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

decimal(m,d) 参数m<65 是总个数,d<30且 d

字符串(char,varchar,_text)

对于可变长的字符类型,其值所占的存储量是不同的,这取决于实际存放在列中的值的长度,这个长度用L表示。

mysql long类型数据长度 mysql数据类型及长度_字段_02

char和varchar

1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。

2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。

3.char类型的字符串检索速度要比varchar类型的快。

varchar和text

1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。

2.text类型不能有默认值。

3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

二进制数据

1._BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。

2._BLOB存储的数据只能整体读出。

3._TEXT可以指定字符集,_BLO不用指定字符集。

日期时间类型

MySQL 带有 5 个不同的数据类型可供选择。它们可以被分成简单的日期、时间类型,和混合日期、时间类型。根据要求的精度,子类型在每个分类型中都可以使用,并且 MySQL 带有内置功能可以把多样化的输入格式变为一个标准格式。

mysql long类型数据长度 mysql数据类型及长度_数据_03

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

定义一个字段 为创建时间/更新时间:

create tablet1(

idint primary keyauto_increment,

namevarchar(255),

create_timedatetime DEFAULT CURRENT_TIMESTAMP,

update_timedatetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);