直接看结果(有错误请告诉我)
    
    
    
    版本
   
    centos 8
    
    mysql 5.7
   
    
    
    修改字符集
   
    记录下修改配置文件的方法
    
    (谁知道我到底看了多少重复的文章)
    
    步骤:
    
    打开配置文件,分别在[mysql]、[mysqld]、[mysql]
    
    添加默认字符集
    
    ———————————————————————
   
mysql> system vim /etc/my.cnf
	[client]
		default-character-set=utf8
	[mysqld]
		character_set_server=utf8
	[mysql]
		default-character-set=utf8
        (这个的作用和set names是一样的 ) 
    
    
    中文无法显示再现
   
    mysql> select * from latin_utf ;
    
    ±—–+
    
    | name |
    
    ±—–+
    
    | ?? |
    
    | ?? |
    
    | ?? |
    
    ±—–+
    
    3 rows in set (0.00 sec)
   
    
     查看字符集,数据库和客户端,连接,返回结果的字符集不一样
    
    
    mysql> show variables like ‘char%’;
    
    ±————————-±—————————+
    
    | Variable_name | Value |
    
    ±————————-±—————————+
    
    | character_set_client | latin1 |
    
    | character_set_connection | latin1 |
    
    | character_set_database | utf8 |
    
    | character_set_filesystem | binary |
    
    | character_set_results | latin1 |
    
    | character_set_server | latin1 |
    
    | character_set_system | utf8 |
    
    | character_sets_dir | /usr/share/mysql/charsets/ |
    
    ±————————-±—————————+
    
    8 rows in set (0.00 sec)
   
    
     修改如下:
    
   
    mysql> set names utf8;
    
    Query OK, 0 rows affected (0.00 sec)
   
    mysql> select * from latin_utf ;
    
    ±——-+
    
    | name |
    
    ±——-+
    
    | 哈哈 |
    
    | 张三 |
    
    | 赵四 |
    
    ±——-+
    
    3 rows in set (0.00 sec)
   
    mysql> show variables like ‘char%’;
    
    ±————————-±—————————+
    
    | 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 | latin1 |
    
    | character_set_system | utf8 |
    
    | character_sets_dir | /usr/share/mysql/charsets/ |
    
    ±————————-±—————————+
    
    8 rows in set (0.00 sec)
   
    
    
    修改已有数据表的字符集
   
    假设原来的表的字符集是latin1,现在要修改成utf8
    
    修改配置文件的办法只新创建的表或者记录生效,
    
    不想丢弃原来的数据,需要将表先导出,调整字符集,在导入才可以:
    
    步骤
    
    1、导出表结构
    
    [root@localhost mysql]# mysqldump -uroot -p –default-character-set=latin1 -d data_5>createtab.sql
   
    2、手工修改原来的字符集latin为新的utf8字符集
    
    [root@localhost mysql]# vim createtab.sql
   
    CREATE TABLE
    
     latin_utf
    
    
    (
    
     name
    
    varchar(20)
    
    DEFAULT NULL
    
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
   
    3、导出数据
    
    [root@localhost mysql]# mysqldump -uroot -p –quick –no-create-info –extended-insert –default-character-set=latin1 data_5>data.sql
   
    打开导出的数据表,修改set names为需要的字符集
    
    [root@localhost mysql]# vim data.sql
    
    
    
    4、使用新的字符集创建数据库
    
    mysql> create database data_5_2 default charset utf8;
    
    mysql> use data_5_2;
    
    mysql> source createtab.sql;
   
    5、导入数据
    
    mysql> source createtab.sql;
   
    
    
    关于字符集其它一些命令
   
———————————————————————
1、查看所用可用的字符集
    mysql> show character set;
    
    mysql> select * from information_schema.character_sets limit 3;
    
    ———————————————————————
   
2、查看字符集utf8的校对规则
    mysql> SHOW COLLATION LIKE ‘utf8%’;
    
    ———————————————————————
   
3、校对规则命名约定:
    _ci 大小写不敏感
    
    _cs 大小写敏感
    
    _bin 比较是基于字符编码的值
    
    ———————————————————————
   
4、例子:指定字符集gbk ,编码规则gbk_chinese_ci,比较字符A 与a是否相同
mysql> select case when _gbk ‘A’ COLLATE gbk_chinese_ci=_gbk ‘a’ COLLATE gbk_chinese_ci then 1 else 0 end\G
    返回1
    
    ———————————————————————
    
    方法来源:
    
    [1] : 深入浅出mysql第九章
    
    [2]: mysql导入导出sql文件https://www.cnblogs.com/yuwensong/p/3955834.html
   
 
