🔄Update: MySQL
This commit is contained in:
@@ -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` 存储
|
||||||
Reference in New Issue
Block a user