一、什么是字符集:
简单的说吧、字符集就是一组对应关系的集合;
1、现在的计算机是在二进制的基础上建立出来的、二进制是数值的一种表达方式、也就是说二进制只的表达“数”、如十进制的3,在二进制中
就可以写成00000011;
2、然而在现实生活当中相对于"数"而言我们用到更多的是“文字”;那这个问题(怎么保存文字)怎么解决呢?然而这个问题根本没有难道
他们、它们决定用一个折中的方式解决;如:保存‘a‘的时候我就保存一个0,保存‘b‘的时候我就保存一个1,保存‘A‘的时候我就保存一个2
保存’B‘的时候我就保存一个3。于是整个对应关系就变成了这样
字符 -> 编码
‘a‘ --> 0
‘b‘ --> 1
‘A‘ --> 2
‘B‘ --> 3
就这样我们就定义了一个只有4个字符的字符集了;只不过我们这个字符集相比gbk\utf8这样的字符集不知道low到那里去了。
二、什么是排序规则:
1、上面的内容我们已经自己定义了一个字符集了,有了字符集一些最基本的操作就可能做了,如:我想知道一个字符它是不是‘a‘那么
我只要去看这个字符的编码是不是0就可以了,这样就把一个字符问题变成了一个数字问题了,这样数据上的相等(=),大小(>,<),也就有了
新的意义了。
2、我们这个字符集还有什么不足吗?如:要做到不区分大小写,那么我们之前的 =,<,>也就都来灵了;我们还要给这个字符集加上新的
规则才行;如我们在这里可以粗鲁的加上规则 1:0=2 ,2: 1=3;这样就可能做不区分大小写了。
三、mysql中可以怎么指定字符集:
1、mysql可以在实例级别指定默认字符集、配置项名:character_set_server
2、可以在创建库的时候指定字符集
create database testdb character set utf8;
3、可以在创建表的时候指定表级的字符集
create table person(id int not null auto_increment primary key,name varchar(4)) character set utf8; -- 在表级别指定字符集是utf8
4、可以在创建表的时候指定
create table person(id int not null auto_increment primary key,name varchar(4) character set utf8); -- 指定name 列的字符集是utf8
----