美文网首页
字符集和比较规则

字符集和比较规则

作者: 鄙人不善奔跑0 | 来源:发表于2020-04-05 13:12 被阅读0次

1.字符集的是某个字符范围的编码规则。

2.比较规则是针对某个字符集中的字符比较大小的一种规则。

3.在MySQL中,一个字符集可以有若干种比较规则,其中有一个默认的比较规则,一个比较规则必须对应一个字符集。

4.查看MySQL中查看支持的字符集和比较规则的语句如下:

SHOW (CHARACTER SET|CHARSET) [LIKE 匹配的模式];

SHOW COLLATION [LIKE 匹配的模式];

5.MySQL有四个级别的字符集和比较规则

*服务器级别

character_set_server表示服务器级别的字符集,collation_server表示服务器级别的比较规则。

*数据库级别

创建和修改数据库时可以指定字符集和比较规则:

CREATE DATABASE 数据库名

    [[DEFAULT] CHARACTER SET 字符集名称]

    [[DEFAULT] COLLATE 比较规则名称];

ALTER DATABASE 数据库名

    [[DEFAULT] CHARACTER SET 字符集名称]

    [[DEFAULT] COLLATE 比较规则名称];

character_set_database表示当前数据库的字符集,collation_database表示当前默认数据库的比较规则,这两个系统变量是只读的,不能修改。如果没有指定当前默认数据库,则变量与相应的服务器级系统变量具有相同的值。

*表级别

创建和修改表的时候指定表的字符集和比较规则:

CREATE TABLE 表名 (列的信息)

    [[DEFAULT] CHARACTER SET 字符集名称]

    [COLLATE 比较规则名称]]

ALTER TABLE 表名

    [[DEFAULT] CHARACTER SET 字符集名称]

    [COLLATE 比较规则名称]

*列级别

创建和修改列定义的时候可以指定该列的字符集和比较规则:

CREATE TABLE 表名(

    列名 字符串类型 [CHARACTER SET 字符集名称] [COLLATE 比较规则名称],

    其他列...

);

ALTER TABLE 表名 MODIFY 列名 字符串类型 [CHARACTER SET 字符集名称] [COLLATE 比较规则名称];

如果创建或修改列时没有显式的指定字符集和比较规则,则该列默认用表的字符集和比较规则;如果创建或修改表时没有显式的指定字符集和比较规则,则该表默认用数据库的字符集和比较规则;如果创建或修改数据库时没有显式的指定字符集和比较规则,则该数据库默认用服务器的字符集和比较规则

6.从发送请求到接收结果过程中发生的字符集转换:

字符集转换

客户端使用操作系统的字符集编码请求字符串

服务器将客户端发送来的字符串的字符集按照chacharacter_set_client转换为character_set_connection。

使用character_set_connection进行服务器操作。

将结果集字符串的字符集从character_set_connection转为character_set_results发送到客户端

客户端使用操作系统的字符集解析收到的结果集字符串

在这个过程中各个系统变量的含义如下:

系统变量描述

character_set_client服务器解码请求时使用的字符集

character_set_connection服务器运行过程中使用的字符集

character_set_results服务器向客户端返回数据时使用的字符集

一般情况下要使用保持这三个变量的值和客户端使用的字符集相同。真正的情况是,客户端使用的字符集和chacharacter_set_client以及character_set_results相同,然后character_set_connection作为中间转换字符集,只要可以包含的字符范围涵盖请求以及结果集中的字符就可以了。因为表中的数据使用的字符集一般是和character_set_connection对应,所以无论如何都可以通过解码转码找到正确的数据。

7.比较规则的作用通常体现比较字符串大小的表达式以及对某个字符串列进行排序中。

相关文章

  • MySQL索引学习

    1. 字符集和比较规则 MySQL有4个级别的字符集和比较规则,分别是: 服务器级别 数据库级别 表级别 列级别 ...

  • 字符集和比较规则

    1.字符集的是某个字符范围的编码规则。 2.比较规则是针对某个字符集中的字符比较大小的一种规则。 3.在MySQL...

  • 字符集与校对规则

    MySQL字符集及校对规则的理解 阅读目录:MySQL的字符集和校对规则 MySQL的字符集 MySQL与字符集 ...

  • 因为一个字符校对问题,我的大厂面试挂了

    摘要:字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。 本文分享自华为云社区《一个字符校对规则...

  • Mysql--字符集和比较规则

    Mysql--字符集和比较规则 具体细节 请去掘金购买《MySQL 是怎样运行的:从根儿上理解 MySQL》 字符...

  • 八、MySQL字符集

    字符集和排序规则简介   MySQL提供了多种字符集和排序规则选择,其中字符集设置和数据存储以及客户端与MySQL...

  • 批量修改MySQL表字符集和排序规则

    目录 一、问题 二、修改字符集 三、修改库字符集和排序规则 四、修改表和字段字符集以及排序规则 1、查询并生成修改...

  • Java进阶-MySQL-基础

    一、Java进阶-MySQL-基础 1.1 客户端连接 1.2 字符集和比较规则 SHOW CHARSET; /...

  • MySQL字符排序

    关于MySQL字符集 可以参考文章MySQL字符集 & 重谈MySQL字符集 目录 大小写 比较规则 大小写 _c...

  • 字符集

    定义 mysql 的字符集包括 字符集 CHARACTER 和 校对规则COLLATION 两个概念 字符集 : ...

网友评论

      本文标题:字符集和比较规则

      本文链接:https://www.haomeiwen.com/subject/dcfuphtx.html