Mysql系列-字符集

字符集

怎样选择合适的字符集

  • 如果应用程序需要发布到很多国家和地区,需要支持各种各样的文字,则选择Unicode编码,Mysql中即UTF-8.q如果需要将数据导入数据库,这时候要注意数据库字符集对数据字符集的兼容性,最好一致。
  • 如果数据库支持一般中文,数据量很大,性能要求高,那么应该选择双字节定长编码的中文字符集,比如GBK。因为相对于UTF-8而言GBK每个汉字只需要2个字节,而UTF8每个汉字需要3个字节。
  • 如果数据库需要做大量的检索、比较、排序,应该选择定长字符集。

查看字符集

字符集和校对规则是一对多的关系
show character set; //查看数据库可用的所有字符集
show collation like ‘%gbk%‘; //查看字符集的校对规则
校对规则命名约定:
_ci:大小写不敏感,_cs:大小写敏感,_bin:二进制值比较

MySQL字符集设置

MySQL的字符集和校对规则分四个级别的默认设置:
服务器级、数据库级、表级、字段级

服务器级:
在MySQL服务启动时来确定
1.在my.cnf中设置:[mysqld] character-set-server=gbk
2.在启动选项中指定:mysqld --character-set-server=gbk
3.在编译时指定:shell> cmake . -DDEFAULT_CHARSET=gbk
在没有指定校对规则的情况下,使用默认的校对规则。
//查询当前服务器的字符集
show variables like ‘character_set_server‘;
//查询当前服务器的校对集
show variables like ‘collation_server‘;

数据库级:
在创建数据库的时候指定,也可以在创建完成之后通过alter database命令修改。推荐在创建数据库的时候显式指定字符集和校对规则,如果没有指定,则默认使用服务器字符集和校对规则。
show variables like ‘character_set_database‘;
show variables like ‘collation_database‘;

表级:
在创建表的时候指定,如果没有指定则使用数据库的字符集和校对规则。
show create table t1;

列级:
列级别的字符集一般不适用,主要是针对不同字段需要使用不同字符集的情况,遇到的几率很小。

以上四种字符集设置确定的是数据保存的字符集和校对规则,对于实际的应用程序,还存在客户端和服务器之间交互的字符集和校对规则设置。
MySQL提供了三个参数:character_set_client、character_set_connection、character_set_results.分别代表客户端、连接、返回结果的字符集。通长情况下这三种字符集是相同的。
一般通过下面的命令设置这三个参数。
set names utf8; //应用程序每次连接数据库都需要执行。

字符集修改步骤

如果数据库中已经存在数据,此时想修改字符集不能通过 alter table 或者alter database这

两个命令都无法作用于已存在的数据。
一下模拟lantin1字符集数据库修改成GBK字符集数据库的过程

1.导出表结构:
mysqldump -uroot -p --default-character-set=gbk -d databasename> createtab.sql
--default-character-set=gbk:设置以什么方式连接
-d:表示只导出表结构,不导出数据
2.手工修改createtab.sql中表结构定义中的字符集为新的字符集。
3.确保记录不在更新导出所有记录。
mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-

set=latin1 databasename> data.sql
--quick:该选项用于转储大的表
--extended-insert:使用包括几个values列表的多行insert语法,加速插入。
--no-create-info:不导出每个转储表的create table语句。
--default-character-set=latain1:按照原有的字符集导出数据。
4.打开data.sql,将set names latin1 手工修改为:set names gbk;
5.使用新的字符集创建新的数据库
create database databasename default charset gbk;
6.创建表,执行createtab.sql
mysql -uroot -p databasename < createtab.sql
7.导入数据,执行data.sql
mysql -uroot -p databasename < data.sql
时间: 2024-11-05 18:18:34

Mysql系列-字符集的相关文章

屌炸天实战 MySQL 系列教程(二) 史上最屌、你不知道的数据库操作

