Mysql碎片整理:数据类型

121 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 16 天,点击查看活动详情

整数类型

场景:

用于存储数量、身高、年龄、重量等整数值信息。

提供的具体类型

类型占用字节数无符号数取值范围有符号取值范围
TINYINT10 ~ 2⁸-1-2⁷ ~ 2⁷-1
具体数值0~255-128~127
SMALLINT20 ~ 2¹⁶-1-2¹⁵ ~ 2¹⁵-1
具体数值0~65535-32768~32767
MEDIUMINT30 ~ 2²⁴-1-2²³ ~ 2²³-1
具体数值0~16777215-8388608~8388607
INT40 ~ 2³²-1-2³¹ ~ 2³¹-1
具体数值0~4294967295-2147483648~2147483647
BIGINT80 ~ 2⁶⁴-1-2⁶³ ~ 2⁶³-1
具体数值0~18446744073709551615-9223372036854775808~9223372036854775807

不同的类型占用的字节数是不一样的,所以合适的类型可以帮助减少空间资源的消耗问题,也可以提升一定的性能。取值范围是由类型所占位数决定的,例如:TINYINT类型占用 8 位,因此有符号的范围为2⁷ ~ 2⁷-1,无符号的范围为0 ~ 2⁸-1

浮点类型

存在精度丢失,不要存储和货币计算或者需要精确计算的数值。

注意:在官网中标明了MySQL :: MySQL 8.0 Reference Manual :: 11.1.4 Floating-Point Types (Approximate Value) - FLOAT, DOUBLE,我们常用的那种float(m,d)这种声明方法将在未来会标注为过时,而应该直接使用float(p)的方式去定义,这里的p只是作为一个区间,用于确定存储大小。0 到 23 位精度会导致使用 4 个字节存储单精度 FLOAT 列。24 到 53 位精度会导致使用 8 个字节存储双精度 DOUBLE 列。

image.png

场景:

用于存储小数等不需要精确计算的数值,例如例如科学计算、温度、压力、速度、加速度、重量等。

提供的具体类型:

类型占用字节数绝对值最大(非零)绝对值最小(非零)
Float4±3.4028235 × 10^38±1.1754944 × 10^-38
Double8±1.7976931348623157 × 10^308±2.2250738585072014 × 10^-308

Float绝对值最大展开:340282350000000000000000000000000000000

FLoat绝对值最小展开:0.00000000000000000000000000000000000011754944

Double绝对值最大展开:1797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586327668781715404589535143824642343213268894641827684675467035375169860499105765512820762454900903893289440758685084551339423045831413225477620510555482796892589235414297524904282583698167726409610974245201280368537100823138010487701864904605140189450977334754707465792750113994923221778627742799237998742375787906780596719879856458795787664268153197644681282683180407898902009992465443033319680448500646615805021691833723680490482811994525801271781899857982791802780777256043885417772925580855910455683148011436800

Double绝对值最小展开:0.000000000000000000000000000000000000000000000000000000000000000022250738585072014

精确数值类型

场景:

用于需要高精度计算或者需要精确表示的数值,例如财务数据、货币金额、税率、百分比等。

提供的具体类型:

类型占用字节数无符号数取值范围有符号取值范围
DECIMALceil(m/9)*4

字符串类型

场景:

用于存储文本数据,适用于存储名称、描述、地址等文本信息。

提供的具体类型:

类型占用字节数无符号数取值范围有符号取值范围
CHAR
VARCHAR
  1. 字符串型(CHAR,VARCHAR):用于存储文本数据,适用于存储名称、描述、地址等文本信息。

时间类型

场景:

用于存储时间和日期,例如生日、入学日期等。

提供的具体类型:

布尔类型

场景:

用于存储布尔值,适用于存储逻辑真假值。

提供的具体类型:

枚举类型

场景:

用于存储预定义的可选项,适用于存储一组固定的选项,例如性别、颜色、状态等。

集合类型

场景:

提供的具体类型: