`
AllenHU0320
  • 浏览: 82991 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL字符集

 
阅读更多

字符集就是指符号和字符编码的集合

用户可以在服务器、数据库、表甚至列一级进行设置

校对规则就是指定义的一种比较字符集中字符的规则

查看数据库支持的字符集:

(system@localhost) [(none)]> show character set;

最常用的字符集

GBK

GB2312

UTF8

某个字符集支持哪些校对规则:

(system@localhost) [(none)]> show collation like 'latin1%';

 

服务端设置默认字符集:

编译MySQL软件时指定

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

 

在启动MySQL服务时指定

--character_set_server

--collation_server

 

参数文件中配置

character_set_server=utf8

collation_server=utf8_general_ci

 

MySQL服务运行期间修改

(system@localhost) [(none)]> show global variables like ‘%server’;

(system@localhost) [(none)]> set global character_set_server=gbk;

 

连接时指定字符集:

(system@localhost) [(none)]> show variables like ‘character_set_client’;

(system@localhost) [(none)]> set character_set_results=gbk;

 

尽量保持character_set_clientcharacter_set_connectioncharacter_set_databasecharacter_set_resultscharacter_set_server字符集是一致的

 

SET NAMES命令和SET CHARACTER SET的功能是指定客户端当前会话使用的字符集,仅作用于当前会话,退出登录后所做的设置就失效了

(system@localhost) [(none)]> set names utf8;

相当于同时设置了character_set_clientcharacter_set_connectioncharacter_set_results

(system@localhost) [(none)]> set character set utf8;

相当于同时设置了character_set_clientcharacter_set_results

 

MySQL数据库中字符集有4种不同的粒度

server全局级

database数据库级

table表级

column列级

 

MySQL字符集错误,1366号警告或错误要注意

sql_mode用来控制SQL模式,进入5.6版本后,sql_mode默认值改为strict_trans_tables,这个变量值的功能是对于支持事务的存储引擎对象,启动严格限制模式,这种情况下,就会出现插入值非法则直接报错,而非警告

 

 

国家字符集,在MySQL5.6版本中,不管如何设置字符集,当使用N[char/varchar/text]数据类型时,这些列的字符集均为utf8

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics