(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. Oracle 11g:bin目录下3个特效权限的文件:root用户所有者 + s权限

  2. spring扩展的常用接口

    一:ApplicationContextAware接口 实现ApplicationContextAware接口,重写setApplicationContext方法,可以将spring容器上下文对象注入 ...

  3. 5、二、App Components(应用程序组件):0、概述

    二.App Components(应用程序组件) 0.概述   App Components Android's application framework lets you create rich ...

  4. 移动端H5混合开发,Touch触控,拖拽,长按, 滑屏 实现方案

    概述 近期由于产品快速原型开发的需要,不想用原声的方式开发App两端一起搞时间来不及,目前产品处于大量上feature的阶段,采用混合开发是最合适的选择,所以花了3天的时间研究怎么去实现移动端,拖拽, ...

  5. AJAX返回总是ERROR或是没有数据的问题

    如果总是到ERROR,是因为async没有定义为false,设置为同步,数据类型要设置为text,不要用json. 示例: if (IDcard != "") { $.ajax({ ...

  6. 笔记本串口连接IBM 小机

    首先要有一根两头母的九针串口线&USB转串口线其次,配置波特率19200.数据位8.停止位1.无校验位.流控:Xon/Xoff P4是9600,P5 P6都是19200了( 默认是19200波 ...

  7. 阿里云容器服务与ASP.NET Core部署:用 docker secrets 保存 appsettings.Production.json

    这是我们使用阿里云容器服务基于 docker 容器部署 asp.net core 应用遇到的另一个问题 —— 如果将包含敏感信息的应用配置文件 appsettings.Production.json ...

  8. [No0000144]深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing)理解堆与栈1/4

    前言   虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC).另外,了解内存管理可以帮助我们理解在每一个程 ...

  9. Spring <context:annotation-config> 与<context-component-scan> 的作用

    <context:annotation-config> 与<context-component-scan> 的作用 <context:annotation-config& ...

  10. 设置shell脚本静默方式输入密码方法

    stty命令是一个终端处理工具.我们可以通过它来实现静默方式输入密码,脚本如下 #!/bin/sh echo –e “enter password:” stty –echo               ...