每一个常量、变量和参数都有数据类型,它用来指定一定的存储格式、约束和有效范围

MySQL提供了多种数据类型,主要包括数值类型(整数和浮点数)、字符串类型、日期和时间类型


整数类型:bit、bool、tinyint、smallint、mediumint、 int、bitint

浮点数类型:Float、Double、Decimal

字符串类型:Char、VarChar、Tiny Text、Text、Medium Text、Long Text、Tiny Blob、Blob、Medium Blob、Long Blob

日期类型:Date、DateTime、TimeStamp、Time、Year

其他数据类型:Binary、VarBinary、Enum、Set、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等


一、数据类型和长度

MySQL的数值类型
整数类型
字节最小值最大值
tinyint10255
smallint
2无符号0,有符号-3276865535(2^16-1),有符号32767(2^15-1
mediumint3无符号0,有符号-2^23,无符号2^24-1,有符号2^23-1
int、integer
4无符号0,有符号-2^31-1无符号2^32-1,有符号2^31-1
bitint8无符号0,有符号-2^63无符号2^64-1,有符号2^63 -1
Bit1无符号0,,有符号-128无符号255,有符号127
Bool1无符号0,,有符号-128无符号255,有符号127
Float(M,D)4如果D<=24则为默认的FLOAT,如果D>24则会自动被转换为DOUBLE型
Double(M,D)8

Decimal(M,D)M+1或M+2

Date3以YYYY-MM-DD的格式显示,比如:2009-07-19
Date Time8以YYYY-MM-DD HH:MM:SS的格式显示,比如:2009-07-19 11:22:30
TimeStamp4以YYYY-MM-DD的格式显示,比如:2009-07-19
Time3以HH:MM:SS的格式显示。比如:11:22:30
Year1以YYYY的格式显示。比如:2009
Char(M)


VarChar(M)


Binary(M)


VarBinary(M)


Tiny TextMax:255

TextMax:64K

Medium TextMax:16M

Long TextMax:4G

TinyBlobMax:255

BlobMax:64K

MediumBlobMax:16M

LongBlobMax:4G

Enum1或2最大可达65535个不同的枚举值
Set可达8最大可达64个不同的值
说明:



二、数据类型选择原则


1、在指定数据类型的时候一般是采用从小原则,这样会对MYSQL在运行效率上提高很大,尤其是数据量大的情况下


2、表的设计要结合业务,要考虑业务会有哪些查询需求,或者统计需求,让业务的查询尽量只通过查询一个表就能满足需求,而不要关联多个表才能得到结果,单表查询的效率要高于多表关联查询的效率


3、数据表和字段的命名最好能见名知意,每个字段和表都要有注释,这样方便DBA后期的维护


4、数据库的设计要留有可扩展性,要考虑到后期业务的发展