欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2022-06-16 11:24:37
...
bitsCN.com

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

相关链接:

MYSQL入门学习之一:基本操作

http:///database/201212/173868.html

MYSQL入门学习之二:使用正则表达式搜索

http:///database/201212/173869.html

MYSQL入门学习之三:全文本搜索

http:///database/201212/173873.html

MYSQL入门学习之四:MYSQL的数据类型

http:///database/201212/175536.html

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;

bitsCN.com
相关标签: database 表达式