(3.16)mysql基础深入——mysql字符集

关键字:mysql字符集,mysql编码

目录

1、概念

2、常用的字符编码

3、查看mysql字符集

【3.1】查看服务器支持的字符集

【3.2】查看字符集的校对规则/排序规则

【3.3】查看当前数据库的字符集

【3.4】查看数据库的校对规则/排序规则

4、mysql字符集设置

【4.1】设置服务器级别字符集

  【4.1.1】编译时设置  【4.1.2】my.cnf配置文件设置  【4.1.3】环境变量设置  【4.1.4】连接级别设置

【4.2】设置数据库级别字符集

  【4.2.1】创建数据库时设置字符集

【4.3】设置表级别/列级别字符集设置、排序规则(校对规则)设置

  【4.3.1】设置表级别字符集 

  【4.3.2】设置列级别字符集

  【4.3.3】设置表级别排序规则(校对规则)

  【4.3.4】设置列级别排序规则(校对规则)

5、mysql字符集的修改

  【5.1】服务器级别字符集修改  

  【5.2】数据库级别字符集修改

  【5.3】表级别

  【5.4】列级别

  【5.5】连接级别

6、mysql字符集使用注意事项

  大改小正常,小改大不建议

1、概念:

  字符集:是一套字符与字符编码的集合,用于显示一些抽象的符号

  校验规则:字符集的排序规则

2、常用的字符编码

  ASCII:美国信息交换码  gb2312:不到8K字符集,中文字符集,包含ASCII

  GBK:微软研究出来的在gb2312  latin1:拉丁文

  UniCode:万国码,所有国家的所有字符代码都包含

  UTF8是unicode万国码/统一码的优化实现

  UTF8mb4是UTF8的更高级版本,修复了UFT8对一些诸如表情等字符集不支持等问题。

  UTF8mb4是UTF8的超集

注意:

  gbk :1个字符占用2个字节  UTF8:一个字符占3个字节  UTF8mb4:一个字符占用4个字节

3、查看mysql字符集

【3.1】查看服务器支持的字符集

  show character set;

  select * from information_schema.character_sets;

  select * from information_schema.collations; 

【3.2】查看字符集的校对规则/排序规则

  show collation;

  show collation like '%utf8%'

【3.3】查看当前数据库的字符集

  show variables like 'character%'; 

  

character_set_client      :客户端
 character_set_connection     :客户端与服务器连接的字符集
 character_set_database     :默认数据库的字符集
 character_set_filesystem    :在操作系统上,文件名转化为这个字符集
 character_set_results       :返回给客户端的结果集 
 character_set_server       :数据库服务的字符集
 character_set_system      :系统的字符集
 character_sets_dir        :数据库字符集目录

【3.4】查看数据库的校对规则/排序规则

  show variables like 'collation%';

    

  

  ci:不区分大小写的排序规则

  cs:区分大小写的排序方式

  bin:二进制的排序方式

4、mysql字符集设置

【4.1】设置服务器级别字符集

【4.1.1】编译时设置  【4.1.2】my.cnf配置文件设置  【4.1.3】环境变量设置  【4.1.4】连接级别设置

【4.1.1】编译时设置  

  cmake:

    --default_charset=utf8 --default_collation=utf8_general_ci -dwith_extra_charsets=all

【4.1.2】配置文件my.cnf指定  

 

[mysqld]

character_set_server=utf8
-- skip-character-set-client-handshake= 客户端按照服务器端字符集
#即客户端忽略本身字符集,而使用服务器端字符集,1为生效,0为不生效 #否则需要在客户端指定
[client]
default-character-set=utf8

  

【4.1.3】环境变量配置

    vim ~/.bash_profile

    输入:export LANG=en_US.UTF8

      

    then

    source ~/bash_profile

      

    其他任意窗口,直接到linux界面,source一下该文件即可。

【4.1.4】连接级别设置

#查看
show variables like 'character%'; #启动时指定
mysqld --character-set-server=utf8 & #客户端连接时指定
mysql -uroot -p --character-set-server=utf8 #临时指定
set character_set_client   = utf8
set character_set_connection = utf8  
set character_set_database   = utf8  
set character_set_results   = utf8
set character_set_server    = utf8 #统一设置
set names utf8;
#相当于
set character_set_client   = utf8
set character_set_connection = utf8
set character_set_results   = utf8
 

 

【4.2】设置数据库级别字符集

【4.2.1】创建数据库时设置字符集

-- 查看
show create database test; -- 查看排序规则
show variables like 'collation%'; -- 建库时设置字符集,建库时设置排序规则
create database test charset=utf8 collate utf8_general_ci;

-- 子句:
charset =utf8;  
default charset=utf8;
charset utf8;
default charset utf8;
char set=utf8;
default char set utf8;
default char set utf9;
character set=utf8;
default character set=utf8;
character set utf8;
default character set utf8;

【4.3】设置表级别/列级别字符集设置、排序规则(校对规则)设置

【4.3.1】设置表级别字符集

  

-- 查看
show create table test101;

-- 建表时使用
create table test101(
n1 int,
n2 int
) engine=innodb default charset=utf8;

【4.3.2】设置列级别字符集

-- 查看
show create table test102; -- 建表时使用
create table test102(
n1 varchar(10) char set utf8,
n2 varchar(10) charset utf8
) engine=innodb ;

【4.3.3】设置表级别排序规则(校对规则)

-- 查看
select * from information_schema.columns where table_name = 'test102'; -- 建表时设定表级排序规则
create table test102(
n1 varchar(10) char set utf8,
n2 varchar(10) charset utf8
) engine=innodb default charset utf8 collate utf8_general_ci;

【4.3.4】设置列级别排序规则(校对规则)

