mysql 建表

那天在创建表的时候,每个创建的字段都需要加上如下一行

CHARACTER SET utf8 COLLATE utf8_bin

就查了一下这一行代码

CHARACTER SET
这是设置字符集的,常见的字符集有 utf-8、Unicode、GB2312
mysql 建表_第1张图片
可通过 show charset;来查看支持的字符集

COLLATE
即比对方法。用于指定数据集如何排序,以及字符串的比对规则。
mysql 建表_第2张图片
mysql 建表_第3张图片
可通过

show collation;
show collation like 'utf8%';

来查看每种字符集对应的有哪些collation。

后缀是 ci ,是 case insensitive,表示大小写不敏感;而 cs,是 case sensitive,表示大小写敏感。

会发现 utf8 字符集是没有 cs 的,但是 utf8_bin,这个就是大小写敏感。


设置 charset 和 collation

1 服务器级别

show global variables like 'character_set_server';
show global variables like 'collation_server';

mysql 建表_第4张图片
修改配置文件 my.ini

character-set-server=utf8
collation_server=uft8_general_ci

默认字符集是 Iatin1

如果将字符集设置为 utf8,collation 默认是 utf8_general_ci

2 数据库级别

select * from information_schema.schemata where schema_name='myweb';

mysql 建表_第5张图片
默认是使用服务器级别的配置

如要单独设置,可以创建表时指定

CREATE DATABASE myweb DEFAULT CHARACTER SET utf8mb4  COLLATION utf8mb4_general_ci

3 数据表级别

show create table myweb.w_account;

默认是使用数据库级别的配置

如要单独设置,可以创建表的时候指定

CREATE TABLE `w_account` (
  `oid` varchar(32) NOT NULL COMMENT 'oid'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='账号表'

4 列级别
默认是使用数据库级别的配置

如要单独设置,可以创建或修改字段的时候指定

ALTER TABLE w_account MODIFY oid VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'oid'

你可能感兴趣的:(数据库)