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

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的数值类型
整数类型
字节 最小值 最大值
tinyint 1 0 255
smallint
2 无符号0,有符号-32768 65535(2^16-1),有符号32767(2^15-1
mediumint 3 无符号0,有符号-2^23, 无符号2^24-1,有符号2^23-1
int、integer
4 无符号0,有符号-2^31-1 无符号2^32-1,有符号2^31-1
bitint 8 无符号0,有符号-2^63 无符号2^64-1,有符号2^63 -1
Bit 1 无符号0,,有符号-128 无符号255,有符号127
Bool 1 无符号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

Date 3 以YYYY-MM-DD的格式显示,比如:2009-07-19
Date Time 8 以YYYY-MM-DD HH:MM:SS的格式显示,比如:2009-07-19 11:22:30
TimeStamp 4 以YYYY-MM-DD的格式显示,比如:2009-07-19
Time 3 以HH:MM:SS的格式显示。比如:11:22:30
Year 1 以YYYY的格式显示。比如:2009
Char(M)


VarChar(M)


Binary(M)


VarBinary(M)


Tiny Text Max:255

Text Max:64K

Medium Text Max:16M

Long Text Max:4G

TinyBlob Max:255

Blob Max:64K

MediumBlob Max:16M

LongBlob Max:4G

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



二、数据类型选择原则


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


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


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


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