返回
编程
分类

必威官网亚洲体育MySQL字符集包括字符集和校对规则,因为数据库存储的数据大部分是各种文字

日期: 2020-01-02 08:01 浏览次数 : 60

mysql中的字符集

字符集是一套文字符号及其编码,比较规则的集合。第一个字符集是ascll(american standard code for information interchange)。

概述

从本质上来讲,计算机只识别二进制代码,因此,不论计算机程序还是其处理的数据,最终都必须转化为二进制码,计算机才能识别。人们给每一个文字符号编码以便计算机识别处理,这就是计算机字符集的由来。

必威官网亚洲体育 1

必威官网亚洲体育 ,选择合适的字符集

MySQL5.6支持几十种字符集,包括UCS-2、UTF-16、UTF-16LE、UTF-32、UTF-8、utf8mb4等Unicode字符集,选择字符集可以考虑如下几个因素:

满足应用支持语言需求,如果应用需要处理各式各样的文字,应该选择Unicode编码,对于MySQL,建议为UTF-8; 如果应用中涉及已有数据导入,要充分考虑数据库字符集对已有数据的兼容性。 如果数据库只需要支持一般中文,数据量大,性能要求较高,那可以选择双字节定长编码的中文字符集,比如GBK,因为相对于UTF-8,GBK比较小,每个汉字只占2个字节,utf-8汉字需要3个字节;相反,如果主要处理英文字符,选择UTF-8更好,因为GBK,UCS-2,UTF-16中的西文字符编码都是2个字节。 如果数据库需要做大量的字符运算,选择定长字符集更好一些。 如果所有的客户端程序都支持相同的字符集,则优先选择该字符集作为数据库的字符集。

常用字符集比较:
必威官网亚洲体育 2

 1.  选择合适的字符集

MySQL字符集

MySQL支持在同一台服务器,同一个数据库,甚至同一个表的不同字段都可以使用不同的字符集。 MySQL字符集包括字符集和校对规则;其中字符集用来定义MySQL存储字符串的方式,校对规则用来定义字符串比较方式,字符集与校对规则是一对多的关系。 MySQL有4个级别的默认设置:服务器级,数据库级,表级,字段级。服务器级可以在MySQL配置文件(my.cnf)中设置character-set-server=utf-8;其他是创建时候设置。 对于实际应用中, 还存在客户端和服务器之间的字符集和校对规则设置。MySQL提供3个参数设置:character_set_client、character_set_connection、character_set_results分别代表客户端、连接、返回结果的字符集。通常不会单独设置这3个参数,可以通过命令:set names ***来设置,还可以设置my.cnf中的default-character-set=utf-8来设置。

MySQL字符集系统变量含义如下:

必威官网亚洲体育 3

概述 从本质上来讲,计算机只识别二进制代码,因此,不论计算机程序还是其处理的数据,最终都必须转化为二进制码,计...

  对于数据库来说,字符集很重要,因为数据库存储的数据大部分是各种文字,字符集对数据库的存储,处理性能,以及日后系统的移植,推广都有会影响
  如何选择呢?
    UTF-8: 如果应用要处理各种各样的文字,或将发布使用不同语言的国家或地区,就应该选择 Unicode字符集,对于mysql 目前就是UTF-8。如果主要处理英文字符,仅有少量汉字数据,那么选择utf-8更好。因为gbk,ucs-2,utf-16对西文字符编码都是2字节,会造成不必要的开销。
    GBK: 如果数据库只需要支持一般中文,数据量很大,性能要求也很高,那应该选择双字节定长编码的中文字符集GBK。相对于uft-8而言,gbk比较“小”,每个汉字只占2个字节,而utf-8汉字编码需要3个字节,这样可以减少磁盘I/0, 数据库缓存,以及网络传输的时间。
    如果数据库需要做大量的字符运算,如比较,排序等,选择定长的字符集可能更好,因为定长字符集比变长处理速度快。如gbk固定双字节,utf-32固定4字节。
    客户端程序使用的字符集, 在数据库端应优先选择该字符集,避免因字符集转换带来性能开销和数据损失。

2. mysql 字符集

  mysql 支持几十种字符集。 如下图所示:

SHOW CHARACTER SET;

  必威官网亚洲体育 4

3. mysql字符集的设置

  有4个级别的默认设置:服务器级,数据库级,表级,字段级。

   3.1 在服务器级,对my.cnf设置,在启动mysql服务

  必威官网亚洲体育 5

  3.2 数据库级

   如果数据库中已有记录,修改字符集对原有的记录并没有影响,只对新记录使用。

 -- 查看当前数据库字符集
SHOW VARIABLES LIKE 'character%';

必威官网亚洲体育 6

-- 修改数据库字符集 
ALTER DATABASE 数据库名 CHARACTER SET utf8;

  3.3 表级

   可以通过alter table来修改,如果表中已有记录,修改字符集对原有的记录并没有影响,只对新记录使用。

--  查看
SHOW CREATE TABLE t;

必威官网亚洲体育 7

--  修改表的字符集
ALTER TABLE  表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

         3.4 列级

                   这种控制一般机率比较小,只是给我们提供了一个灵活设置的手段。

4  字符集修改 

  如果在应用开始阶段没有正确设置字符集,在运行一段时间后发现不能满足要求需要调整,这时不能通过alter database character set 或alter tablename character set
命令进行,因为这两个命令都不会更新已有记录的字符集,对于已有的记录的字符集调整,需要先将数据导出,经过适当的调整重新导入后才完成。
  需要使用mysqldump工具来做导出导入,这里就不在演示只标记下:

以下是将iatin1字符集的数据库修改成GBK字符集的数据库过程
4.1 导出表结构:
mysqldump -uroot -p --default-character-set=gbk -d databasename> createtab.sql
4.2导出数据
    mysqldump -uroot -p --quick --no-create-info --extended-insert
    --default-character-set=latin1 databasename> data.sql
4.3  打开data.sql 将set names iatin1 修改成set names gbk
4.4 使用新的字符集创建新的数据库
        create database databasename default charset gbk;
4.5创建表 ,执行createtab.sql
      mysql  -uroot  -p databasename < createtab.sql
4.6导入数据,执行data.sql
      mysql  -uroot  -p databasename < data.sql