MySQL中utf8mb4_general_ci字符集与排序规则详解

docker exec -it mariadb mysql -u "root" -p"${DATABASE_PASSWORD}" -h "${DATABASE_IP}" -e "use mysql; CREATE DATABASE IF NOT EXISTS \`bpm`\ CHARACTER SET utf8mb4_general_ci;"

在MySQL数据库中,`utf8mb4`是一种字符集,它支持存储任何Unicode字符,包括表情符号等。`utf8mb4`是`utf8`的超集,能够存储4字节的Unicode字符,而`utf8`只能存储最多3字节的Unicode字符。`mb4`表示"most bytes 4",即最多使用4个字节来存储字符。

`utf8mb4`字符集通常与一个排序规则(collation)一起使用,排序规则定义了字符的比较和排序方式。`utf8mb4_general_ci`是`utf8mb4`字符集的一个排序规则,其中:

- `general`:表示这是一个通用的排序规则,适用于多种语言环境。
- `ci`:表示"case-insensitive",即不区分大小写的排序规则。这意味着在进行比较时,大写字母和小写字母被视为相同。

例如,在创建数据库或表时,使用`utf8mb4_general_ci`可以确保数据库支持存储任何Unicode字符,并且在进行字符串比较时不区分大小写。这对于国际化应用来说非常重要,因为它们需要支持多种语言和字符集。

以下是一些使用`utf8mb4_general_ci`的例子:

1. 创建数据库时指定字符集和排序规则:
   CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
2. 创建表时指定列的字符集和排序规则:
   CREATE TABLE mytable (
       id INT AUTO_INCREMENT PRIMARY KEY,
       name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL
   );
3. 在查询中使用排序规则进行不区分大小写的比较:
   SELECT * FROM mytable WHERE name COLLATE utf8mb4_general_ci = 'example';
在这个例子中,如果`name`列包含`Example`、`EXAMPLE`或`example`,它们都会被视作匹配查询条件。

在你提供的命令中,`docker exec -it mariadb mysql ...`是在Docker容器中执行MySQL命令行工具,用于连接到`mariadb`服务并执行SQL语句。这条SQL语句的作用是:如果`bpm`数据库不存在,则创建它,并指定使用`utf8mb4_general_ci`作为其默认的字符集和排序规则。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值