服务器数据库 如何在服务器建立一个数据库
- 新手教程
- 2022-05-14
- 1054

对于数据库来讲服务器数据库,有一个很重要却容易忽略服务器数据库的重要概念服务器数据库:字符集和字符编码。
1.字符集:是多个字符(英文、汉字、其服务器数据库他国家语言字符)的集合常见的字符集有ASCII字符集、LATIN1字符集、GBK字符集、UTF8字符集。
ASCII字符编码:一个英文字母(不分大小写)占用一个字节的空间服务器数据库,一个中文汉字占用两个字节的空间。
LATIN1字符编码:是ASCII字符编码的扩展。
GBK字符编码,是对GB2312编码的扩展,使用两个字节表示一个字符。
UTF8字符编码:一个英文字符占用一个字节的存储空间,一个中文(含繁体)占用三个字节的存储空间。
在MYSQL中通过如下方式,查看字符集相关信息
(1)查看连接客户端、连接、数据库服务器、数据库等字符集
SHOW VARIABLES LIKE '%char%';
需要注意的是以下几个参数:
character_set_client:表示客户端使用的字符集。
character_set_connection:表示连接数据库时的字符集,如果程序中没有指明连接数据库使用的字符集类型则按照这个字符集设置。
character_set_server:表示服务器使用的字符集。
character_set_database:表示创建数据库使用的字符集。
character_set_results:表示数据库给客户端返回时使用的编码格式。
MYSQL从发送请求到获得结果的经过几次字符集的转换过程,如下图:

从上面可以看到character_set_database和character_set_server的编码不一样,一个为utf8,另一个为utf8mb4。这两个有什么不同呢?
在MYSQL5.5.3之前,utf8编码最大仅支持3个字节表示一个字符。在MYSQL5.5.3之后,增加了utf8mb4,最大可用使用4个字节表示一个字符。其可以用于支持Emoji 表情(Emoji是一种特殊的 Unicode 编码)和一些不常见的汉字、新增的unicode字符等。
所以在mysql中最好使用utf8mb4字符集。
(2)查看某个数据库、某个表、某个字段的字符编码
1)查看某个数据库的字符编码:show create database dbname; 或者select * from information_schema.schemata where schema_name = dbname;2)查看某个表的字符编码:show create table tablename;3)查看某个字段的字符编码:show full columns from tablename;(3)修改客户端、连接、结果字符编码,修改数据库、某个表、某个字段的字符编码
1)修改客户端、连接、结果字符编码:set names 'utf8';相当于同时:set character_set_client = utf8;set character_set_results = utf8;set character_set_connection = utf8;2)修改数据库的字符编码: alter database database_name character set xxx;修改库的字符集,影响后续创建的表的默认定义;对于已创建的表的字符集不受影响。3)修改数据表的字符编码:alter table table_name character set xxx;修改表的字符集,影响后续该表新增列的默认定义,已有列的字符集不受影响。alter table table_name convert to character set xxx;同时修改表字符集和已有列字符集,并将已有数据进行字符集编码转换。4)修改数据表的字段的字符编码: alter table table_name modify col_name varchar(col_length) character set xxx;临时修改编码:
SET GLOBAL character_set_server=utf8; 临时修改服务器编码,重启mysql服务后失效SET GLOBAL character_set_database=utf8; 临时修改数据库编码,重启mysql服务后失效利用KETTLE向MYSQL推送数据时出现乱码的解决方案比如向mysql数据库中推送,出现这样的错误:Incorrect string value: '\xF0\x9F\x91\x80' for column
可以在kettle的目的数据库连接中,设置如下即可。
第一步:在【高级】中,输入:set names utf8mb4;
第二步:在【选项】中,输入:defaultFetchSize 500,useCursorFetch true,characterEncoding utf8,即可。

本文由主机中国官方于2022-05-14发表在主机中国,如有疑问,请联系我们。
本文链接:https://www.zhujicn.com/xinshou/6345.html
发表评论