MySQL数据库--字符集、列类型、列属性、表关系

字符集

  • 字符编码的概念

字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等

  • 字符集的概念

字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同。

常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。计算机要准确处理各种字符集和文字,需要进行字符编码,以便计算机能够识别和存储各种文字。

  • 设置客户端所有字符集

如果直接通过cmd夏的mysql.exe进行中文数据插入,那么可能出错。

出错原因:

  1. 用户是通过mysql.exe来操作mysqld.exe
  2. 真正的SQL执行是mysqld.exe来执行
  3. 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知识为了更方便客户端与服务端进行字符集转换而设。

猜你喜欢

转载自blog.csdn.net/weixin_37160123/article/details/89337928
今日推荐