《Mysql - 字符集》

一:操作总结

  - SET NAMES utf8;

    - 生产环境最常用的字符集指令。一次基本可以涵盖你本次操作的字符集。

    - 操作作用域为 session.

  - 数据库

    - 建立指定字符集

      - CREATE DATABASE 数据库名 CHARSET 字符集;

    - 查看使用字符集 

      - SHOW CREATE DATABASE 数据库名;

    - 修改字符集

      -  ALTER DATABASE 数据库名 CHARSET 字符集;

  - 表

    - 建立指定字符集

      -  CREATE TABLE 表名 (...) CHARSET=字符集;

    - 修改字符集 

      - ALTER TABLE 表名 CHARACTER SET 字符集;

  - 列

    - 建立指定字符集

      - CREATE TABLE 表名 (字段名 VARCHAR(20) CHARSET 字符集....);

    - 查看表中各列字符集定义

      - SHOW FULL COLUMNS FROM 表名;

 

二:什么是字符集呢?

  - 引用书中的例子:同样是大熊猫,在大陆叫熊猫,在台湾叫猫熊,在美国叫Panda,要到了非洲,可能都不知道叫啥(于是就乱码了)。

  - 在例子之后引入字符集的概念:字符集就是指符号和字符编码的集合

  - 不同地方的字典是不同的,就像你给美国人民看“熊猫两个字”,他们绝对不会联想出是 Panda(大熊猫) 这种动物的。

  - SO,正确的使用字符集是非常重要的,使得输入与输出相匹配,才能出现正确的结果。

 

三:什么是字符集校对规则?(了解)

  - 这里只做了解,因为每种字符集都用默认的校对规则,会在之后讲述。

  - 简单来说,就是一种字符集合的排序规则

 

四:字符集简介

  - GB2312  包含简体中文及常用符号,采用双字节编码方式(一个汉字存两个字节)

  - GBK     包含 中、日、韩 的大字符集,GB2312 可以说是 GBK 的子集,也可以说 GBK 是 GB2312 的超集。也是双字节编码方式。

    - UFT8    支持大部分的常见字符(西、中、日、韩、法、俄),对英文一个字节编码,对于其他(如中文),采用三个字节编码。

  - UTF8MB4 一个字符 4 字节存储,支持的字符最广,占用也最大。(支持 emoji)

 

五:如何选择合适的字符集?

  -  支持多国语言配置, 选择 UTF-8

  -  如果需要兼容老数据,必须选择包含该字符集的字符集合(也就是必须选择包含老数据的字符集)

  -  如果只支持一般中文,数据量大,并且需要较高的性能,请选用GBK(比UTF8占用更小)

  -  需要做字符集运算,选择定长字符,因为定长比不定长处理速度更快

  - 选用字符集之后,请保持所有字符集一致

 

六:查看当前数据库版本支持什么字符集?

  - 可以通过使用 show character set  查看 数据库版本 支持的字符集

 

七:服务端默认字符集用处?

  - 设定 服务端字符集,避免因为服务端字符集和表字符集不同导致的乱码等问题

  - 

  - 在这里涉及几个比较关键的,拿出来说一下

    - 客户端发出的SQL语句,字符集由 character_set_client 来指定。

    - 服务端收到SQL语句,字符集由 character_set_connection 来指定

    - 服务端返回结果,字符集由 character_set_results 来指定。

 

八:如何设定服务端默认字符集?

  - 全局设定

    - 整个 MySQL 服务中生效

    - 写入 Mysql.conf 配置,每次启动 Mysql 服务生效。

      - character_set_server=utf8

    - 客户端设置,修改字符集(重启服务丢失)

      - set global character_set_server=utf8;   

posted @ 2018-09-06 13:18  Zzz哈  Views(149)  Comments(0Edit  收藏  举报