MySQL 字符集 和 排序规则
字符集
用到字符的地方就会用到字符集,通过字符集对字符串编码转换成二进制序列,进而可以对这个二进制序列进行存储或传输,之后在读取的时候通过该字符集对二进制序列进行解码得到字符串内容,这就是字符集的用途。
在存储上,MySQL 服务提供了不同级别的字符集设置,它们分别是:服务器字符集、数据库字符集、表字符集、列字符集。它们的作用分别是:服务器字符集,用于设置数据库的默认字符集;数据库字符集,用于设置表的额默认字符集;表字符集,用于设置列的默认字符集。
在连接上,MySQL 服务提供了不同处理过程的字符集设置,它们分别是:客户端字符集(character_set_client)、服务端字符集(character_set_connection)、响应结果字符集(character_set_results)。它们的作用分别是:客户端字符集,用于对客户端发送的请求内容进行编码,服务器接收到请求后需要用该字符集对请求内容进行解码;服务端字符集,服务器在处理请求过程中使用到的字符集,服务器并不是直接使用客户端字符集进行处理,它需要先将客户端字符集的请求内容转换成服务端字符集的请求内容,然后再对请求进行处理;响应结果字符集,用于响应结果进行编码,然后再返回给客户端,客户端接收到响应后,需要用该字符集对响应内容进行解码。
排序规则
排序规则,定义字符集内字符的排列顺序,用作字符的比较,结果集的字符串排列顺序就是使用这个排序规则进行排序的。
存储字符集
服务器字符集
默认字符集(character-set-server):latin1
默认排序规则(collation-server):latin1_swedish_ci
设置方式:
- 服务端配置文件(/etc/my.cnf or /etc/mysql/mysql.conf.d/mysqld.cnf)
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
- 服务端命令行启动参数
mysqld --character-set-server=latin1 \
--collation-server=latin1_swedish_ci
- 系统变量
SET [GLOBAL|SESSION|LOCAL] character-set-server=utf8;
SET [GLOBAL|SESSION|LOCAL] collation-server=utf8_general_ci;
数据库字符集
默认字符集:服务器字符集
默认排序规则:服务器字符排序规则
设置方式:
- 创建数据库
CREATE DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
- 修改数据库
ALTER DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
表字符集
默认字符集:数据库字符集
默认排序规则:数据库字符排序规则
设置方式:
- 创建表
CREATE TABLE tbl_name (column_list)
[[DEFAULT] CHARACTER SET charset_name]
[COLLATE collation_name]]
- 修改表
ALTER TABLE tbl_name
[[DEFAULT] CHARACTER SET charset_name]
[COLLATE collation_name]
列字符集
默认字符集:表字符集
默认排序规则:表字符排序规则
设置方式:
- 创建表
CREATE TABLE tbl_name
(
col_name {CHAR | VARCHAR | TEXT} (col_length)
[CHARACTER SET charset_name]
[COLLATE collation_name]
);
- 修改表
ALTER TABLE tbl_name MODIFY
col_name {ENUM | SET} (val_list)
[CHARACTER SET charset_name]
[COLLATE collation_name]
连接字符集
客户端字符集(character_set_client)
默认字符集:utf8
设置方式:
- 客户端命令行连接参数
--default-character-set
- 客户端配置文件
[mysql]
default-character-set=koi8r
- SQL 语句
mysql> charset koi8r
or
mysql> set names koi8r
- 系统变量
SET [GLOBAL|SESSION|LOCAL] character-set-client =utf8
服务器字符集(character_set_connection)
默认字符集:utf8
默认排序规则:没有默认值
设置方式:
- 客户端命令行连接参数
--default-character-set
- 客户端配置文件
[mysql]
default-character-set=koi8r
- SQL 语句
mysql> charset koi8r
or
mysql> set names koi8r
- 系统变量
SET [GLOBAL|SESSION|LOCAL] character-set-connection =utf8
响应结果字符集(character_set_results)
默认字符集:utf8
设置方式:
- 客户端命令行连接参数
--default-character-set
- 客户端配置文件
[mysql]
default-character-set=koi8r
- SQL 语句
mysql> charset koi8r
or
mysql> set names koi8r
- 系统变量
SET [GLOBAL|SESSION|LOCAL] character-set-results =utf8
备注:
上面三种字符集的前三种设置方式(客户端命令行连接参数、客户端配置文件、SQL 语句),都是对这三种字符集的统一设置,如果需要对这三种结果集分别设置,可以使用系统变量的方式进行设置。
MySQL 字符集 和 排序规则相关推荐
- MySQL字符集与排序规则
MySQL字符集与排序规则 MySQL支持的字符集 字符集与排序规则 排序规则的命名 使用字符集与排序规则 服务器级别的字符集 数据库级别的字符集 表级别的字符集 列级别的字符集 字符串级别的字符集 ...
- mysql字符集的排序规则_MySql字符集与排序规则详解
前段时间往MySQL中存入emoji表情或生僻字.繁体字时,报错无法添加,研究后发现这是字符集编码的问题,今天就来分析一下各个字符集与排序规则 一.字符集 先说字符,字符是各种文字和符号的总称,包括各 ...
- mysql查看字符排序规则_Mysql 字符集及排序规则
原文: Mysql 字符集及排序规则 一.字符集 字符集:就是用来定义字符在数据库中的编码的集合. 常见的字符集:utf8.Unicode.GBK.GB2312(支持中文).ASCCI(不支持中文) ...
- mysql字符集排序规则_MySQL原理 - 字符集与排序规则
任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集).这些字符如何排序呢?决定字符排序的规则就是排序规则. 查 ...
- 2021-2-18:请你说说MySQL的字符集与排序规则对开发有哪些影响?
任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集).这些字符如何排序呢?决定字符排序的规则就是排序规则. 查 ...
- MySQL原理 - 字符集与排序规则
任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集).这些字符如何排序呢?决定字符排序的规则就是排序规则. 查 ...
- mysql8.0字符集排序规则_2021-2-18:请你说说MySQL的字符集与排序规则对开发有哪些影响?...
任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集).这些字符如何排序呢?决定字符排序的规则就是排序规则. 查 ...
- mysql新建数据库字符集与排序规则的选择
目录 字符集选择 排序规则 字符集选择 一般选择utf8.下面介绍一下utf8与utfmb4的区别. utf8mb4兼容utf8,且比utf8能表示更多的字符.至于什么时候用,看你的做什么项目了,到 ...
- mysql 中文字符排序规则_mysql中字符集和排序规则说明
数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set),每种字符集也有各自的排序规则(Collation). 一.字符集 字符集,即用于定义字符在数据库中的编码的集合. 常见 ...
最新文章
- url传参参数编码的解码问题
- 使用 utmpdump 监控 CentOS 用户登录历史
- Packet Tracer 思科模拟器之交换机配置快速生成树协议(RSTP)
- .NET Core 下使用 gRPC
- packt_Packt发行的$ 5 Java编程书籍:精通Java 9,Java 9高性能
- python烟花表白_python炫酷烟花表白源代码
- Java加密与解密的艺术~AES实现
- 频率统计表用c语言_空间矢量脉宽调制建模与仿真(基于C语言的SIMULINK仿真模型 | 基于SVPWM模块的仿真)...
- 网页聊天室win10界面源码
- QT--MessageBox --multi button
- height100%不能生效问题解决
- 3.Maven实战 --- maven使用入门
- IOS测试版全版本固件下载集合
- java jco sap 重连_Java连接SAP,使用SAPJCO3.jar
- buuctf [ElasticSearch]CVE-2015-1427
- ANSYS ICEM CFD二维结构网络生成实例——流动传热
- 计算机常用截图方法,电脑截屏技巧 教你几种常见的截屏方法
- 软件行业的税收优惠政策包含哪些
- DVWA-SQL Injection级别通关详解
- 9.matplotlib contours等高线图