什么是字符集、字符序?简单的来讲: 字符集(character set):定义了字符以及字符的编码。 字符序(collation):定义了字符的比较规则。 举个例子: 有四个字符:A、B、a、b,这四个字符的编码分别是A = 0, B = 1, a = 2, b = 3。这里的字符 + 编码就构成了字符集(character set)。 若是咱们想比较两个字符的大小呢?好比A、B,或者a、b,最直观的比较方式是采用它们的编码,好比由于0 < 1,因此 A < B。 另外,对于A、a,虽然它们编码不一样,但咱们以为大小写字符应该是相等的,也就是说 A == a。 这上面定义了两条比较规则,这些比较规则的集合就是collation。 一样是大写字符、小写字符,则比较他们的编码大小; 若是两个字符为大小写关系,则它们相等。
服务器端字符集:控制的是,存到mysql中时,字符集控制 客户端字符集: 控制的是用户的输入及显示 系统字符集: 控制的是系统相关的显示,和一些依赖于操做系统的应用
在生产中咱们必须保证操做系统、MySQL客户端实例、MySQL服务器端的字符集保持一致mysql
source /etc/sysconfig/i18n [root@db02 logs]# echo $LANG zh_CN.UTF-8
cmake . -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \
方法2: 在配置文件中设置sql
[mysqld] character-set-server=utf8
mysql> set names utf8; Query OK, 0 rows affected (0.00 sec)
[client] default-character-set=utf8
CREATE DATABASE `oldboy` /*!40100 DEFAULT CHARACTER SET utf8 */ create database oldboy DEFAULT CHARACTER SET UTF8 DEFAULT COLLATE = utf8_general_ci;
建立表数据库
CREATE TABLE `test` ( `id` int(4) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8
help create database; show character set;
alter database oldboy CHARACTER SET utf8 collate utf8_general_ci; alter table t1 CHARACTER SET latin1;