mysql设置utf-8和查询修改数据库、表常用命令
1、设置utf8字符集
#二级目录
默认情况下,通过 show variables like ‘%char%’;命令查询mysql字符编码如下:
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | D:\MySQL\MySQL Server 5.5\share\charsets\ |
+--------------------------+-------------------------------------------+
(1)要修改mysql默认字符编码为utf8(不是utf-8这点要注意,否则会启动服务失败),首先要修改character_set_server为utf-8,这个通过命令是无法修改的,必须通过修改mysql配置文件my.ini中的character_set_server字段的值,并重新启动mysql服务,修改为:
# The default character set that will be used when a new schema or table is
# created and no character set is defined
# 当创建表、数据没有指定字符集合的时候会使用latin1这个字符编码,这个设置服务器字符集合必须是在这里配置文件上修改
# 无法通过命令修改
character-set-server=utf8
(2)再次通过查询字符编码命令,可以看到character_set_database和character_set_server的字符集变成utf8:
character_set_database:这个字段表示创建数据库时候不指定字符编码就会采用这个字段的值作为字符编码
character_set_server:这个字段的值用于设置mysql服务采用字符编码
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:\MySQL\MySQL Server 5.5\share\charsets\ |
(3)我们发现character_set_client、character_set_connection和character_set_results字段还在默认编码,因此我们也需要通过配置文件修改,当然通过命令修改也是可以的,不过命令修改只能针对当前连接断开就会失效。
针对当前连接修改字符编码命令有:
set character_set_client=utf8; // 修改当前客户端字符编码
set character_set_results=utf8; // 修改当前连接结果输出字符编码
set character_set_connection=utf8; // 修改当前连接字符编码 (用于传输编解码)
为了不用每次连接后都要再次修改客户端、连接、结果字符编码,我们可以在将mysql配置文件my.ini中的default-character-set字段的值修改为utf8;
default-character-set=utf8
我们再次查询数据库字符集就会变成:
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:\MySQL\MySQL Server 5.5\share\charsets\ |
+--------------------------+-------------------------------------------+
2、查询修改数据库、表的字符集
/*查看数据库服务和客户端字符集*/
show variables like '%char%';
/*查看当前数据库使用字符集方式1*/
select schema_name,default_character_set_name from information_schema.schemata where schema_name = 'mydb';
/*查看当前数据库使用字符集方式2*/
SHOW CREATE DATABASE mydb;
/*查看数据表创建语句,可以看到这个数据表字符集*/
SHOW CREATE TABLE employee;
/*修改数据库的字符集*/
alter database newdb character set utf8;
/*修改数据表字符集*/
ALTER TABLE employee character set utf8;