mysql(5.7.17)字符集设置(character_set/collation)

0 查看字符集(character_set/collation)
use information_schema;
desc tables;    --一定记住tables表,information_schema中的metadata都可以查到

-- 查看db的默认,DEFAULT_CHARACTER_SET_NAME/DEFAULT_COLLATION_NAME
select * from schemata where schema_name = ‘db_name‘;

-- 查看table的,只有table_collation字段
select * from tables where table_schema = ‘db_name‘ and table_name = ‘table_name‘;

-- 查看column的,CHARACTER_SET_NAME/COLLATION_NAME都要
select * from columns where table_schema = ‘db_name‘ and table_name = ‘table_name‘;
1
2
3
4
5
6
7
8
9
10
11
--查看mysql支持的character_set,Default collation是默认的"大小写敏感"
select * from information_schema.character_sets;   
--就是执行了上面的sql
show charset;
1
2
3
4

/*
查看各character set的collation,以gbk为例
gbk_chinese_ci是"大小写不敏感",ci是case sensitive的缩写
gbk_bin是"大小写敏感",以二进制(binary)存储
*/
select * from information_schema.collations;
show collation;
1
2
3
4
5
6
7

show variables like ‘character_set%‘;   --查看当前环境的character_set
1

show variables like ‘collation%‘;   --查看当前的collation
1

1 my.ini配置character_set
-- 注意位置,放在[client]和[mysql]都可以,效果相同,以后面的为准。放在[mysqld]下服务不能启动。
default-character-set = utf8

-- 上句设置之后,对应的全局变量改变
character_set_client = utf8
character_set_connection = utf8
character_set_results = utf8

-- 注意位置,放在[mysqld]下
character-set-server = gbk
collation-server = gbk_bin

-- 上句设置之后,对应的全局变量改变
character_set_database = gbk
character_set_server = gbk    --默认的create database db时的character_set,其他的含义待测试,可根据字面单词猜想
collation_database = gbk_bin
collation_server = gbk_bin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2 数据库的character_set指定/修改
-- 默认db的character_set和@@character_set_server一致,table和db一致,column和table一致
create database db;

-- defalut可有可无,注意gbk的default collation(上面有)是gbk_chinese_ci(大小写不敏感)
-- 即使collation_database/server都是gbk_bin,创建的db默认仍是gbk_chinese_ci,这里专门指定
create datadbase db character set gbk collate gbk_bin;
create datadbase db default character set gbk collate gbk_bin;  --正确
alter datadbase db character set gbk collate gbk_bin;       --正确

alter datadbase db convert to character set gbk collate gbk_bin;    --错误,不支持convert to
1
2
3
4
5
6
7
8
9
10
11
3 table的character_set指定/修改
create table t1(c1 varchar2) character set gbk collate gbk_chinese_ci;
-- 测试
insert into t1 values(‘a‘);
select * from t1 where c1 = ‘A‘;    --返回‘a‘,此时‘a‘=‘A‘

--注意以下两种方法的差别,第1句是只是修改默认
alter table t1 character set gbk collate gbk_bin;   --提示Records: 0

--测试
alter table t1 add c2 varchar(50);
insert into t1 values(‘b‘,‘b‘);
select * from t1 where c1 = ‘A‘;    --返回‘a‘,c1仍然是gbk_chinese_ci
select * from t1 where c2 = ‘B‘;    --返回empty,c2是gbk_bin

--已有字段c1,c2及再添加的默认都是gbk_bin
alter table t1 convert to character set gbk collate gbk_bin;    --提示Records: 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
4 column的character_set指定/修改
-- 套路相同
alter table add c1 varchar(50) character set gbk collate gbk_bin;
alter table t1 change c1 c1 varchar(50) character set gbk collate gbk_bin;
---------------------
作者:苦笔
来源:CSDN
原文:https://blog.csdn.net/u014711094/article/details/78821809
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/DataArt/p/10010872.html

时间: 2024-07-31 14:01:03

mysql(5.7.17)字符集设置(character_set/collation)的相关文章