此篇写MySQL中最基础,也是最重要的操作! 第一篇:屌炸天实战 MySQL 系列教程(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:屌炸天实战 MySQL 系列教程(二) 史上最屌.你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网远程连接法 查看\创建\使用\删除\清空\修改 数据库表(是否可空,默认值,主键,自增,外键) 表内容的增删改查 where条件.通配符_%.限制limit.排序desc\asc.连表join.组合union 查

Mysql事务&字符集

Mysql事务 Innodb存储引擎的中的事务完全服务ACID: 原子性.2.一致性.3.隔离性.4.持久性 理解上和oracle类似. 事务隔离级别 1.Read uncommitted 读未提交: 2.Read committed 读已提交: 3.Repeatable read 可重复读,类似oracle利用undo的闪回查询: 4.Serializable 串行读,很少用. 隔离级别的修改: 通过set命令: 通过修改配置文件,启动数据库的默认隔离级别-mysqld Mysql字符集 My

修改mysql默认字符集

(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,ubuntu下mysql的配置文件是在 /etc/mysql/my.cnf下, 我是将这个文件复制到我的 /home/username文件夹下,重命名为 .my.cnf,这样即使配置出错,也不会影响数据库的正常运行 如: [client] default-character-set = utf8 [mysqld] character_set_server = utf8 修改完后,重启mysql的服务, sudo res

了解MySQL的字符集

在数据库中,字符乱码属于常见.多发问题.鉴于本人水平顶多只能归于不入流之类,写这篇文章时内心诚惶诚恐,实在担心误导大家.内容仅供参考,若有错误,请各位及时指出,我也好学习提高! MySQL的字符集有4种级别的设置,分别是:服务器级.数据库级.表级.字段级. 一.服务器级字符集 (1).可以在my.cnf中设置 [mysqld] default-character-set=gbk (5.1) character-set-server=gbk (5.5) (2).可以在启动选项中设置 mysqld

修改mysql默认字符集的方法

mysql默认字符集能否进行修改呢?答案是肯定的,下面就将教您两种修改mysql默认字符集的方法,希望对您学习mysql默认字符集方面能有所启迪. (1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值, 如 default-character-set = utf8  character_set_server = utf8 修改完后,重启mysql的服务,service mysql restart 使用 mysql> SHOW VARIABLES LIKE 'charact

mysql系列之多实例2----基于多配置文件

经过上一篇博文mysql系列之多实例1----介绍对mysql多实例进行了简单的介绍,本片博文将开始针对mysql多实例的第一种实现方案,基于多配置文件的mysql多实例进行部署实现. 环境: CentOS 6.5 x86_64位 采用最小化安装,系统经过了基本优化 selinux 为关闭状态,iptables 为无限制模式 mysql版本:mysql-5.5.38 源码包存放位置:/usr/local/src 源码包编译安装位置:/usr/local/mysql 数据库存放位置:/mydata

MySQL utf8mb4 字符集:支持 emoji 表情符号

㈠ 序言 为了应对无线互联网的机遇和挑战.避免 emoji 表情符号带来的问题. 涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集 这必须要作为移动互联网行业的一个技术选型的要点 ㈡ 限制 需要 >= MySQL 5.5.3版本.从库也必须是5.5的了.低版本不支持这个字符集.复制报错 ㈢ 简要步骤 以下是一个未升级到 5.5.3 的配置步骤: ① 备份数据库 ② 升级 MySQL Server 到 v5.5.3+ ③ 修改 database.table和column字符

MYSQL系列1_MySQL的安装,可视化工具的使用,以及建库建表等

原文:MYSQL系列1_MySQL的安装,可视化工具的使用,以及建库建表等 大家都知道MYSQL是开源的数据库,现在MYSQL在企业中的使用也越来越多,本人之前用过SQL SERVER数据库,因业务需要和自己的兴趣想要学习MYSQL,对于MYSQL,本人还是新手,请大家多多指正. 1.安装mysql 本人安装的版本是mysql5.6 Mysql 5.6的安装包下载地址:http://pan.baidu.com/s/1o6qHG5G 安装过程比较简单,基本上是下一步下一步,安装过程中需要设置mys

MySQL系列(一)

MySQL系列(一)---基础知识大总结 前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里作简单概括性的介绍,具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续会慢慢补充完善. 目录 MySQL系列(一):基础知识大总结 MySQL系列(二):MySQL事务 MySQL系列(三):索引 数据库和数据库软件 数据库是保存有组织数据的容器 DBMS是为管理数据库而设计的软件管理系统,MYSQL.ORACLE 等是数据库管理系统 MYSQL MYSQL是一种数据库管