Mysql中的类型

1.1 整数类型

tinyint(8) ,smallint(16) , mediumint(24) , int(32) , bigint(64) ,存储范围从-2(n-1)次方到2(n-1)次方-1,其中n是存储的位数

整数unsigned表示正整数,不允许为负数取值范围为0-255,比有符号整数(-128-127)存储要大。

整数指定宽度,在大多应用中是没有意义的,不会限制范围,也就是说int(1)和int(20)在存储和计算上面是没有区别的。

1.2 实数类型

实数是带小数点的数字,float(4字节) ,double(8字节), decimal(指定),尽量只在小数进行精度计算的时候使用decimal,数据量比较大的时候可以使用bigint存储(将小数位放大后存储),decimal计算代价高的为题可以得到解决。

1.3 字符串类型

varchar(不定长), char(定长),varchar存储时需要使用1-2个额外字节存储长度(超过255需要2个字节),char定长不需要额外的字符记录长度,适合定长的字符串,不足的位用空串填充,对于定长字符串char比varcahr存储更效率。

在innodb引擎上面的,varchar和char存储字符串char会把后面的空格去掉。是否截取取决于数据库引擎,处理在服务层处理的。

类似的类型还有binary和varbinary,他们存储的是二进制字符串,二进制字符串存储的是字节码,不是字符。填充也不同,binary采用\0(零字节)填充。

binary和varbinary适用于存储二进制数据,并且字节码进行比较的时候,binary按每个字节比较,根据字节的数值比较,比字符串比较要快。

1.4 blob和text类型

分别分为2类:

字符串存储:tinytext, smalltext, text, mediumtext, longtext。

二进制存储:tinyblob, smallblob, blob, mediumblob, longblob。

innodb在blob和text值太大的时候回使用外部存储,每个值需要1-4个字节来存储指针。

1.5日期和时间类型

datetime:保存从1001-9999年的时间,精确到秒,与时区无关,整数方式存储,使用八个字节的存储空间,格式YYYYMMDDHHMMSS。

timestamp:保存从1970.1.1午夜-2038年(格林威治时间),使用4个字节存储空间,存储的值为0是与格林威治时间相差五个小时。推荐使用timestamp效率高。

存储毫秒级别的日期可以使用bigint或者double存储。

1.6位数据类型

bit: 最大存储位64位,因引擎而异,MyISAM 会打包bit列,没有null的情况下17位只需要3位存储,mysql将其作为字符串存储,检索bit(1)的值时结果是二级制的1和0,。

set: 用于保存多个值,在MySQL中使用一系列打包的位的集合表示,有效的利用了存储空间,缺点在于改变列的代价较高。

 

 

1.7 选择标志符(identfier)

整数类型:整数类型是最好的选择,并且可以自增,enum和set是最坏的选择。

字符串类型:应该避免使用该类型,因为他对空间消耗比较大,并且查询速度比数字慢。

1.8特殊类型数据

ipv4地址实际上是32位无符号的整数,不是字符串,所有推荐使用无符号整数存储

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值