• MySQL字符集和校对规则


    一、字符集

    字符集:就是一对文字符号及其编码比较的集合

    二、常用字符集:

    ASCII:主要用于显示英语和其他西欧语言。长度为一个字节
    UTF-8:互联网广泛支持的Unicode字符集,长度为一到四个字节
    GBK:主要用于显示汉字,长度为二个字节

    三、查看MySQL的字符集和校对规则

    1.查看MySQL服务器的字符集

    show charsetset/character set 

    2.查看字符集的校对规则

    show collation;
    

    3.查看当前数据库的字符集

    mysql> show variables like 'character_%';
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8                       |
    | character_set_connection | utf8                       |
    | character_set_database   | utf8                       |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8                       |
    | character_set_server     | utf8                       |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    
    /* 变化名说明:
    character_set_client:    客户端输入数据的字符集
    character_set_connection:客户机/服务器连接的字符集
    character_set_database:  默认数据库的字符集
    character_set_results:结果集,返回给客户端的字符集
    扩展:
    set names 修改的是client、connection、results三个的字符集,只支持当前会话,当前会话退出,set names 设置的字符集会失效
     */

    4.查看当前数据库的校对规则

    mysql> show variables like 'collation_%';
    +----------------------+-----------------+
    | Variable_name        | Value           |
    +----------------------+-----------------+
    | collation_connection | utf8_general_ci |
    | collation_database   | utf8_general_ci |
    | collation_server     | utf8_general_ci |
    +----------------------+-----------------+
    
    /* collation_connection:当前连接的字符集
    collation_database:当前日期的默认校对。每次用USE语句来“跳转”到另一个数据库的时候,这个变量的值就会改变。如果没有当前数据库,这个变量的值就是collation_server变量的值
    collation_server:服务器的默认校对
    
    排序方式的命名规则为:字符集名字_语言_后缀,其中各个典型后缀的含义如下:
    1._ci:不区分大小写的排序方式
    2._cs:区分大小写的排序方式
    3._bin:二进制排序方式,大小比较将根据字符编码,不涉及人类语言,因此_bin的排序方式不包含人类语言
     */
    

    5.校对规则案例

    1.创建cloud数据库

    mysql> create database cloud;
    Query OK, 1 row affected (0.00 sec)

    2.创建表t1_ci和t2_bin,并指定字符集和校对规则

    mysql> create table t1_ci(name char(2))charset=utf8 collate=utf8_general_ci;
    mysql> create table t2_bin(name char(2))charset=utf8 collate=utf8_bin;
    

    3.给表中插入记录

    mysql> insert into t1_ci values('a'),('b'),('A'),('B');
    mysql> insert into t2_bin values('a'),('b'),('A'),('B');
    

    4.查看两表数据并排序

    mysql> select * from t2_bin order by name;
    +------+
    | name |
    +------+
    | A |
    | B |
    | a |
    | b |
    +------+
    4 rows in set (0.00 sec)
    
    mysql> select * from t1_ci order by name;
    +------+
    | name |
    +------+
    | a |
    | A |
    | b |
    | B |
    +------+
    4 rows in set (0.00 sec)
    -- 结果说明以ci结果的校对规则不区分大小写的排序,故而使用

    四、配置文件修改字符集

    1.更改MySQL配置文件,修改字符集和字符集校对

    [root@ping ~]# egrep "character|collation" /etc/my.cnf
    character-set-server=utf8
    collation-server=utf8_general_ci
    

      

  • 相关阅读:
    平衡数问题
    重复值判断练习题
    小范围排序
    堆排序
    基数排序
    计数排序
    希尔排序
    快速排序
    Effective C++笔记:实现
    Effective C++笔记:设计与声明
  • 原文地址:https://www.cnblogs.com/pingzhe/p/8432626.html
Copyright © 2020-2023  润新知