(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. 如何修改DEDECMS文章标题长度

    方法一:      首先你要进入dedecms后台,系统——系统基本参数——其他选项——文档标题最大长度——在这修改为200或更大(其实200应该是足够了). 方法二:      进入phpmyadm ...

  2. [Android Studio] Using Java to call OpenCV

    Environment: Android studio 2.2.3, OpenCV 2.4.9 For Android, Android 6 with api 23 for X86 一.File: b ...

  3. 网络编程 -- RPC实现原理 -- Netty -- 迭代版本V1 -- 入门应用

    网络编程 -- RPC实现原理 -- 目录 啦啦啦 V1——Netty入门应用 Class : NIOServerBootStrap package lime.pri.limeNio.netty.ne ...

  4. [Android] 基于 Linux 命令行构建 Android 应用(一):关于 Android 项目

    关于 Android 项目 项目是保存源代码和资源文件的容器. 谷歌提供的 Android SDK 工具只能对具有固定目录结构的项目进行编译和打包.因此强烈建议使用 Eclipse + ADT 或者 ...

  5. Caused by: java.lang.ClassNotFoundException: javax.xml.bind.Validation

    Caused by: java.lang.ClassNotFoundException: javax.xml.bind.Validation JAXB API是java EE 的API,因此在java ...

  6. scp出现Permission denied,please try again的解决办法

    当scp的时候我们发现错误,被拒绝,是因为ssh的权限问题,需要修改权限,进入到/etc/ssh文件夹下,用root用户修改文件sshd_config 将PermitRootLogin no / wi ...

  7. G - Line of Sight

    来源poj2074 An architect is very proud of his new home and wants to be sure it can be seen by people p ...

  8. Men and women can't be 'just friends

    Men and women can't be 'just friends' Can heterosexual men and women ever be "just friends" ...

  9. 自建docker swarm体验简单之美

    之前用的阿里云容器服务,但由于acsrouting的路由错乱问题,被逼上自建docker swarm的梁山.今天尝试自己搭建docker swarm,竟然轻松搞定,简单的超乎想象. 以下是实际搭建操作 ...

  10. vins-mono代码解读

    系统框架介绍 1. Measurement Preprocessing(观测预处理):对图像提feature做feature tracking,输出tracked feature list, 对IMU ...