MySQL数据类型

数值类型

|-----------------------|--------|-------|---|---|---|---|
| 类型 | 说明 | 范围/特点 | | | | |
| **TINYINT** | 小整数 | -128 ~ 127(有符号),0 ~ 255(无符号) |||||
| **SMALLINT** | 较小整数 | -32768 ~ 32767 || | | |
| **MEDIUMINT** | 中等整数 | -8388608 ~ 8388607 ||| | |
| **INT / INTEGER** | 标准整数 | -2147483648 ~ 2147483647 ||| | |
| **BIGINT** | 大整数 | -9223372036854775808 ~ 9223372036854775807 |||||
| **FLOAT** | 单精度浮点数 | 约 7 位有效数字 || | | |
| **DOUBLE** | 双精度浮点数 | 约 15 位有效数字 || | | |
| **DECIMAL(M,D)** | 定点数 | 精确小数,M 总位数,D 小数位 |||| |

tinyint

在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。

可以通过UNSIGNED来说明某个字段是无符号的

BIT类型

bit(M) : 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。

MySQL中BIT类型默认以二进制存储,查询时会用十六进制形式显示,0x02就代表十进制的2。

小数类型

float

float(m, d) unsigned : M指定显示长度,d指定小数位数,占用空间4个字节。

如果超出(4,2)范围,可能不能插入,也有的按照四舍五入的显示数据,不指明类型就是有符号

如果定义的是float(4,2) unsigned 这时,因为把它指定为无符号的数,范围是 0 ~ 99.99

无符号不能插入负数;

decimal

decimal(m, d) unsigned : 定点数m指定长度,d表示小数点的位数。

decimal(5,2) 表示的范围是 -999.99 ~ 999.99

decimal(5,2) unsigned 表示的范围 0 ~ 999.99

decimal和float很像,但是有区别: float和decimal表示的精度不一样。

float表示的精度大约是7位。

decimal整数最大位数m为65。支持小数最大位数d是30。

如果d被省略,默认为0.如果m被省略, 默认是10。

建议:如果希望小数的精度高,推荐使用decimal。

字符串类型

|--------------------|---------|--------|---|---|
| 类型 | 说明 | 最大长度 | | |
| **CHAR(M)** | 定长字符串 | 255 字符 | | |
| **VARCHAR(M)** | 变长字符串 | 65535 字节(受行大小限制) |||
| **TINYTEXT** | 小文本 | 255 字节 | | |
| **TEXT** | 普通文本 | 65535 字节 || |
| **MEDIUMTEXT** | 中等文本 | 16MB | | |
| **LONGTEXT** | 长文本 | 4GB | | |
| **TINYBLOB** | 小二进制数据 | 255 字节 | | |
| **BLOB** | 普通二进制数据 | 65535 字节 || |
| **MEDIUMBLOB** | 中等二进制数据 | 16MB | | |
| **LONGBLOB** | 长二进制数据 | 4GB | | |
| **ENUM** | 枚举 | 最多 65535 个值 || |
| **SET** | 集合 | 最多 64 个成员 || |

char和varchar

char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过2个, 最多只能是255

关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:

varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字 节数是65532。

当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844因为utf中,一个字符占 用3个字节

如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符 占用2字节)。

日期和时间类型

|-------------------|------|-------------------------|----|---|---|---|---|---|
| 类型 | 说明 | 格式 | 范围 | | | | | |
| **DATE** | 日期 | `YYYY-MM-DD` | '1000-01-01' ~ '9999-12-31' ||| | | |
| **TIME** | 时间 | `HH:MM:SS` | '-838:59:59' ~ '838:59:59' ||| | | |
| **DATETIME** | 日期时间 | `YYYY-MM-DD HH:MM:SS` | '1000-01-01 00:00:00' ~ '9999-12-31 23:59:59' ||||| |
| **TIMESTAMP** | 时间戳 | `YYYY-MM-DD HH:MM:SS` | '1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC ||||||
| **YEAR** | 年份 | `YYYY` | 1901 ~ 2155 || | | | |

enum和set

enum 枚举 单选类型

enum(选项1,选项2,选项3)

该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考 虑,这些值实际存储的是"数字",因为这些选项的每个选项值依次对应如下数字:1,2,3,....最多65535 个;当我们添加枚举值时,也可以添加对应的数字编号.

set 集合 多选类型

set('选项值1','选项值2','选项值3', ...)

该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率 考虑,这些值实际存储的是"数字",因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,.... 最多64个。

集合查询使用find_ in_ set函数:

find_in_set(sub,str_list) :如果 str_list 用逗号分隔的字符串。

sub 在 str_list 中,则返回下标;如果不在,返回0;

相关推荐
睡不醒男孩0308235 小时前
第二篇:深入探索开源数据库高可用:构建基于CLup的PostgreSQL生产级高可用与读写分离架构
数据库·postgresql·开源·clup
Micro麦可乐7 小时前
Spring Boot 实战:从零设计一个短链系统(含完整代码与数据库设计)
数据库·spring boot·后端·哈希算法·雪花算法·短链系统
码农阿豪7 小时前
从零到一:Spring Boot快速接入金仓数据库实战
数据库·spring boot·后端
鼎讯信通7 小时前
风电光缆运维提质增效:G-4000A 光缆故障追踪仪破解风场巡检难题
运维·网络·数据库
三十..8 小时前
MySQL 从入门到高可用架构实战精要
运维·数据库·mysql
cfm_29148 小时前
Redis五大基本数据结构底层了解
数据结构·数据库·redis
真实的菜9 小时前
Redis 从入门到精通(十二):典型业务场景实战 —— 排行榜、限流器、秒杀系统、Session 共享
数据库·redis·python
你想考研啊9 小时前
mysql数据库导出导入
数据库·mysql·oracle
十年编程老舅10 小时前
Linux DRM:底层逻辑与实践架构
数据库·mysql
The Sheep 202310 小时前
Vue复习
linux·服务器·数据库