zoukankan      html  css  js  c++  java
  • mysql字符集设置

    1.1mysql字符集知识:

    概述:字符集就是一套文字符号及其编码,比较规则的集合。 Mysql数据库字符集包括字符集(character)和校对规则(collation)这两个概念。其中字符集用于定义mysql数据库的存储方式,而校对规则是定义字符串的比较方式,并且字符集和校对规则是一对多的关系

    查看mysql可用的字符集的命令是show character set;

     

    1.2mysql数据库使用常见字符集介绍:

    常用·字符集

    长度

    说明

    GBK

    2

    不是国际标准,但支持的系统较多

    UTF-8

    3

    中英文合并,建议使用此字符集

    utf8mb4

    4

    UTF-8 Uniconde

    Lantin1

    1

    Mysql默认安装使用的字符集

     

     

     

     

     

     

    1.3选择合适的字符集

    1)满足应用支持语言的需求,处理各种各样的文字,支持不同语言的国家和地区,应选Unicode字符集,即utf-8。

    2)处理数据量较大,且要支持中文,性能要求很高,可选GBK(定长字符集,占用两个字节)对大量运算处理,比较排序,更快,更高。

    3)移动互联网业务,建议使用utf8mb4字符集。

     

    2.1mysql字符集的设置

    1)mysql默认情况下字符集的设置

    show variables like 'character_set%';
    
    +--------------------------+-------------------------------------------+
    
    | 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       | /application/mysql-5.6.36/share/charsets/ |

    2)linux服务器端

    [root@db01 mysql]# cat /etc/sysconfig/i18n

    LANG="zh_CN.UTF-8

    3)临时修改mysql客户端字符集

    mysql> set names utf8;

    Query OK, 0 rows affected (0.00 sec)

    永久修改:

    [client]

    default-character-set=utf8

    4)修改mysql服务器端字符集

    在mysqld下添加default-character-set=utf8

    Mysql5.5及其以后版本

    [mysqld]

    character-set-server=utf8

    5)修改库表字符集的方法:

     修改库:alter database databasename character set ******

     修改表:alter table tablename character set ******

    库的修改:

    例如:show create database oldboyG;

    *************************** 1. row ***************************

           Database: oldboy

    Create Database: CREATE DATABASE `oldboy` /*!40100 DEFAULT CHARACTER SET gbk */

    1 row in set (0.00 sec)

    oldboy数据库字符集目前是gbk,将其修改为utf8,命令如下;

    alter database oldboy character set utf8 collate utf8_general_ci ;

    表的修改:

    alter table student character set utf8 collate utf8_general_ci ;

     

    2.2生产环境中字符集的修改

    说明:如何生产环境中没有调整好字符集的设定,而运行之后发现满足不了需求而调整,但不想丢失数据的话,可以进行字符集的修改,直接通过alter database databasename character set ******和alter table tablename character set ******命令进行修改,只能对修改后插入的数据有效,在修改之前插入的数据依然会保留之前的字符集,要想实现对之前数据也能修改字符集,必须将其数据导出,再经过调整重新导入即可。

    模拟过程:

    1) 导出表结构

    mysqldump -uroot -p --default-character-set=utf8 -d oldboy>oldboy.sql

    说明:--default-character-set=utf8 :以什么字符集连接 -d:只导出表结构,不导出数据

    手工修改oldboy.sql表中的字符集为新的字符集。

    2) 确保数据库不再更新数据,导出数据。

    mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=gbk oldboy>data.sql

    参数说明:

    --quick:功能是从服务器一次一行检索表中的行,而不是检索所有的行,并在输出前将它缓存到内存中,用于转储较大的表。

    --extended-insert:使转储文件更小,重新载入文件可以加速插入。

    --no-create-info:不会重新创建转储表create table语句。

    --default-character-set=gbk:保留原有导出数据的字符集,这样导出的文件不会出现·乱码。

    3)打开data.sql,将set names gbk 修改为 set names utf8

    4)使用新的字符集创建新的数据库

       show create database oldboy default charset utf8;

    5)创建表结构,执行oldboy.sql。

    mysql -uroot -p oldboy<oldboy.sql

    6)重新导入数据u,执行data.sql。

       mysql -uroot -p oldboy<data.sql

  • 相关阅读:
    P5047 [Ynoi2019 模拟赛] Yuno loves sqrt technology II
    P4887 【模板】莫队二次离线(第十四分块(前体))
    SP20644 ZQUERY
    企业战略管理【0612】
    管理经济学【0812】
    商务沟通[0664]
    国际企业管理【0813】
    社区管理【0272】
    战略管理【1059】
    管理沟通【1279】
  • 原文地址:https://www.cnblogs.com/sykblogs/p/9249917.html
Copyright © 2011-2022 走看看