字符集
字符集
1.什么是字符集(Charset)
#是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。
#MySQL中常见的字符集
1)UTF8
2)LATIN1
3)GBK
mysql> show charset;
mysql> show collation;
2.字符集校验规则
#规则的创建语法 指定字符集与校验规则
mysql> create database db2 charset utf8 collate utf8_general_ci;
'不加这么一串创建也可以 但是需要默认字符集为utf8 在配置文件里加上就可以
vim /etc/my.cnf
[mysqld]
character_set_server=utf8
1)ci:大小写不敏感
2)cs或bin:大小写敏感
当你去查询数据时 其实是区分大小写的 但是不敏感
3.统一字符集
工具修改字符集
系统修改字符集
#CentOS6:
[root@db01 ~]# vim /etc/sysconfig/i18n
#CentOS7:
[root@db01 ~]# vim /etc/locale.conf
LANG="en_US.UTF-8"
4.字符集设置
1.操作系统级别
[root@db01 ~]# source /etc/sysconfig/i18n
[root@db01 ~]# echo $LANG
zh_CN.UTF-8
2.MySQL实例级别
#方法1:在编译安装时候就指定如下服务器端字符集。
cmake .
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
#方法2:在配置文件中设置字符集
[mysqld]
character-set-server=utf8
3.建库级别
mysql> create database oldboy charset utf8 default collate = utf8_general_ci;
4.建表级别
mysql> create table mysql.oldboy(id int)charset utf8;
#表是跟着库走的,库是什么字符集表就是什么字符集
5.生产环境更改数据库(含数据)字符集的方法
mysql> alter database oldboy CHARACTER SET utf8 collate utf8_general_ci;
mysql> alter table t1 CHARACTER SET utf8;
6.修改数据库实例字符集
#临时生效
mysql> set character_set = 'gbk';
mysql> set character_set_client = 'gbk';
#全局生效
mysql> set global character_set_client = 'gbk';
#永久生效
vim /etc/my.cnf
character-set-server=utf8
问题
假设我现在有一万张表,需要修改字符集从utf8到gbk,怎么做?
[root@db02 ~]# mysqldump -A /tmp/full.sql
[root@db02 ~]# vim /tmp/full.sql
:%s#utf8#gbk#g
[root@db02 ~]# mysql < /tmp/full.sql