您的位置:首页 > 数据库 > MySQL

MYSQL入门学习之五:MYSQL的字符集

2014-07-29 13:44 435 查看

MySQL的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。

对于字符集的支持细化到四个层次:服务器(server),数据库(database),数据表(table)和连接(connection)。

一、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)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;

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

二、查看字符集

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

mysql> show variables like '%char%';

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

| 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:\APMServ5.2.6\MySQL5.1\share\charsets\ |

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

2、查看MySQL数据表(table)的字符集

mysql> show table status from test like '%test%';

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

| Name | Engine | Version | Row_format | | Collation |

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

| test_char | MyISAM | 10 | Fixed | | hebrew_general_ci |

| test_inn | InnoDB | 10 | Compact | | latin1_swedish_ci |

| test_inn2 | InnoDB | 10 | Compact | | utf8_general_ci |

| test_priority | MyISAM | 10 | Dynamic | | latin1_swedish_ci |

| test_trans | InnoDB | 10 | Compact | | latin1_swedish_ci |

| test_view | NULL | NULL | NULL | | NULL |

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

3、查看MySQL数据列(column)的字符集

mysql> show full columns from v9_picture;

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

| Field | Type | Collation |

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

| id | mediumint(8) unsigned | NULL |

| catid | smallint(5) unsigned | NULL |

| typeid | smallint(5) unsigned | NULL |

| title | char(80) | gbk_chinese_ci |

| style | char(24) | gbk_chinese_ci |

| thumb | char(100) | gbk_chinese_ci |

| keywords | char(40) | gbk_chinese_ci |

| description | char(255) | gbk_chinese_ci |

| posids | tinyint(1) unsigned | NULL |

| url | char(100) | gbk_chinese_ci |

| listorder | tinyint(3) unsigned | NULL |

| status | tinyint(2) unsigned | NULL |

| sysadd | tinyint(1) unsigned | NULL |

| islink | tinyint(1) unsigned | NULL |

| username | char(20) | gbk_chinese_ci |

| inputtime | int(10) unsigned | NULL |

| updatetime | int(10) unsigned | NULL |

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

三、设置及修改字符集

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

mysql> create database mydb character set gb2312;

mysql> use mydb

mysql> show variables like 'character_set_database';

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

| Variable_name | Value |

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

| character_set_database | gb2312 |

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

2、修改数据库的字符集

(1)、通过SQL修改

mysql> alter database mydb character set utf8;

mysql> show variables like 'character_set_database';

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

| Variable_name | Value |

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

| character_set_database | utf8 |

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

(2)、通过配置文件修改

修改文件$MYSQL_HOME\data\mydb\db.opt的内容

default-character-set=utf8

default-collation=utf8_general_ci



default-character-set=latin1

default-collation=latin1_swedish_ci

重启MYSQL后生效

3、通过SQL修改字符集

mysql> set character_set_client=utf8;

mysql> set character_set_connection=utf8;

mysql> set character_set_database=utf8;

mysql> set character_set_results=utf8;

mysql> set character_set_server=utf8;

mysql> set character_set_system=utf8;

mysql> set collation_connection=utf8;

mysql> set collation_database=utf8;

mysql> set collation_server=utf8;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: