解释DEFAULT CHARACTER SET utf8 COLLATE utf8_general_

在创建数据库的时候,经常用到一句:

CREATE DATABASE `tpcms` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

具体意思不太明白,经查阅一番,总结如下:

 * CREATE DATABASE `tpcms`:创建数据库tpcms。在命令行里创建的时候,`要用键盘Esc下的那个,而不是单引号,否则出错;
 * DEFAULT CHARACTER SET utf8:数据库字符集。设置数据库的默认编码为utf8,这里utf8中间不要"-";
 * COLLATE utf8_general_ci:  数据库校对规则。该三部分分别为数据库字符集、通用、区分大小写。

       utf8_unicode_ci比较准确,utf8_general_ci速度比较快。通常情况下 utf8_general_ci的准确性就够我们用的了,在我看过很多程序源码后,发现它们大多数也用的是utf8_general_ci,所以新建数据 库时一般选用utf8_general_ci就可以了。

比如:

CREATE DATABASE `articles` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

这句话主要是用来指定数据库的字符集和校对规则。每一个数据库有一个数据库字符集和一个数据库校对规则,它不能够为空。CREATE DATABASE 和 ALTER 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]

例如:

CREATE DATABASE db_name DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;

MySQL这样选择数据库字符集和数据库校对规则:

如果指定了CHARACTER SET X和COLLATE Y,那么采用字符集X和校对规则Y。
如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。 否则,采用服务器字符集和服务器校对规则。

如果在CREATE TABLE语句中没有指定表字符集和校对规则,则使用数据库字符集和校对规则作为默认值。

你可能感兴趣的:(解释DEFAULT CHARACTER SET utf8 COLLATE utf8_general_)