MySQL的数据类型及其选择建议

MySQL的数据类型及其选择建议

整数类型
整数类型字节最小值最大值
tinyint1有符号-128 无符号0有符号127 无符号255
smallint2有符号-32768 无符号0有符号32767 无符号 65535
mediumint3有符号-8388608 无符号0有符号8388607 无符号 1677215
int和integer4有符号-2147483648 无符号0有符号2147483647 无符号4294967295
bigint8有符号-9223372036854775808 无符号0有符号-9223372036854775807 无符号18446744073709551615

整数类型选择建议:

​ 看所存储的整数数据的取值范围

浮点数类型、定点数类型、位类型

浮点数类型
浮点数类型字节最小值最大值
float4±1.7549435E- 38±3.402823466E +38
double8±2.2250738585072014E -308±1.7976931348623157E +308

float和double的选择建议:判断要存储的小数数据需要精确的小数位数,当需要精确到小数点 后10位以上,就需要选择double类型

定点数类型
定点数类型字节最小值最大值
dec(M,D)和decimal(M,D)M+2与double相同与double相同

dec和decimal这两个定点数类型是同名词,该类型的取值范围与double类型相同,但其有效值的取值范围由M和D来决定。如果要存储小数数据精确度非常高,则可以选择dec或decimal类型,它们的精确度比double类型还要高。

位类型
位类型字节最小值最大值
bit(M)1~8bit(1)bit(64)

位类型bit的字节数是M,M的取值范围为1~8,即位类型bit类型的存储空间是根据其精确度决定的

日期和时间类型

日期和时间类型字节最小值最大值
date41000-01-019999-12-31
datetime81000-01-01 00:00:009999-12-3123:59:59
timestamp4197001010800012038年的某个时刻
time3-835:59:59838:59:59
year119012155

每种日期和时间数据类型都会有一个取值范围,如果插入的值超过了该类型的取值范围,则会插入默认值

各种日期和时间类型的应用场合如下:

表示年月日:一般会使用date类型

表示年月日时分秒:一般会使用datetime类型

经常插入或者更新日期为当前系统时间:一般会使用timestamp

表示时分秒:一般会使用time类型

表示年份:一般会使用year类型,因为该类型比date类型占用更少的空间

字符串类型(char系列、text系列、binary系列blob系列字符串类型)

char系列字符串类型
char系列字符串类型字节描述
char(M)MM为0~255之间的整数
varchar(M)MM为0~65535之间的整数

字符串类型char的字节数是M,例如char(20)的数据类型为char,最大长度为20个字节,varchar的长度是可变的,其长度范围为0~65535之间的整数

char和varchar的选择:

​ 需要判断所存储的字符串长度是否经常变化,如果经常变化则可以选择varchar,否则选择char

text系列字符串类型
text系列字符串类型字节描述
tinytext0~255值的长度为+2个字节
text0~65535值的长度为+2个字节
mediumtext0~167772150值的长度为+3个字节
longtext0~4294967295值的长度为+4个字节

text系列字符串类型选择建议:

​ 判断所存储字符串的长度,根据存储字符的长度来决定是选择允许长度最小的tinyint字符串类型,还是选择允许长度最大的longtext字符串类型

binary系列字符串类型
binary(M)字节描述
binary(M)M允许长度为0~M
varbinary(M)M允许长度为0~M

binary系列字符串类型非常重要:

​ 和char、varchar类型非常相似

​ binary、varbinary可以存储二进制数据(例如照片、音乐或者视频文件),也可以存储字符数据

​ char、varchar只能存储字符数据

binary和varbinary的选择建议:

​ 少量二进制数据,则可以选择binary和varbinary类型

​ 判断出所存储二进制数据长度是否经常变化,如果经常变化则选择varbinary类型,否则选择binary

blob系列字符串类型
BLOB系列字符串类型字节
tinyblob0~255
blob0~2^16
mediumblob0~2^24
longblob0~2^32

​ blob系列字符串类型和text系列字符串类型非常相似

​ blob系列字符串类型可以存储二进制数据(例如照片、音乐或者视频文件),也可以存储字符数据

​ text系列字符串类型只能存储字符数据

blob系列字符串类型的选择建议:

​ 看存储二进制数据的长度

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值