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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值