好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

mysql字符集与校验规则的设置基础教程

 默认情况下,我们可以在4个级别分别设定mysql的字符集和校验规则,分别是server、database、table和column。实际上,我们甚至还可以单独对一串字符串设定其字符集和校验规则。下面就分别来对四个级别的设定说明一下:

      server:

      在启动mysql服务的时候,可以指定mysql server的字符集和校验规则,通过如下方式:

mysqld –character-set-server=latin1 –collation-server=latin1_swedish_ci

      如果不亲自指定它们,那么mysql就会使用默认值。一般是latin1和latin1_swedish_ci。当然这个默认值是可以修改的,但是方法只有一种,那就是重编译源代码。采用如下方式:

./configure –with-charset=gbk –with-collation=gbk_bin

      如何查询当前的server的字符集和校验规则的值,可以查看系统参数character_set_server和collation_server:

mysql> show variables like ‘character_set_server%’; +———————-+——–+ | Variable_name        | Value  | +———————-+——–+ | character_set_server | latin1 | +———————-+——–+ 1 row in set (0.00 sec)

mysql> show variables like ‘collation_server%’; +——————+——————-+ | Variable_name    | Value             | +——————+——————-+ | collation_server | latin1_swedish_ci | +——————+——————-+ 1 row in set (0.00 sec)

      server的字符集和校验规则的唯一作用就是,当database的字符集和校验规则没有指定的时候,就默认使用server的对应值。

      database:

      我们在创建和修改数据库的时候,可以指定其字符集和校验规则:

CREATE DATABASE db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name]; ALTER DATABASE db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name];

      对应查看当前数据库的字符集和校验规则的系统参数是’character_set_database’和’collation_database’,如下:

mysql> show variables like ‘character_set_database’; +————————+——-+ | Variable_name          | Value | +————————+——-+ | character_set_database | gbk   | +————————+——-+ 1 row in set (0.00 sec)

mysql> show variables like ‘collation_database’; +——————–+———+ | Variable_name      | Value   | +——————–+———+ | collation_database | gbk_bin | +——————–+———+ 1 row in set (0.00 sec)

      数据库的字符集和校验规则的作用有二,其一是当没有在表级别知道它们,那么默认就使用数据库基本的值;其二是在[load data infile]时也起到了作用。

      table:

      在创建表或者修改表结构的时候,我们可以通过如下方式指定这个表的字符集和校验规则:

CREATE TABLE tbl_name (column_list) [[DEFAULT] CHARACTER SET charset_name] [COLLATE collation_name]]

ALTER TABLE tbl_name [[DEFAULT] CHARACTER SET charset_name] [COLLATE collation_name]

      column:

      具体的表的具体的某个字段,我们也可以指定其字符集和校验规则,如下:

col_name {CHAR | VARCHAR | TEXT} (col_length) [CHARACTER SET charset_name] [COLLATE collation_name]

      那么,这四个级别的字符集和校验规则的指定(级别高低server>database>table>column),mysql最终以何种形式来存储和显示字符串的呢?

1、本级别中,如果同时指定character set和collate,那么就使用指定的值; 2、本级别中,只指定character set而没有指定collate,那么就使用指定的character set值和其对应的默认的collation值; 3、本级别中,只指定collate而没有指定character set,那么就使用指定的collation值和其所对应的character set值; 4、本级别中,都没有指定这2个值,那么默认就使用上一级别的对应的值。

      国家字符集:

      mysql中国家字符集的概念,其表示使用预先定义的字符集,在mysql5.1中使用utf8作为其预先的定义的字符集。 因此,下面几种类型的定义,其实是等效的:

CHAR(10) CHARACTER SET utf8 NATIONAL CHARACTER(10) NCHAR(10)

      下面几种类型也是等效的:

VARCHAR(10) CHARACTER SET utf8 NATIONAL VARCHAR(10) NCHAR VARCHAR(10) NATIONAL CHARACTER VARYING(10) NATIONAL CHAR VARYING(10)

      字符串的字符集和校验规则的 设置 问题,请稍等!

查看更多关于mysql字符集与校验规则的设置基础教程的详细内容...

  阅读:71次