mysql 字符集含义_mysql字符集总结

查看相关字符集的命令

查看数据库支持的所有字符集(两种命令一样):

show character set;

show char set;

查看字符集对应的COLLATE

show collation;

查看系统字符集设置,包括所有的字符集设置:

show variables like '%char%';

mysql> show variables like '%char%';

+--------------------------+---------------------------------------------------------+

| Variable_name | Value |

+--------------------------+---------------------------------------------------------+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |

+--------------------------+---------------------------------------------------------+

8 rows in set, 1 warning (0.01 sec)

其中的含义如下:

client:为客户端使用的字符集

connection:为连接数据库的字符集设置类型,如果成行没有指明连接数据库使用的字

符集类型则按照服务器端默认的字符集设置。

database: 为数据库服务器中表和字段默认使用的字符集设定,

如果表和字段没有设定字符集,默认使用此字符集。

results: 为数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。

server:为服务器安装时指定的默认字符集设定。 创建数据库时的默认字符集

system:为数据库系统使用的字符集设定

character_set_connection、character_set_client、

character_set_results

三个字符集什么时候用到。从实际上可以看到,当客户端连接服务器的时候,

它会将自己想要的字符集名称发给mysql服务器,然后服务器就会使用这个字符集去设置

character_set_connection、character_set_client、

character_set_results这三个值。

查看表中的字段设置的字符集:

show full columns from t_class;

查看表设置的字符集

show create table t_class\G;

查看数据库设置的字符集

show create database cms;

创建时指定字符集

服务器级:

在安装MySQL时可以设置服务器的默认编码格式,也可对my.ini做修改,

修改[mysqld]里面的character_set_server=utf8,

则可设置character_set_server的值。

数据库级:

CREATE DATABASE db_name DEFAULT CHARACTER SET utf8;

如果不指定默认的字符集,则系统会根据character_set_server的值进行设置

表级:

CREATE TABLE db_name.tb_name (id VARCHAR(20) NOT NULL,name VARCHAR(20) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

如果不指定默认的字符集,则系统会根据database的值进行设置

列级:

CREATE TABLE db_name.tb_name ( id varchar(20) NOT NULL, name varchar(20) CHARACTER SET utf8 );

如果不指定默认的字符集,则系统会根据database的值进行设置

修改字符集命令

修改character_set_connection、character_set_client、

character_set_results三值:

语法:SET NAMES 'charset_name' [COLLATE 'collation_name']

set names utf8等同于下面三个:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

修改数据库字符集

alter database 数据库名 character set utf8;

修改表的字符集

ALTER TABLE 表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE 表名 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

修改列的字符集

ALTER TABLE t1 CHANGE name name VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE t1 CHANGE name name VARCHAR(100) CHARACTER SET gbk COLLATE gbk_chinese_ci;

设置 my.ini中的字符集

[mysqld]

character-set-server = utf8

这个参数 控制character-set-server和character_set_database的值

控制数据库,表,字段默认的字符集

set names utf8

控制当前session的character_set_connection、character_set_client、

character_set_results的字符集

控制客户端查看数据库时的乱码问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值