MySQL驱动和数据库字符集设置不搭配

刚才控制台又报这个错,这是代表MySQL驱动和数据库字符集设置不搭配: 错误: "...Initial client character set can be forced via the 'characterEncoding' property." 解法: 在sqlMapConfig.xml中添加 <environments default="mysql"> <environment id="mysql"> <tr

mysql配置命令 CHARACTER_SET_%字符集设置

参照: http://blog.csdn.net/mzlqh/article/details/7621307点击打开链接 其实现在的ubuntu12.04 直接sudo apt-get install MySQL 就可以了,mysql-client会自动地为你装上 #查看mysql是否正在运行 sudo netstat -tap | grep mysql 如果是正在运行,则 tcp 0 0 localhost.localdomain:mysql *:* LISTEN - 重启mysql sudo

Mysql数据库字符集设置

1.操作系统:CentOS6.6 2.数据库系统: Mysql 3.任务:解决数据乱码的问题 1)更改客户端的字符集gbk 客户端字符集设置,set names gbk;这样可以确保插入后的中文,不出现乱码,对执行set names gbk,前插入的中文无效. 说明:通常下面的几个字符集和数据库的字符集相同的和character_set_database,才能确保写入数据可以正确输出.  mysql> set names gbk;      #更改客户端的字符集gbk Query OK, 0 r

[mysql]深入Mysql字符集设置[转载]

http://www.laruence.com/2008/01/05/12.html 基本概念 • 字符(Character)是指人类语言中最小的表义符号.例如’A'.’B'等: • 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding).例如,我们给字符’A'赋予数值0,给字符’B'赋予数值1,则0就是字符’A'的编码: • 给定一系列字符并赋予对应的编码后,所有这些字符和编码对组成的集合就是字符集(Character Set).例如,给定字

特殊汉字“&#146989;”引发的对于字符集的思考;mysql字符集;sqlalchemy字符集设置;客户端字符集设置;

字符集.字符序的概念与联系 在数据的存储上,MySQL提供了不同的字符集支持.而在数据的对比操作上,则提供了不同的字符序支持. MySQL提供了不同级别的设置,包括server级.database级.table级.column级,可以提供非常精准的设置. 什么是字符集.字符序?简单的来说: 字符集(character set):定义了字符以及字符的编码. 字符序(collation):定义了字符的比较规则. 举个例子: 有四个字符:A.B.a.b,这四个字符的编码分别是A = 0, B = 1,

JDBC 和 Mybatis连接mysql数据库的时候,设置字符集编码

jdbc连接MySQL数据库的时候,设置字符集编码!!! 可以如下配置,mysql可直接在url后面加上字符集设置: String url = "jdbc:mysql://localhost:3306/exceltest1?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"; Mybatis连接mysql数据库的时候,设置字符集编码!!! 可以如下配置,Mybatis的配

MySQL 字符集设置

/*************************************************************************** * MySQL 字符集设置 * 说明: * 数据库这块很多时候都会因为字符集不兼容导致数据通信异常,所以这边把 * MySQL的字符集设定为utf-8,这个比较通用. * * 2016-9-24 深圳 南山平山村 曾剑锋 **************************************************************

深入Mysql字符集设置

在mysql客户端与mysql服务端之间,存在着一个字符集转换器. character_set_client          =>gbk:转换器就知道客户端发送过来的是gbk格式的编码 character_set_connection=>gbk:将客户端传送过来的数据转换成gbk格式 character_set_results        =>gbk: 注:以上三个字符集可以使用set names gbk来统一进行设置 例子: create table test( name varc

Linux下 C语言 Mysql操作和字符集设置

一.C语言 Mysql操作 首先安转libmysql库. # sudo apt-get install libmysql++-dev 把MySQL的库拷贝到公共库中. # sudo cp -ri /usr/lib/mysql/* /usr/lib/ 配置MySQL库. # mysql_config --cflags --libs 二.创建数据库和表 启动终端,输入以下命令,进入mysql. # mysql -u username -p 创建一个数据库. mysql > create databa