开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 16 天,点击查看活动详情
整数类型
场景:
用于存储数量、身高、年龄、重量等整数值信息。
提供的具体类型
| 类型 | 占用字节数 | 无符号数取值范围 | 有符号取值范围 |
|---|---|---|---|
| TINYINT | 1 | 0 ~ 2⁸-1 | -2⁷ ~ 2⁷-1 |
| 具体数值 | 0~255 | -128~127 | |
| SMALLINT | 2 | 0 ~ 2¹⁶-1 | -2¹⁵ ~ 2¹⁵-1 |
| 具体数值 | 0~65535 | -32768~32767 | |
| MEDIUMINT | 3 | 0 ~ 2²⁴-1 | -2²³ ~ 2²³-1 |
| 具体数值 | 0~16777215 | -8388608~8388607 | |
| INT | 4 | 0 ~ 2³²-1 | -2³¹ ~ 2³¹-1 |
| 具体数值 | 0~4294967295 | -2147483648~2147483647 | |
| BIGINT | 8 | 0 ~ 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 列。
场景:
用于存储小数等不需要精确计算的数值,例如例如科学计算、温度、压力、速度、加速度、重量等。
提供的具体类型:
| 类型 | 占用字节数 | 绝对值最大(非零) | 绝对值最小(非零) |
|---|---|---|---|
| Float | 4 | ±3.4028235 × 10^38 | ±1.1754944 × 10^-38 |
| Double | 8 | ±1.7976931348623157 × 10^308 | ±2.2250738585072014 × 10^-308 |
Float绝对值最大展开:340282350000000000000000000000000000000
FLoat绝对值最小展开:0.00000000000000000000000000000000000011754944
Double绝对值最大展开:1797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586327668781715404589535143824642343213268894641827684675467035375169860499105765512820762454900903893289440758685084551339423045831413225477620510555482796892589235414297524904282583698167726409610974245201280368537100823138010487701864904605140189450977334754707465792750113994923221778627742799237998742375787906780596719879856458795787664268153197644681282683180407898902009992465443033319680448500646615805021691833723680490482811994525801271781899857982791802780777256043885417772925580855910455683148011436800
Double绝对值最小展开:0.000000000000000000000000000000000000000000000000000000000000000022250738585072014
精确数值类型
场景:
用于需要高精度计算或者需要精确表示的数值,例如财务数据、货币金额、税率、百分比等。
提供的具体类型:
| 类型 | 占用字节数 | 无符号数取值范围 | 有符号取值范围 |
|---|---|---|---|
| DECIMAL | ceil(m/9)*4 |
字符串类型
场景:
用于存储文本数据,适用于存储名称、描述、地址等文本信息。
提供的具体类型:
| 类型 | 占用字节数 | 无符号数取值范围 | 有符号取值范围 |
|---|---|---|---|
| CHAR | |||
| VARCHAR |
- 字符串型(CHAR,VARCHAR):用于存储文本数据,适用于存储名称、描述、地址等文本信息。
时间类型
场景:
用于存储时间和日期,例如生日、入学日期等。
提供的具体类型:
布尔类型
场景:
用于存储布尔值,适用于存储逻辑真假值。
提供的具体类型:
枚举类型
场景:
用于存储预定义的可选项,适用于存储一组固定的选项,例如性别、颜色、状态等。