【MySQL】 字符集
【MySQL】 字符集
Metadata
title: 【MySQL】 字符集
date: 2022-12-20 16:12
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/MySQL
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 字符集
概述
- MySQL有四个级别的字符集和比较规则:服务器级别、数据库级别、表级别和列级别。
- 服务器级别包括character_set_server(字符集)和collation_server(比较规则)。
- 数据库级别包括character_set_database(当前数据库字符集)和collation_database(当前数据库比较规则)。
- 在创建或修改数据库时,可以指定字符集和比较规则,使用CREATE DATABASE和ALTER DATABASE语句。
- 表级别包括在创建或修改表时指定字符集和比较规则,使用CREATE TABLE和ALTER TABLE语句。
- 列级别包括在创建或修改列时指定字符集和比较规则,使用CREATE TABLE和ALTER TABLE语句。
- 在请求发送到服务器并接收结果的过程中,涉及字符集转换:
- 客户端使用操作系统的字符集编码请求字符串,并将其作为字节串发送给服务器。
- 服务器使用character_set_client字符集解码接收到的字节串,并按照character_set_connection字符集编码。
- 如果character_set_connection字符集与操作的列使用的字符集相同,则直接进行操作;否则,需要将请求中的字符串从character_set_connection字符集转换为列使用的字符集后再进行操作。
- 从列获取的字节串将根据character_set_results字符集转换,并发送给客户端。
- 客户端使用操作系统的字符集解析接收到的结果集字节串。
MySQL 的四个级别的字符集和比较规则
服务器级别
character_set_server 表示服务器级别的字符集, collation_server 表示服务器级别的比较规则。
数据库级别
character_set_database 表示当前数据库的字符集, collation_database 表示当前数据库的比较规则。
创建指定字符集和比较规则
CREATE DATABASE 【数据库名】
[[DEFAULT] CHARACTER SET 【字符集名称】]
[[DEFAULT] COLLATIE 【比较规则名称】];
修改指定字符集和比较规则
ALTER DATABASE 【数据库名】
[[DEFAULT] CHARACTER SET 【字符集名称】]
[[DEFAULT] COLLATIE 【比较规则名称】];
表级别
创建指定表字符集和比较规则
CREATE TABLE 【表名】
[[DEFAULT] CHARACTER SET 【字符集名称】]
[[DEFAULT] COLLATIE 【比较规则名称】];
修改指定表字符集和比较规则
ALTER TABLE 【表名】
[[DEFAULT] CHARACTER SET 【字符集名称】]
[[DEFAULT] COLLATIE 【比较规则名称】];
列级别
创建指定列字符集和比较规则
CREATE TABLE 【表名】 (
【列名】【字符串类型】 [ CHARACTER SET 【字符集名称】] [ COLLATIE 【比较规则名称】],
...
)
修改指定列字符集和比较规则
ALTER TABLE 【表名】 MODIFY【列名】【字符串类型】
[ CHARACTER SET 【字符集名称】] [ COLLATIE 【比较规则名称】];
从发送请求到接收结果过程中发生的字符集转换
- 客户端使用操作系统的字符集编码请求字符串,向服务器发送的是经过编码的一个字节串。
- 服务器将客户端发送来的字节串采用character_set_client 代表的字符集进行解码,将解码后的字符串再按照character_set_connection 代表的字符集进行编码。
- 如果character_set_connection 代表的字符集和具体操作的列使用的字符集一致,则直接进行相应操作,否则的话需要将请求中的字符串从character_set_connection 代表的字符集转换为具体操作的列使用的字符集之后再进行操作。
- 将从某个列获取到的字节串从该列使用的字符集转换为character_set_results 代表的字符集后发送到客户端。
- 客户端使用操作系统的字符集解析收到的结果集字节串。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 蝶梦庄生!
评论