MySQL 基础概念对照 · 字符集至其他类似的数据库
字符集
以下按 MySQL 8.4 的产品名称区分编码与字符集,不按“中文/英文”选择。见官方 Unicode 对照。
| 名称 | 含义与边界 |
|---|---|
| UTF-8 | 通用 Unicode 编码;不是只能编码三个字节的字符 |
MySQL utf8mb4 | 完整的 UTF-8 编码,每个字符1~4字节,可表示补充字符 |
MySQL utf8 / utf8mb3 | 8.4中前者是后者的弃用别名,仅支持BMP字符,每字符1~3字节;新定义显式选utf8mb4 |
gbk | 中文编码,是否适合取决于实际字符需求和系统互通 |
latin1 | 单字节字符集,不能覆盖全部Unicode字符 |
utf16 | 每字符2或4字节;不能一概说每字符16位 |
数据类型
| 数据类型 | 描述 | 存储范围 | 大小 | Go |
|---|---|---|---|---|
| INT | 整数类型,通常用于存储整数值 | -2147483648 到 2147483647 | 4 字节 | int32 |
| BIGINT | 大整数类型,用于存储较大的整数值 | -9223372036854775808 到 9223372036854775807 | 8 字节 | int64 |
| FLOAT | 单精度浮点数类型,用于存储小数值 | 约7位十进制有效数字(非小数位数) | 4 字节 | float32 |
| DOUBLE | 双精度浮点数类型,用于存储双精度小数值 | 约15位十进制有效数字(非小数位数) | 8 字节 | float64 |
| DECIMAL(M, D) | 定点数类型,用于存储精确的小数值 | M为总精度,D为小数位;如DECIMAL(5,2)范围-999.99~999.99 | 依赖于 M 和 D | 依驱动/精确数值方案 |
| CHAR(N) | 定长字符串类型,用于存储固定长度的字符串 | 最大长度为 N | 字符长度N;字节数依字符集与长度前缀而异 | string |
| VARCHAR(N) | 变长字符串类型,用于存储可变长度的字符串 | 最大长度为 N | 字符长度N;字节数依字符集与长度前缀而异 | string |
| TEXT | 变长字符串类型,用于存储较长的文本数据 | 最大长度为 65,535 字节 | 最大为 65,535 字节 | string |
| DATE | 日期类型,用于存储日期值 | '1000-01-01' 到 '9999-12-31' | 3 字节 | 依驱动配置 |
| TIME | 时间类型,用于存储时间值 | '-838:59:59' 到 '838:59:59' | 3 字节 | 依驱动配置 |
| DATETIME | 日期时间类型,用于存储日期和时间值 | '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' | 5字节基础存储,另加小数秒空间 | 依驱动配置 |
| TIMESTAMP | 时间戳类型,用于存储日期和时间值 | '1970-01-01 00:00:01' 到 '2038-01-19 03:14:07' | 4 字节 | time.Time |
| BOOLEAN | 布尔类型,用于存储逻辑值 | TRUE 或 FALSE | 1 字节 | bool |
TIME、DATETIME、TIMESTAMP 的基础存储随小数秒精度增加额外空间,见官方存储要求。类型表依据DECIMAL精度与CHAR/VARCHAR字符长度。Go列只是应用侧选择提示,不是数据库自动映射;NULL、UNSIGNED、驱动参数和SQL TIME的时长语义都需单独处理。
主键&外键
| 特点 | 主键 | 外键 |
|---|---|---|
| 定义 | 用于唯一标识表中的每一行数据的字段,每张表只能有一个主键 | 用于建立表与表之间的关联关系,指向另一张表的主键或唯一键 |
| 唯一性 | 主键值在表中必须唯一,不允许为空 | 外键值可以为空,可以重复,但必须与关联表的主键值相对应 |
| 数据类型 | 通常为数值类型或字符串类型,与业务无关 | 与关联表的主键数据类型一致 |
| 作用 | 保证表中每一行数据的唯一性,可以用于快速定位数据 | 建立表与表之间的关联关系,确保数据的一致性和完整性 |
| 定义方式 | 可以在表的创建过程中使用 PRIMARY KEY 关键字来定义主键 | 通常在表的创建过程中使用 FOREIGN KEY 关键字来定义外键 |
| 示例 | 用户表中的用户 ID 字段可以作为主键,保证每个用户 ID 的唯一性 | 订单表中的用户 ID 字段可以作为外键,与用户表中的用户 ID 建立关联 |
其他类似的数据库
在数据处理方案中,有几种与 MySQL 类似的关系型数据库管理系统。这些系统在某些方面可能与 MySQL 有相似的特性和功能,但也可能在某些方面有所不同。以下是几种常见的与 MySQL 类似的数据处理方案:
- MariaDB:MariaDB 是 MySQL 的一个分支,它由 MySQL 的原始开发者创建,旨在保持与 MySQL 的兼容性,并提供一些新的功能和改进。因此,MariaDB 在很多方面与 MySQL 非常相似,用户可以轻松地迁移和使用 MariaDB。
- PostgreSQL:PostgreSQL 是另一个流行的开源关系型数据库管理系统,与 MySQL 相比,它在一些方面提供了更丰富和更高级的功能,如支持更复杂的数据类型、更强大的事务支持、更灵活的权限管理等。尤其在处理复杂数据结构和需要高级特性的应用场景下,PostgreSQL 往往是一个很好的选择。
- SQLite:SQLite 是一个轻量级的嵌入式关系型数据库管理系统,与 MySQL 不同,它不是一个独立的数据库服务器,而是直接嵌入到应用程序中,以库的形式提供。SQLite 适用于一些轻量级的应用场景,如移动应用、桌面应用等,它的特点是简单、易于使用,并且不需要单独的服务器进程。
- Microsoft SQL Server:Microsoft SQL Server 是微软开发的关系型数据库管理系统,它与 MySQL 相比在某些方面有所不同,比如更紧密地集成到 Microsoft 的生态系统中、提供更多的企业级特性和服务等。Microsoft SQL Server 通常用于 Windows 平台上的企业应用程序。
继续阅读
- 知识专题
- 知识专题
- 知识专题