(3.16)mysql基础深入——mysql字符集
(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字符集的更多相关文章
- (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb)
(3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb) 关键词:mysql日志文件,mysqldumpslow分析工具 目录:日志文件的分类 1. ...
- MySQL基础、MySQL安装和MariaDB安装
MySQL基础 目录 MySQL基础 关系型数据库介绍 数据结构模型 RDBMS专业名词 关系型数据库的常见组件 SQL语句 MySQL安装与配置 MySQL安装 MariaDB安装 关系型数据库介绍 ...
- (3.15)mysql基础深入——mysql默认数据库/系统数据库
(3.15)mysql基础深入——mysql默认数据库 关键词:Mysql默认数据库,mysql系统数据库 系统数据库的组成 一共4个 [1]information_schema(可以理解成字典表) ...
- (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest【待完善】
(3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢 ...
- (3.13)mysql基础深入——mysql日志分析工具之mysqlsla【待完善】
(3.13)mysql基础深入——mysql 日志分析工具之mysqlsla 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢查询日志分析工具 ...
- (3.11)mysql基础深入——mysql文件分类与配置文件管理
(3.11)mysql基础深入——mysql文件分类与管理 关键词:mysql配置文件,mysql参数文件,mysql中的my.cnf 目录:mysql数据库文件分类: [1]参数文件:my.cnf ...
- (3.4)mysql基础深入——mysql.server启动脚本源码阅读与分析
(3.4)mysql基础深入——mysql.server启动脚本源码阅读与分析 my.server主要分为3大部分 [1]变量初始化部分 [2]函数声明部分 [3]具体执行部分 #!/bin/sh # ...
- (3.2)mysql基础深入——mysql源码阅读工具安装与应用
(3.2)mysql基础深入——mysql源码阅读工具安装与应用 关键字:mysql源码阅读工具 工具列举:一般多用[1][2][3]吧 [1]source insight [2]写字板/记事本 UE ...
- (3.1)mysql基础深入——mysql二进制与源码目录结构介绍
(3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...
随机推荐
- docker中,将容器中的文件拷贝到宿主机上
需求说明: 今天在做docker修改配置文件的问题,一个容器要使用另外容器的一个配置文件,但是在宿主机上没有, 就考虑将容器中的文件拷贝到宿主机上,在此记录下操作过程. 操作过程: 1.通过docke ...
- [Bayes] Hist & line: Reject Sampling and Importance Sampling
吻合度蛮高,但不光滑. > L= > K=/ > x=runif(L) > *x*(-x)^/K)) > hist(x[ind],probability=T, + xla ...
- [JS] ECMAScript 6 - Inheritance : compare with c#
这一章,估计是js最操蛋的一部分内容. 现代方法: 简介 Object.getPrototypeOf() super 关键字 类的 prototype 属性和__proto__属性 原生构造函数的继承 ...
- 【GIS】Vue esri-leaflet
1.npm install esri-leaflet --save 2.引入包 import Leaflet from "leaflet"; var esri = require( ...
- AnalyticDB - 分析型数据库
https://yq.aliyun.com/teams/31?spm=5176.7937365.1120968.ee1.78505692UL9DhG 分析型数据库(AnalyticDB)是一种高并发低 ...
- 【死磕jeesite源码】mybatis动态调用表名和字段名
本文转载自夏雪冬日 一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用功能.今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,如某张表的某些字 ...
- Atom与markdown
简述 Atom是github开发的开源跨平台的编辑器,Atom的强大可以与大名鼎鼎的Sublime Text相媲美.因为使用过Sublime Text,所以用Atom上手很快.这篇文章主要介绍使用At ...
- vmware虚拟机的tomcat启动以后,主机无法访问
处理: 关闭防火墙服务:/etc/init.d/iptables stop ..................... 在wmware中安装linux后安装好数据库,JDK及tomcat后启动服务,虚 ...
- python的数据结构之栈
栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶.栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构. 由于栈具有后入先出的特点,所以任何不在栈顶的元素 ...
- 火狐浏览器报错“support.mozilla.org
火狐浏览器有时候再打开新网页会报此错“support.mozilla.org 有时候火狐浏览器会出现如下状况 解决方法 在地址栏键入”about:config” 点击“我了解此风险” 在下方任意位置右 ...