`

数据库、数据表和字段字符集查询、修改和配置

阅读更多

一、设置编码

LINUX  修改vi/etc/my.cnf

WINDOWS my.ini

  在[client]下添加

     default-character-set=utf8 

  在[mysqld]下添加

     default-character-set=utf8

   保存,重启mysql即可;


二、创建对象时设置字符集

1 创建数据库指定数据库的字符集

    mysql>CREATEDATABASE IF NOT EXISTS mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

2 创建表时指定字符集    

    CREATETABLE table_name (id int unsigned) DEFAULT CHARACTER SET utf8 COLLATEutf8_general_ci;

3 创建字段时指定字符集

CREATETABLE table_name2 (id int,name char(10) CHARACTER SET utf8 COLLATE utf8_general_ci);


三、查看编码

1、查看 MySQL 数据库服务器和数据库字符集

  show variables like'%char%';

2、查看 MySQL 数据库服务器和数据库核对排序方式(校对规则)

    SHOWVARIABLES LIKE 'COLLATION';

3、查看当前安装的 MySQL 所支持的字符集。

  show charset;

4、查看当前数据库编码:

   SHOW CREATE DATABASE db_name;

5、查看表编码:

  SHOW CREATE TABLE tbl_name;

6、查看字段编码:

   SHOW FULL COLUMNS FROM tbl_name;


四、修改字符集

1.修改数据库的字符集

    mysql>usemydb

    mysql>ALTERDATABASE mydb CHARACTER SET utf-8(utf8) COLLATE utf8_general_ci

2.修改表的字符集

   把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:

      ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name[COLLATE ...]

     如:ALTER TABLE logtest CONVERT TO CHARACTERSET utf8 COLLATE utf8_general_ci;

    只是修改表的默认字符集:

     ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name[COLLATE...];

     如:ALTER TABLE logtest DEFAULT CHARACTERSET utf8 COLLATE utf8_general_ci; 

3.修改字段的字符集:

  ALTER TABLE tbl_nameCHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];

   如:ALTER TABLE logtest CHANGE title titleVARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;


五、用mysql命令修改编码

 setcharacter_set_client=utf8; //客户端字符集

 setcharacter_set_connection=utf8; //链接字符集

 setcharacter_set_database=utf8; //数据库字符集

 setcharacter_set_results=utf8;  //结果字符集

 setcharacter_set_server=utf8;  //服务器字符集

 set character_set_system=utf8;  //系统字符集

 setcollation_connection=utf8; //链接校对

 setcollation_database=utf8;  //数据库校对

 setcollation_server=utf8;    //服务器校对

  setnames 字符集;同时修改character_set_client/character_set_connection/character_set_results字符集.


六、MySQL中的字符集转换过程

 1. MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;

 2. 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下:

    使用每个数据字段的CHARACTER SET设定值;

   若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);

    若上述值不存在,则使用对应数据库的DEFAULTCHARACTER SET设定值;

   若上述值不存在,则使用character_set_server设定值。

 3. 将操作结果从内部操作字符集转换为character_set_results。


七、MySQL默认字符集

    MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。 但是,传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配

置,那么,默认的配置从何而来呢?

    (1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;

    (2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;

    (3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;

    (4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;

    (5)当选定了一个数据库时,character_set_database被设定为这个数据库默认的字符集;

    (6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;

    (7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;

 

八、其他注意事项

    MySQL的字符集支持(Character SetSupport)有字符集(Character set)和排序方式(Collation)两个方面。对于字符集的支持细化到四个层次: 服务器(server),数据库(database)

,数据表(table)和连接(connection)。

    my.cnf中的default_character_set设置只影响mysql命令连接服务器时的连接字符集,不会对使用libmysqlclient库的应用程序产生任何作用!

    对字段进行的SQL函数操作通常都是以内部操作字符集进行的,不受连接字符集设置的影响。

    如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。

 

如果要批量修改表和字段的字符集可用下面命令生成一个sql文件,然后再执行

SELECT
CONCAT('alter table ',table_name,' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;')
FROM
INFORMATION_SCHEMA.tables
WHERE
TABLE_SCHEMA='database_name'  into outfile '/mysql/1.sql';

 

 

 

设置服务端字符集

set @@character_set_server='utf8';

参考:http://blog.csdn.net/flcandclf/article/details/24769599,http://bbs.csdn.net/topics/340027990

分享到:
评论

相关推荐

    超级详细的MySQL数据库实战教程(包教包会)

    - 配置MySQL服务器,包括用户权限、字符集等。 ### 3. 数据库基础 - 创建和管理数据库。 - 理解数据库的基本概念,如表、字段、数据类型等。 ### 4. SQL语言基础 - 学习SQL(结构化查询语言)的语法和操作。 ...

    赤兔Oracle数据库恢复软件 v11.6.zip

    或者依次打开我的电脑->卸载或更改程序->卸载你所卸载的软件,您可以用 Window XP控制面板中的添加或删除程序功能,或用 Windows Vista、Windows 7中的程序和功能卸载时,您可以选择"删除在本机保存的个人配置数据...

    数据库操作语句大全(sql)

    因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引) 14、说明:前10条记录 select top 10 * form ...

    MySql 5.1 参考手册.chm

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...

    MySQL 5.1中文手冊

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...

    PHP程序开发范例宝典III

    6.10 动态创建数据库、数据表和字段 255 实例168 动态创建MySQL数据库 255 实例169 动态创建MySQL数据表 257 实例170 动态创建字段 259 实例171 动态创建一个完整的数据库 261 6.11 数据的导入导出 263 ...

    MySQL 5.1参考手册 (中文版)

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...

    mysql官方中文参考手册

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...

    MYSQL中文手册

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 ...

    MySQL 5.1参考手册中文版

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11...

    MySQL 5.1参考手册

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例083 过滤论坛帖子中的空白和特殊字符 118 实例084 对论坛帖子的内容进行转义 119 实例085 还原论坛中帖子的内容 120 实例086 截取论坛标题 121 实例087 分割、合成字符串 121 实例088 查询关键字描红 122 实例...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例083 过滤论坛帖子中的空白和特殊字符 118 实例084 对论坛帖子的内容进行转义 119 实例085 还原论坛中帖子的内容 120 实例086 截取论坛标题 121 实例087 分割、合成字符串 121 实例088 查询关键字描红 122 实例...

    oracle数据库经典题目

    19.视图是一个表示表的数据的数据库对象,它允许用户从一个表或一组表中通过一定的查询语句建立一个“虚表”。 20.序列是一种可被多个用户使用的用于产生一系列唯一数字的数据库对象。尤其适合多用户环境中,可以...

    MySQL5.1参考手册官方简体中文版

    5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...

    MySQL 5.1官方简体中文参考手册

    5.10.1. 数据和排序用字符集 http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/(第 5/24 页)2006-11-02 19:12:13 MySQL 5.1 Reference Manual 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. ...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    14-更改生产线上MySQL数据字符集的方案讲解.avi 第五部 MySQL备份、增量备份及数据恢复基础实战(12节) 01-备份数据的意义及重要性.avi 02-mysqldump多个命令参数备份实战.avi 03-mysqldump逻辑备份的工作原理.avi...

Global site tag (gtag.js) - Google Analytics