mysql中数据类型的选择
在前期数据量不大的时候一般也不用考虑哪个字段用什么数据类型,但是等数据量大的时候就得考虑数据库的优化啦,这个时候就得严格什么样的数据用什么样的数据类型才能提高效率下面整理下各种数据类型的使用选择
数据类型和范围
数字类型
Tinyint
有符号-128-127
无符号 0-255 的整型数据。
存储大小为 1 字节。
SmallInt
有符号 -2^15 (-32,768) 到 2^15 - 1 (32,767)
无符号 0到65535
存储大小为 2 个字节。
Mediumint
有符号的范围是-8388608到8388607,
无符号的范围是0到16777215。
一位大小为3个字节
Int/integer
有符号从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647)
无符号0到4294967295
存储大小为 4 个字节。
Bingint
有符号从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807)
无符号0 到18446744073709551615
存储大小为 8 个字节。
字符类型
CHAR(M) [BINARY] 或 NCHAR(M) [BINARY]
M的范围为1 - 255(中/英字符的个数),如果没有BINARY项,则不分大小写,NCHAR表示使用缺省的字符集.在数据库中以空格补足,但在取出来时末尾的空格将自动去掉.
速度快,为定长存储,不管数据多少都按设定的一保存,会处理尾部空格
[NATIONAL] VARCHAR(M) [BINARY]
M的范围为1 - 255(中/英字符的个数).在数据库中末尾的空格将自动去掉.
速度比char慢,为变长保存,数据有多少就占多少的空间
TINYBLOB 或 TINYTEXT
255(2^8-1)个字符
BLOB 或 TEXT
65535(2^16-1)个字符
MEDIUMBLOB 或 MEDIUMTEXT
16777215 (2^24-1)个字符
LONGBLOB 或 LONGTEXT
4294967295 (2^32-1)个字符
日期类型
date
1000-01-01 到 9999-12-31
datetime
1000-01-01 00:00:00 到 9999-12-31 23:59:59
timestamp
1970-01-01 00:00:00 到 2037-12-31 23:59:59
time
-838:59:59 到 838:59:59
year(2/4)
缺省为4位格式,4位格式取值范围为1901 - 2155,0000,2位格式取值范围为70-69(1970-2069)
数据类型选择
一个数据可以用多种类型来存储时要先考虑 数字类型 > 日期或二进制类型 >字符类型。对于相同级别的数据类型,应该优先选择占用空间小的数据类型
比如一个存储年月日的字段数据 19900101 可以用数据类型也可以用字符类型