当前位置:   article > 正文

mysql 常见的数据类型以及适用场景_binvar是什么数据类型

binvar是什么数据类型

选择原则

为了更好的提高系统性能,选择合适的数据类型非常重要,以下几个简单的原则有助于你更好的做出选择:

1、更小通常是最好的:越小,占用cpu、磁盘和内存越少

2、尽量简单:简单的数据类型可以减少cpu开销

3、尽量避免null:包含null值的列在sql语句中通常很难优化




数据类型


整数类型

数据类型占用存储空间范围
tinyint8位-128~127
smallint16位-32 768,32 767
mediumint24位-8388608~8388607
int32位-2147483648~2147483647
bigint64位±9.22*10的18次方

注意:
1、整数类型有个 UNSIGED 属性,表示不允许你负值,这大致可以让数据类型的上限提高一倍。
2、很多情况下,对于 int(1)和 int(20),只是限制了显示字符的个数,对于存储和计算是相同的


实数类型

什么是实数?
就是带有小数点的数字。


float(M,N):4个字节存储,8位精度

double(M,N):8个字节存储,16位精度

M:总长度
N:小数位数


decimal

不仅可以存带有小数点的数据,也可以存储比 bigint 还大的数据

decimal(M,D)
// M: 数字的最大长度 (5.0 以后,最大上限位 65 ; 之前是 254 位)
// D: 小数位数 (D < M , D < 30)
  • 1
  • 2
  • 3

注意:
cpu不支持对decimal的直接计算,所以decimal只是一种存储格式,在计算的时候,还是会转换为double类型



字符串类型

1、varchar

特点:
1、存储可变长字符串
2、设置: ROW_FORMAT = FIXED ,会变成每一行都定长存储,浪费空间
3、需要额外的 1 到 2 个字节存储字符串长度

适用的列:很少去更新的那种


2、char

会自动剔除字符串末尾的空格(在4.1版本之前,varchar也是这么实现的,那个时候,它们只有存储格式不一样)

适合的列 :
1、很短的字符串
2、所有值长度都近似

选择方法按存储引擎分类:

MyISAM:MyISAM数据表,最好使用固定长度(char)的数据列代替可变长度(varchar)的数据列。
MEMORY:MEMORY数据表目前都使用固定长度的数据行存储,因此无论使用char或varchar列都没有关系。两者都是作为char类型处理的。

InnoDB:建议使用 varchar类型

char 和 varchar 保存和检索方式是不同,最大长度和是否尾部空格被保留等方面也不同,以下图为例:
在这里插入图片描述



3、binary 和 varbinvar:存储二进制字符串 (binary 使用 \0 来填充)


4、text :存储数据量非常大的字符串

和varchar的对比:
1、不能有默认值
2、必须创建前缀索引
3、不能像 varcha(n) 一样设置 n


5、blob :存储数据量非常大的二进制字符串

和text对比:
1、存储方式不同:text 存储文本,区分大小写,blob 二级制方式存储,不区分大小写
2、blob 只能整体读出
3、text 可以指定字符集,blob 不能



日期时间类型


datetime

1、范围:1001 ~ 9999,精度位秒,与时区无关,8字节存储
2、格式:YYYYMMDDHHMMSS


timestamp

1、范围: 1970.01.01 ~ 2038.12.31
2、与时区有关
3、此类型默认位 not null 类型,如果你插入的时候,没有填写时间,默认位当前时间

综合对比:
1、通常情况下,使用 timestamp ,它对达特time空间效率更高
2、但是 timestamp 的行为比较复杂,你在选用这个数据类型的时候,需要验证以下它的行为是否符合你的需要



位数据类型


bit

1、用来存储一个或者多个 true / false
2、最大长度 64 位
3、在mysql,它被作为字符串类型存储




巨人的肩膀

1、《高性能 MySQL》 图书
2、MYSQL中数据类型介绍




简单总结,如有不足,欢迎指出交流,如果感觉不错,欢迎点赞评论支持!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/667853
推荐阅读
相关标签
  

闽ICP备14008679号