-- 查看
select * from information_schema.columns where table_name = 'test102'; -- 建表时设定表级排序规则
create table test102(
n1 varchar(10) char set utf8 collate utf8_general_ci,
n2 varchar(10) charset utf8 collate utf8_general_ci
) engine=innodb ;

5、mysql字符集的修改

【5.1】服务器级别字符集修改  
【5.2】数据库级别字符集修改
【5.3】表级别
【5.4】列级别
【5.5】连接级别
 
 
 
【5.1】服务器级别字符集修改

  -- 注意:生产环境不要随便改,会出问题。下面只针对新库或没有数据的库;

【5.1.1】临时更改:set global character_set_server=utf8;

【5.1.2】永久修改:修改my.cnf

  [mysqld]

  character_set_server=urtf

【5.2】数据库级别字符集修改

【5.2.1】临时更改:set global character_set_server=utf8;

【5.2.2】永久修改:alter database test character set utf8 collate utf8_general_ci;

【5.3】表级别

alter table test default charset utf8;

【5.4】列级别

alter table test.n1 change dname dname varchar(15) character set utf8 collate utf8_general_ci;

【5.5】连接级别

【5.5.1】临时修改:set names utf8;

【5.5.2】永久修改:

[client]

default-character-set=utf8

6、mysql字符集使用注意事项

修改建议:

  大字符集-》改小字符集 ,正常

  小字符集-》改大字符集,故障

比如,你好   在gbk里面,1个汉字=2个字符,这里只需要varchar(4)即可

但是 在utf8里面,1个汉字=2个字符,这里需要varchar(6)

所以,gbk->utf8 会因为字段空间不够而导致截断。反之则没关系

如何解决小字符集转大字符集?

比如gbk 该字段有2个汉字 "你好",字段类型为varchar(4)

如果要转成UTF8,把字段改成varchar(6)即可

(3.16)mysql基础深入——mysql字符集的更多相关文章

  1. (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb)

    (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb) 关键词:mysql日志文件,mysqldumpslow分析工具 目录:日志文件的分类 1. ...

  2. MySQL基础、MySQL安装和MariaDB安装

    MySQL基础 目录 MySQL基础 关系型数据库介绍 数据结构模型 RDBMS专业名词 关系型数据库的常见组件 SQL语句 MySQL安装与配置 MySQL安装 MariaDB安装 关系型数据库介绍 ...

  3. (3.15)mysql基础深入——mysql默认数据库/系统数据库

    (3.15)mysql基础深入——mysql默认数据库 关键词:Mysql默认数据库,mysql系统数据库 系统数据库的组成 一共4个 [1]information_schema(可以理解成字典表) ...

  4. (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest【待完善】

    (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢 ...

  5. (3.13)mysql基础深入——mysql日志分析工具之mysqlsla【待完善】

    (3.13)mysql基础深入——mysql 日志分析工具之mysqlsla 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢查询日志分析工具 ...

  6. (3.11)mysql基础深入——mysql文件分类与配置文件管理

    (3.11)mysql基础深入——mysql文件分类与管理 关键词:mysql配置文件,mysql参数文件,mysql中的my.cnf 目录:mysql数据库文件分类: [1]参数文件:my.cnf ...

  7. (3.4)mysql基础深入——mysql.server启动脚本源码阅读与分析

    (3.4)mysql基础深入——mysql.server启动脚本源码阅读与分析 my.server主要分为3大部分 [1]变量初始化部分 [2]函数声明部分 [3]具体执行部分 #!/bin/sh # ...

  8. (3.2)mysql基础深入——mysql源码阅读工具安装与应用

    (3.2)mysql基础深入——mysql源码阅读工具安装与应用 关键字:mysql源码阅读工具 工具列举:一般多用[1][2][3]吧 [1]source insight [2]写字板/记事本 UE ...

  9. (3.1)mysql基础深入——mysql二进制与源码目录结构介绍

    (3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...

随机推荐

  1. tcp 三次握手 转

    转载 记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有下文了,面试官貌似也没有深入下 ...

  2. linux swoole

    swoole安装需要:linux7 +php5.3.10以上版本+gcc-4.4 或更高版本 下载地址: https://github.com/swoole/swoole-src/releases h ...

  3. 和我一起学Effective Java之创建和销毁对象

    前言 主要学习创建和销毁对象: 1.何时以及如何创建对象 2.何时以及如何避免创建对象 3.如何确保它们能够适时地销毁 4.如何管理对象销毁之前必须进行的清理动作 正文 一.用静态工厂方法代替构造器 ...

  4. bigtable原理

    bigtable原理 数据模型 A Bigtable is a sparse, distributed, persistent multi-dimensional sorted map. The ma ...

  5. 总结一下搭建简单Web服务器的一些方法

    使用nodejs+anywhere模块搭建静态文件服务器 anywhere随时随地将你的当前目录变成一个静态文件服务器的根目录. 安装npm install anywhere -g,然后进入任意目录在 ...

  6. [OpenCV] Samples 14: kalman filter

    Ref: http://blog.csdn.net/gdfsg/article/details/50904811 #include "opencv2/video/tracking.hpp&q ...

  7. How to hard reset Visual Studio instance

    When developing extensions sometimes you just mess up, others someone else does. If you start gettin ...

  8. spray 处理 response 的通用函数

    def handleActorResponse: PartialFunction[Try[Any], (StatusCode, ResponseResult)] = { case Failure(ex ...

  9. 【代码审计】五指CMS_v4.1.0 后台存在SQL注入漏洞分析

      0x00 环境准备 五指CMS官网:https://www.wuzhicms.com/ 网站源码版本:五指CMS v4.1.0 UTF-8 开源版 程序源码下载:https://www.wuzhi ...

  10. linux命令学习(4):cd命令

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的.所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. 1. 命 ...