MySQL数据表的数据类型总结与选择

一、MySQL中的数据类型

1)整数类型:

TINYINTT,SMALLINT,MEDIUMINT,INT,BIGINT。分别使用8,16,24,32,64位存储空间。它们可以存储的值得范围从-2的(N-1)次方到2的(N-1)次方-1,其中N是存储空间的位数。

注:mysql可以为整数类型指定宽度,例如INT(11),对大多数应用这是没有意义的,它不会显示值的合法范围,只是规定了mysql的一些交互工具(如命令行客户端)用来显示字符的个数。对于存储于计算来说,INT(1)和INT(20)是相同的。

2)实数类型:

实数是带有小数部分的数字。然而,它们不只是为了存储小数部分;也可以使用DECIMAL存储比BIGINT还大的整数。

MySQL既支持精确类型(DECIMAL),也支持不精确类型(FLOAT和DOUBLE)。浮点类型在存储同样范围的值时,通常比DECIMAL使用更少的空间,FLOAT使用四个字节存储,DOUBLE使用8个字节存储。

3)字符串类型:

VARCHAR类型用于存储可变长度的字符串,是最常见的字符串数据类型。它一般比定长类型更节省空间,因为它仅使用必要的空间。

CHAR:定长字符串

BINARY:存储二进制字符串,二进制字符串跟常规字符串非常类似,但是二进制字符串存储的是字节码而不是字符,填充也不一样:mysql填充BINARY采用的是\0而不是空格,在检索时也不会去掉填充值。

4)BLOB和TEXT类型:

BLOB和TEXT都是为存储很大的数据而设计的字符串数据类型,分别采用二进制和字符方式存储。

5)枚举类型:

枚举列可以把一些不重复的字符串存储成一个预定义的集合。枚举字段是按照内部存储的整数而不是定义的字符串进行排序的。枚举列表最不好的地方是字符串是固定的,添加或删除字符串必须使用ALTER TABLE。

6)日期和时间类型:

mysql能存储的最小时间粒度为秒。DATETIME保存的时间范围为1001年到9999年,精度为秒常用的格式如下"2008-12-01 12:00:22";TIMESTAMP只使用4个字节的存储,因此它的范围比DATETIME小的多,只能表示从1970年到2038年。通常尽量使用TIMESTAMPS

二、数据类型选取的原则

MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。以下是选择数据类型的基本原则:

1)更小的通常更好:

一般情况下,应该尽量使用可以正确存储数据的最小数据类型。更小的数据类型通常更快。因为他们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。

2)尽量避免NULL:

通常情况下最好指定列为NOT NULL,除非真的需要存储NULL值。因为对于查询中包含可以NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引索引统计和值比较都更复杂,可为NULL的列会使用更多的存储空间,在MySQL中也需要特殊处理。

 

你可能感兴趣的:(数据库)