charset & collation

来源:互联网 发布:护士资格考试视频软件 编辑:程序博客网 时间:2024/05/21 07:54

常用命令

#查看mysql服务器字符集和校对规则的方法:show variables like 'character_set_%'; //其中character_set_server就是当前服务器的使用的字符集show variables like 'collation_%'; //其中collation_server就是当前服务器使用的校对规则#查看数据库字符集和校对规则mysql> use 数据库名mysql> show variables like 'character_set_%';mysql> show variables like 'collation_%';#还可以使用如下命令查看字符集:mysql> show create database 数据库名#查看数据表字符集和校对规则的方法:mysql> show create table 表名mysql> show table status#查看字段的的字符集和校对规则方法:mysql> show create table 数据表名mysql> show full columns from 数据表名

注意:在没有设置字符集时,系统会自动分配字符集给它们,继承关系是:字段继承表,表继承库,库继承服务器。


charset

字符集是一套字符和编码的集合,校对规则是用于比较字符集的一套规则。

特点:

  ①字符编码方式是用一个或多个字节表示字符集中的一个字符
  ②每种字符集都有自己特有的编码方式,因此同一个字符,在不同字符集的编码方式下,会产生不同的二进制

## 设置字符集编码  mysql> set names 'utf8';相当于同时:  set character_set_client = utf8;  set character_set_results = utf8;  set character_set_connection = utf8;## 修改数据库字符集  mysql> alter database database_name character set xxx;    只修改库的字符集,影响后续创建的表的默认定义;对于已创建的表的字符集不受影响。(一般在数据库实现字符集即可,表和列都默认采用数据库的字符集)## 修改表的字符集  mysql> alter table table_name character set xxx;    只修改表的字符集,影响后续该表新增列的默认定义,已有列的字符集不受影响。  mysql> alter table table_name convert to character set xxx;    同时修改表字符集和已有列字符集,并将已有数据进行字符集编码转换。## 修改列字符集格式:ALTER TABLE table_name MODIFYcolumn_name {CHAR | VARCHAR | TEXT} (column_length)    [CHARACTER SET charset_name]    [COLLATE collation_name]mysql> alter table table_name modify col_name varchar(col_length) character set xxx;

collation

mysqlCOLLATE是校对集的意思,可以理解为,排序规则等。
可以对表进行字符序的设置,也可以单独对某个字段进行字符序的设置。一个字符集类型,它的字符序可能有多个;

校对规则特征:

  ①两个不同的字符集不能有相同的校对规则;

  ②每个字符集有一个默认校对规则;

  ③存在校对规则命名约定:以其相关的字符集名开始,中间包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束。

#查看数据库所支持的校对集show collation

说明

修改

校对集:数据比较方式;必须在无数据前进行声明,如果有了数据再进行数据修改,那么修改无效!

命名

mysql的字符序遵从命名惯例。以_ci(表示大小写不敏感),以_cs(表示大小写敏感),以_bin(表示用编码值进行比较)。

_bin:binary,二进制比较,取出二进制位,一位一位进行比较,区分大小写;
_cs:case sensitive,大小写敏感,区分大小写;
_ci:case insensitive,大小写不敏感,不区分大小写。

ci 是 case insensitive 的缩写, cs 是 case sensitive 的缩写。即,指定大小写是否敏感。

注意:
  系统使用utf8字符集,若使用utf8_bin校对规则执行SQL查询时区分大小写,使用utf8_general_ci不区分大小写(默认的utf8字符集对应的校对规则是utf8_general_ci)。

原创粉丝点击