MySQL数据库--字符集、列类型、列属性、表关系
字符集
-
字符编码的概念
字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等
-
字符集的概念
字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同。
常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。计算机要准确处理各种字符集和文字,需要进行字符编码,以便计算机能够识别和存储各种文字。
-
设置客户端所有字符集
如果直接通过cmd夏的mysql.exe进行中文数据插入,那么可能出错。
出错原因:
- 用户是通过mysql.exe来操作mysqld.exe
- 真正的SQL执行是mysqld.exe来执行
- mysql.exe将数据传入mysqld.exe的时候,没有告知其对应的符号规则(字符集),而mysqld也没有能力自己判断,就会使用自己默认的(字符集)。
解决方案:mysql.exe客户端在进行数据操作之前将自己所使用的字符集告诉mysqld,cmd下的mysqld.exe默认都只有一个字符集:GBK。
mysql.exe如何告知mysqld.exe对应的字符集类型为gbk呢?
快捷方式:set names 字符集
重新进行数据的插入:中文(GBK)
深层原理:客户端、服务端、连接层
mysql.exe与mysqld.exe之间的处理关系一共分为三层
客户端传入数据给服务端:client:character_set_client
服务端返回数据给客户端:server:character_set_results
客户端与服务端之间的连接:connection:character_set_connection
set names 字符集的本质:就是一次性打通三层关系的字符集,变得一致。
在系统中有三个变量来记录着这三个关系对应的字符集:show variable like 'character_set%'
查看一个新的客户端的对应的字符集关系
修改服务器变量的值
set 变量名 = 值
connection知识为了更方便客户端与服务端进行字符集转换而设。