在建立数据库的时候,常常用到一句:sql
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语句中没有指定表字符集和校对规则,则使用数据库字符集和校对规则做为默认值。
code