2. MySQL数据类型
Posted yvhqbat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2. MySQL数据类型相关的知识,希望对你有一定的参考价值。
选择正确的数据类型对于获得高性能至关重要。选择原则:
1. 更小的通常更好;
2. 简单就好;
3. 尽量避免NULL;
1. 整数类型
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, 分别使用8,16,24,32,64位存储空间。可以存储的值的范围从-2(N-1)到2(N-1)-1,其中N是存储空间的位数。
整数类型有可选的UNSIGNED属性,表示不允许负值,大致可以使正数的上限提高一倍。例如TINYINT,UNSIGNED可以存储的范围是0~255,而TINYINT的存储范围是-128~127。
有符号和无符号类型使用相同的存储空间,并具有相同的性能。
2. 实数类型
实数:带有小数部分的数字。
- FLOAT, DOUBLE类型支持标准的浮点运算进行近似计算。
- DECIMAL类型用于存储精确的小数,支持精确计算。也可以存储比BIGINT还大的整数。
3. 字符串类型
VARCHAR, CHAR是两种最主要的字符串类型。
VARCHAR类型:用于存储可变长字符串,是最常见的字符串数据类型,比定长类型更节省空间,因为它仅使用必要的空间(例如,越短的字符串使用越少的空间)。
VARCHAR需要使用1或2个额外字节记录字符串的长度,节省了存储空间所以对性能也有帮助。
使用VARCHAR(5)和VARCHAR(20)存储‘hello’的空间开销是一样的。CHAR类型:定长。根据定义的字符串长度分配足够的空间,适合存储很短的字符串,或者所有值都接近同一长度。
BLOB和TEXT类型:用于存储很大的数据而设计的字符串数据类型,分别采用二进制和字符方式存储。
数据类型家族:
字符类型:TINYTEXT, (SMALLTEXT, TEXT), MEDIUMTEXT, LONGTEXT;
二进制类型:TINYBLOB, (SMALLBLOB, BLOB), MEDIUMBLOB, LONGBLOB;使用枚举(ENUM)类型代替字符串类型
4. 日期和时间类型
mysql提供两种相似的日期类型:DATETIME和TIMESTAMP
DATETIME类型:保存大范围的值,从1001年到9999年,精度为秒,格式为YYYYMMDDHHMMSS的整数中,与时区无关,使用8个字节的存储空间。
默认情况下,MySQL以一种可排序的、无歧义的格式显示DATETIME值,如“2008-01-16 22:37:08”TIMESTAMP类型:保存从1970年1月1日午夜(格林尼治标准时间)以来的秒数,它和UNIX时间戳相同。只使用4个字节的存储空间,存储范围比DATETIME小得多。
FROM_UNIXTIME(), UNIX_TIMESTAMP()函数,使两者相互转换。
5. 位数据类型
MySQL有少数几种存储类型使用紧凑的位存储数据。不管底层存储格式和处理方式如何,从技术上说,都是字符串类型。
BIT类型
BIT列在一列中存储一个或多个true/false值,BIT(1)定义一个包含单个位的字段,BIT(2)存储2个位,最大长度是64个位。SET类型
SET类型:一系列打包的位的集合,保存很多true/false值,有效的利用了存储空间。
6. 特殊类型数据
IPv4地址—VARCHAR(15)
以上是关于2. MySQL数据类型的主要内容,如果未能解决你的问题,请参考以下文章