Mysql:数据库建立的字符编码规则注意

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 数据库建立的字符编码规则注意
无论是用代码创建数据库还是使用可视化工具创建数据库时,有一个可选项无法避免,那就是 字符集的编码排序规则的设置。如果你有这方面的困惑请往下看。

数据库建立

字符集:

一般选择 UTF-8

一般有两个推荐项,供我们选择:utf8utf8mb4

这个两个的关系和解释

  1. utf8mb4兼容utf8,且比utf8能表示更多的字符。
  2. utf8mb4:utf8mb4字符集主要从mysql5.5开始被支持,正在成为未来趋势字符集。
  3. utf8:中英文混合的环境,目前使用的比较多,互联网场景的Linux/UNIX及MySQL都支持UTF8。

正常使用utf8即可(因为现在用的多,utf8更精简),选择utf8mb4也可以。

Ps:如果不设置该内容,默认是latin1,在中文插入操作中会出现问题,故不推荐使用默认字符集

排序规则:

一般选择 utf8_general_ci

这里会涉及到一个数据库数据选择,需要根据具体情况去选择编码。字符集的编码一般会通过数据库的方式进行统一,而排序规则会根据表或者根据字段去重新指定

通常我们会用到utf_binutf_general_ci;而这两个的解释和区别:

  1. utf_bin排序规则,该字段的大小写会被区别对待,例如:a 和 A 会别区别对待。
  2. utf_general_ci排序规则,则不会区分大小写,一般区分大小写的密码不太适合用这个。

例如SELECT * FROM table WHERE txt = 'a'

因为utf8_bin是区分大小写的,所以在utf8_bin中执行SELECT找不到 txt = 'A' 的那一行, 而 utf8_general_ci则可以。

排序规则列举

  1. utf8_bin:字符串每个字符串用二进制数据编译存储。区分大小写,而且可以存二进制的内容
  2. utf8_general_ci校对速度快,但准确度稍差。(准确度够用,一般建库选择这个)
  3. utf8_unicode_ci准确度高,但校对速度慢

Sql语句创建数据库

这里给出Sql语句创建数据库,并且同时指定两个规则,可以直接复制使用。

以下语句创建了一个demo数据库,并指定了utf8编码和utf8_general_ci排序规则。

CREATE DATABASE demo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
10 0
|
2天前
|
关系型数据库 MySQL 数据库连接
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
|
3天前
|
存储 Oracle 关系型数据库
oracle 数据库 迁移 mysql数据库
将 Oracle 数据库迁移到 MySQL 是一项复杂的任务,因为这两种数据库管理系统具有不同的架构、语法和功能。
15 0
|
10天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
11天前
|
SQL 关系型数据库 MySQL
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
|
11天前
|
SQL 关系型数据库 MySQL
【MySQL-1】理解关系型数据库&数据的数据模型
【MySQL-1】理解关系型数据库&数据的数据模型
|
12天前
|
关系型数据库 MySQL 数据库
Docker数据库Mysql
Docker数据库Mysql
|
12天前
|
存储 SQL 关系型数据库
mysql查询数据库表大小怎么操作
mysql查询数据库表大小怎么操作
|
12天前
|
关系型数据库 MySQL PHP
【PHP 开发专栏】PHP 连接 MySQL 数据库的方法
【4月更文挑战第30天】本文介绍了 PHP 连接 MySQL 的两种主要方法:mysqli 和 PDO 扩展,包括连接、查询和处理结果的基本步骤。还讨论了连接参数设置、常见问题及解决方法,如连接失败、权限和字符集问题。此外,提到了高级技巧如使用连接池和缓存连接信息以优化性能。最后,通过实际案例分析了在用户登录系统和数据管理中的应用。
|
13天前
|
关系型数据库 MySQL 数据库
【MySQL】:数据库事务管理
【MySQL】:数据库事务管理
24 0