🔄Update: MySQL

This commit is contained in:
2025-09-27 11:25:49 +08:00
parent 8b08e0487f
commit 17bb8206dd
+127
View File
@@ -0,0 +1,127 @@
# 字段类型
- 数值类型
- 整型
- `TINYINT`
- `SMALLINT`
- `MEDIUMINT`
- `INT`
- `BIGINT`
- 浮点型
- `FLOAT`
- `DOUBLE`
- 定点型
- `DECIMAL`
- 字符串类型
- 常用
- `CHAR`
- `VARCHAR`
- TEXT 类
- `TINYTEXT`
- `TEXT`
- `MEDIUMTEXT`
- `LONGTEXT`
- BLOB 类
- `TINYBLOB`
- `BLOB`
- `MEDIUMBLOB`
- `LONGBLOB`
- 日期时间类型
- `YEAR`
- `TIME`
- `DATE`
- `DATETIME`
- `TIMESTAMP`
**`UNSIGNED` 熟悉有什么用**
- `ID`
- 不允许负值
- 允许更高的上限范围
**`CHAR` 和 `VARCHAR` 的区别**
- `CHAR`
- 定长
- 存储时填充空格
- 适用:加密后密码、身份证号码
- `VACHAR`
- 需要额外一个或两个字节记录字符串长度
- 适用:商品名称、用户昵称
**`VARCHAR(100)` 和 `VARCHAR(10)` 的区别**
- 磁盘空间
- 无区别
- 内存空间
- 有差异
- 排序时按照最大长度进行
**`DECIMAL` 和 `FLOAT/DOUBLE` 的区别**
- 定点数
- 存储有精度要求的小数
- 货币
- 浮点数
- 存储近似的小数值
- `0.1f + 0.2f != 0.3f`
**为什么不推荐使用 `TEXT` 和 `BLOB`**
| 类型 | 可存储大小| 用途 |
| --- | ---| --- |
| TINYTEXT | 0-255 字节 | 一般文本字符串 |
| TEXT | 0-65,535 字节 | 长文本字符串 |
| MEDIUMTEXT | 0-16,772,150 字节 | 较大文本数据 |
| LONGTEXT | 0-4,294,967,295 字节 | 极大文本数据
| 类型 |可存储大小 | 用途 |
|---|---|---|
| TINYBLOB | 0-255 字节 | 短文本二进制字符串
| BLOB | 0-65KB | 二进制字符串
| MEDIUMBLOB | 0-16MB | 二进制形式的长文本数据
| LONGBLOB | 0-4GB | 二进制形式的极大文本数据
数据库规范不推荐使用——
- 不能有默认值
- 检索效率低
- 不能直接创建索引
- 可能会消耗大量 IO 资源
- 导致表上的 SQL 变慢
**`DATETIME` 和 `TIMESTAMP` 的区别**
- `DATETIME`
- 没有时区信息
- `TIMESTAMP`
- 有时区信息
**`NULL` 和 '' 的区别**
- `NULL`
- 不确定的值
- 不等于任何值
- 大多数聚合函数会忽略
- ''
- 空字符串
- 已知的值
**`Boolean` 类型如何表示**
- `TINYINT(1)`
**手机号存储使用 `INT` 还是 `VARCHAR`**
`VARCHAR`
- 格式性
- 前导零
- 分隔符
- 前缀
- 非算数性
- 不需要数学运算
- 查询灵活性
- `LIKE` 直观高效
- 加密
- 加密后长度无法用 `INT/BIGINT` 存储