MySQL数据类型
数据类型-主要应用于列上
字符串类型:
最常用的数据类型,有两种基本的串类型:分别为定长串和不定长串。定长串结束长度固定的字符,其长度是创建表是指定的,不允许多于指定的字符数据,它们分配的存储空间与指定的一样多,CHAR属于定长串类型。变长串存储长度可变的文本,有些变长数据类型具有最大的定长,而有些则是完全变长的,不管哪种只有指定的数据得到保存(不会添加额外的空格保存),TEXT属于变长串类型。变长数据类型灵活,定长数据类型高效,Mysql处理定长数据类型比变长列快很多,Mysql不允许对变长列(或一个列的可变部分)进行索引,这会极大影响性能
char :1~255个字符的定长串,它的长度必须在创建时指定,否则MySQL假定为CHAR(1)
varchar:可变长度,最多不超过255字节,如在创建时指定VARCHAR(n),则可存储0~n个字符
text:最大长度为64K的变长文本
longtext:同text,最大长度为4GB(纯文本,一般不会到4G)
tinytext:同text,最大长度为255字节
meduimtext:同text,最大长度为16K
enum:接受最多64K个串组成的预定义集合的某个串 (多选1)
set:接受最多64K个串组成的预定义集合的零个或多个串(组合选)
数字类型:
存储数值,每种类型具有不同的存储范围,支持取值范围越大,所需存储空间越多。所有数值类型(除BIT和Boolean外)都可以有符号或无符号,有符号数据列可存储正或负的数值,默认情况为有符号
tinyint:有符号值:-128 到127(- 2^7 到2^7 – 1)
无符号值:0到255(0 到2^8 – 1)
smaliint:有符号值:-32768 到32767(- 2^15 到2^15 – 1)
无符号值:0到65535(0 到21 6 – 1)
mediumint:有符号值:-8388608 到8388607(- 2^23 到2^23 – 1 )
无符号值:0到16777215(0 到2^24 – 1)
int:有符号值:-2147683648 到2147683647(- 2^31 到2^31- 1)
无符号值:0到4294967295(0 到2^32 – 1)
bigint:有符号值:-9223372036854775808 到9223373036854775807(- 2^63到2^63-1)
无符号值:0到18446744073709551615(0到2^64 – 1)
float(m,d):单精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。
double(m,d):双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。
decimal(m,d):定点数。浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
参数m<65 是总个数,d<30且 d<m 是小数位。
日期时间类型
当插入值超出有效取值范围时,系统会报错,并将零值插入到数据库中。
date:日期 '2008-12-2' 取值范围1000-01-01——9999-12-31
time:时间 '12:25:36' 取值范围-838:59:59——838:59:59
datetime:日期时间 '2008-12-2 22:06:44' 取值范围1000-01-01 00:00:00——9999-12-31 23:59:59
timestamp:自动存储记录修改时间,若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。
二进制数据类型
二进制类型可存储任何数据,如文字、图像、多媒体等。
tityblob:最大长度为255字节
blob:最大长度为64KB
mediumblob:最大长度为16MB
longblob:最大长度为4GB