MYSQL-建表语句相关
1. CHARACTER SET = utf8mb4
CHARACTER SET = utf8mb4
字符集(Character Set):utf8mb4 是一种字符编码,支持存储 Unicode 字符。
utf8mb4 的特点:
它是 utf8 的扩展版本,支持更多的字符,包括 4 字节的字符(如表情符号 Emoji 和一些特殊符号)。
与 utf8 相比,utf8mb4 更全面,推荐在现代应用中使用。
适用场景:
需要存储多语言内容(如中文、日文、阿拉伯文等)。
需要存储表情符号(Emoji)或其他特殊符号
2. COLLATE = utf8mb4_general_ci
排序规则(Collation):utf8mb4_general_ci 是 utf8mb4 字符集的一种排序规则,用于定义字符的比较和排序方式。
utf8mb4_general_ci 的特点:
ci 表示 Case Insensitive(不区分大小写),即在对字符进行比较或排序时,忽略大小写差异(例如,A 和 a 被视为相同)。
general 表示一种通用的排序规则,适用于大多数语言,但可能对某些特殊字符的排序不够精确。
适用场景:
需要不区分大小写的比较(如用户名、邮箱等)。
不需要对特定语言进行精确排序(如德语、法语等)
3.ROW_FORMAT = Dynamic
ROW_FORMAT 是 MySQL 和 MariaDB 中用于指定表的行存储格式的参数。
不同的行格式会影响表的存储方式、性能以及对某些功能的支持(如压缩、大字段存储等)。
动态行格式:
在 Dynamic 格式下,MySQL 会将较长的可变长度字段(如 VARCHAR、TEXT、BLOB 等)存储在单独的溢出页中,而不是直接存储在行数据中。
行数据中只存储指向这些溢出页的指针。
优点:
适合存储大量可变长度数据(如大文本或二进制数据)。
支持更大的行大小(默认情况下,MySQL 单行最大限制为 8KB,但 Dynamic 格式可以通过溢出页存储更多数据)。
支持索引前缀(可以为 TEXT 或 VARCHAR 列创建前缀索引)。
缺点:
对于频繁更新的表,可能会导致碎片化,因为溢出页的管理需要额外的开销。