美文网首页
MySQL字符集和字符排序

MySQL字符集和字符排序

作者: 幸南 | 来源:发表于2020-05-16 15:49 被阅读0次

mysql的字符集和字符序:
字符序:字符序(Collation)是指在同一字符集内字符之间的比较规则
一个字符序唯一对应一种字符集,但一个字符集可以对应多种字符序,其中有一个是默认字符序(Default Collation)

mysql的字符集和字符序有四个级别的默认设置:服务器级,数据库级,数据表级,字段级

mysql中的字符序的命名按照规范,以字符序对应的字符集名称开头.以_ci(大小写不敏感),_cs(大小写敏感)或者_bin(按编码值比较)
    例如:在字符序“utf8_general_ci”下,字符“a”和“A”是等价的

mysql字符集设置:
    系统变量:
        – character_set_server:默认的内部操作字符集
        – character_set_client:客户端来源数据使用的字符集
        – character_set_connection:连接层字符集
        – character_set_results:查询结果字符集
        – character_set_database:当前选中数据库的默认字符集
        – character_set_system:系统元数据(字段名等)字符集
        – 还有以collation_开头的同上面对应的变量,用来描述字符序

    MySQL中的字符集转换过程:
        1.MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection
        2.进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下
               - 使用每个数据字段的CHARACTER SET设定值
               - 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准)
               - 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值
               - 若上述值不存在,则使用character_set_server设定值
        3.将操作结果从内部操作字符集转换为character_set_results


    检测字符集问题的命令;
            SHOW CHARACTER SET;
            SHOW COLLATION;
            SHOW VARIABLES LIKE ‘character%’;
            SHOW VARIABLES LIKE ‘collation%’;
            SQL函数HEX、LENGTH、CHAR_LENGTH
            SQL函数CHARSET、COLLATION

    注意事项:
        1.my.cnf中的default_character_set设置只影响mysql命令连接服务器时的连接字符集,不会对使用libmysqlclient库
        的应用程序产生任何作用
        2.对字段进行的SQL操作通常都是以内部操作字符集来进行的,不受连接字符集设置的影响

    总结:
        mysql的字符集可以细化到一个库,一张表,一列.但是一般是使用默认的设置
            1.编译mysql时,指定了一个默认的字符集,这个字符集是latin1
            2.安装mysql时,可以在配置文件中指定一个默认的字符集,如果没有指定,这个值继承编译时的字符集
            3.启动mysqld时,可以使用character_set_server来指定默认的字符集,如果没有指定就继承配置文件中的配置
            4.安装mysql时选择多语言支持,在程序安装时会自动将配置设置为UTF-8

        默认情况下的mysql默认字符集是latin1


    修改默认字符集:
        1.最简单的修改方法:
            在mysql的配置文件中加入default-character-set = utf8
                                character_set_server = utf8
                修改完后重启服务器
        2.在线修改字符集
                 mysql> SET character_set_client = utf8;
                 mysql> SET character_set_connection = utf8;
                 mysql> SET character_set_database = utf8;
                 mysql> SET character_set_results = utf8;
                 mysql> SET character_set_server = utf8;
                 mysql> SET collation_connection = utf8;
                 mysql> SET collation_database = utf8;
                 mysql> SET collation_server = utf8;

        设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,存入数据库的仍然是乱码.那connection连接层上可能出了问题
        解决方法是在发送查询前执行一下下面这句:SET NAMES 'utf8';它相当于下面的三句指令:
            SET character_set_client = utf8;
            SET character_set_results = utf8;
            SET character_set_connection = utf8;

自己周末放假没事学习的心得,如有不对请指出.谢谢!

相关文章

  • 八、MySQL字符集

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

  • 字符集与校对规则

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

  • Mysql全备、增量备份及恢复

    Mysql字符集 MySQL数据库字符集包括字符集(CHARACTER)和校对规则(COLLATION)两个概念,...

  • MySQL常见问题汇集

    字符集mysql 字符集(CHARACTER SET)和校对集(COLLATE)mysql 中 character...

  • 如何创建MySql数据库

    一般我们创建mysql数据库,首先需要做的事,是选择“字符集”,然后选择“排序规则”。 字符集:utf8排序规则:...

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

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

  • MySQL字符集和字符排序

    mysql的字符集和字符序:字符序:字符序(Collation)是指在同一字符集内字符之间的比较规则一个字符序唯一...

  • 字符集

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

  • MySQL字符排序

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

  • mysql字符集和排序规则

    参考 https://www.cnblogs.com/zdz8207/p/mysql_utf8_bin.html ...

网友评论

      本文标题:MySQL字符集和字符排序

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