Skip to content

MySQL 基础概念对照 · 字符集至其他类似的数据库 ​

返回分篇目录

字符集 ​

以下按 MySQL 8.4 的产品名称区分编码与字符集,不按“中文/英文”选择。见官方 Unicode 对照。

名称含义与边界
UTF-8通用 Unicode 编码;不是只能编码三个字节的字符
MySQL utf8mb4完整的 UTF-8 编码,每个字符1~4字节,可表示补充字符
MySQL utf8 / utf8mb38.4中前者是后者的弃用别名,仅支持BMP字符,每字符1~3字节;新定义显式选utf8mb4
gbk中文编码,是否适合取决于实际字符需求和系统互通
latin1单字节字符集,不能覆盖全部Unicode字符
utf16每字符2或4字节;不能一概说每字符16位

数据类型 ​

数据类型描述存储范围大小Go
INT整数类型,通常用于存储整数值-2147483648 到 21474836474 字节int32
BIGINT大整数类型,用于存储较大的整数值-9223372036854775808 到 92233720368547758078 字节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 或 FALSE1 字节bool

TIME、DATETIME、TIMESTAMP 的基础存储随小数秒精度增加额外空间,见官方存储要求。类型表依据DECIMAL精度与CHAR/VARCHAR字符长度。Go列只是应用侧选择提示,不是数据库自动映射;NULL、UNSIGNED、驱动参数和SQL TIME的时长语义都需单独处理。

主键&外键 ​

特点主键外键
定义用于唯一标识表中的每一行数据的字段,每张表只能有一个主键用于建立表与表之间的关联关系,指向另一张表的主键或唯一键
唯一性主键值在表中必须唯一,不允许为空外键值可以为空,可以重复,但必须与关联表的主键值相对应
数据类型通常为数值类型或字符串类型,与业务无关与关联表的主键数据类型一致
作用保证表中每一行数据的唯一性,可以用于快速定位数据建立表与表之间的关联关系,确保数据的一致性和完整性
定义方式可以在表的创建过程中使用 PRIMARY KEY 关键字来定义主键通常在表的创建过程中使用 FOREIGN KEY 关键字来定义外键
示例用户表中的用户 ID 字段可以作为主键,保证每个用户 ID 的唯一性订单表中的用户 ID 字段可以作为外键,与用户表中的用户 ID 建立关联

其他类似的数据库 ​

在数据处理方案中,有几种与 MySQL 类似的关系型数据库管理系统。这些系统在某些方面可能与 MySQL 有相似的特性和功能,但也可能在某些方面有所不同。以下是几种常见的与 MySQL 类似的数据处理方案:

  1. MariaDB:MariaDB 是 MySQL 的一个分支,它由 MySQL 的原始开发者创建,旨在保持与 MySQL 的兼容性,并提供一些新的功能和改进。因此,MariaDB 在很多方面与 MySQL 非常相似,用户可以轻松地迁移和使用 MariaDB。
  2. PostgreSQL:PostgreSQL 是另一个流行的开源关系型数据库管理系统,与 MySQL 相比,它在一些方面提供了更丰富和更高级的功能,如支持更复杂的数据类型、更强大的事务支持、更灵活的权限管理等。尤其在处理复杂数据结构和需要高级特性的应用场景下,PostgreSQL 往往是一个很好的选择。
  3. SQLite:SQLite 是一个轻量级的嵌入式关系型数据库管理系统,与 MySQL 不同,它不是一个独立的数据库服务器,而是直接嵌入到应用程序中,以库的形式提供。SQLite 适用于一些轻量级的应用场景,如移动应用、桌面应用等,它的特点是简单、易于使用,并且不需要单独的服务器进程。
  4. Microsoft SQL Server:Microsoft SQL Server 是微软开发的关系型数据库管理系统,它与 MySQL 相比在某些方面有所不同,比如更紧密地集成到 Microsoft 的生态系统中、提供更多的企业级特性和服务等。Microsoft SQL Server 通常用于 Windows 平台上的企业应用程序。

继续阅读