mysql字符集與校驗規則的設置

發表于:2013-12-16來源:IT博客大學習作者:小霸王點擊數: 標簽:MySQL
默認情況下,我們可以在4個級別分別設定mysql的字符集和校驗規則,分別是server、database、table和column。實際上,我們甚至還可以單獨對一串字符串設定其字符集和校驗規則。下面就分別來對四個級別的設定說明一下:

  默認情況下,我們可以在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)

  字符串的字符集和校驗規則的設置問題,請稍等!

原文轉自:http://blogread.cn/it/article/96

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97