数据库字符集mysql
字符集:罗列所有图形字符的一张大表。
排序规则:定义各个图形字符之间的大小比较规则,比如:是否区分大小写,区分全角和半角等。在软件使用中,一般我们只指定字符编码即可,因为确定了字符编蚂瞎码字符集自然就确定了。但是在数据库类软件中,我们除了要指定编码规则,还需要指定排序规则,因为,数据库是要提供枝蔽模糊匹配、排序显示功能的。sql可以查看mysql支持的字符集编码和排序规则,其中每个字符集编码都有一个默认猛物州的排序规则。
B. MySQL中数据库的默认字符集和校对规则有哪些
1. ASCII
用途:用来映射简单的单字节字符,比如大小写英文字母、阿拉伯数字、常用的标点符、运算符、控制字符等。
编码范围:U+0000 - U+007F
注意:对于用这类字符的场景够用了,但是却无法表达比如汉字,日文等编码。
2. UNICODE
用途:用来映射包含 ASCII 以内的其他的所有字符。
编码范围:U+0000 - U+10FFFF
注意:ASCII 是 UNICODE 的子集,ASCII 编码的字符可以无损转换为 UNICODE 编码的字符。
MySQL 常用字符集
1. Latin1
Latin1 是 cp1252 或者 ISO-8859-1 的别名。ISO-8859-1 编码是单字节编码,向下兼容 ASCII。
编码范围:U+0000 - U+00FF
ISO-8859-1 收录的字符除 ASCII 收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。
单字节内的空间都被 ISO-8859-1 编码占用,所以能够用 ISO-8859-1 编码存储、传输其他任何编码的字节流。
比如把一个 Utf8mb4 的编码或者 GBK 的编码存入 Latin1,不会有任何问题。因为 Latin1 保留了原始的字节流,这也就是 MySQL 长期以来把 Latin1 做默认字符集的原因。
但是由于 Latin1 对任何字符都存放字节流,造成了字符个数的浪费。
比如:
CHAR(10) CHARACTER SET LATIN1;CHAR(10) CHARACTER SET UTF8;
该字段中存储字符个数 UTF8 是 Latin1 的三倍!!!
2. GB18030
GB18030 是中国官方标准字符集,向前兼容 GBK、GB2312,是这两个的超集。用 1、2、4 个字节分别表示一个符号。比如对一般中文字符,默认是用两个字节编码存储。Windows 系统,默认用的就是 GB18030。
若只是存储中文字符,那 GB18030 最佳。
原因有两点:
1)占用空间小,比如比 UTF8 小。
2)存储的汉字根据拼音来排序,检索快。
3. UTF8
UTF8 是 Unicode 的编码实现,可以存储 UNICODE 编码对应的任何字符, 这也是使用最多的一种编码。最大的特点就是变长的编码方式,用 1 到 4 个字节表示一个符号,可以根据不同的符号编码字节长度。
字母或数字用 1 字节,汉字用 3 字节,emoji 表情符号用 4 字节。UTF8 字符集目前是使用最广泛的。
注意!MySQL 里常说的 UTF8 是 UTF8MB3 的别名,UTF8MB3 是 UTF8MB4 的子集,UTF8MB4 才是真正的 4 字节 UTF8 字符集!
UTF8MB3 表示最大支持 3 个字节存储字符,UTF8MB4 表示最大 4 个字节存储字符。根据实际需要和未来展望,MySQL 8.0 已经默认用 UTF8MB4 基础字符集。
C. MySQL字符集如何设置
设置服务器级和数据库级字符集的方法如下:
对于服务器级字符集,可以通过以下步骤进行设置:
打开服务器配置文件(如my.cnf或my.ini),找到[mysqld]部分。
在[mysqld]部分中添加以下行:
character-set-server=字符集名称
其中,字符集名称是您选择的字符集的名称。例如,如果您想使用UTF-8字符集,可以添加以下行:
character-set-server=utf8
对于数据库级字符集,可以在创建数据库时指定字符集。例如,如果您想将数据库的字符集设置为UTF-8,可以执行以下SQL语句:
CREATE DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
其中,database_name是您要创建的数据库的名称。
请注意,以上设置方法仅供参考。具体设置方法可能因不同的MySQL版本和环境而有所不同。
D. mysql濡备綍鍦ㄥ凡链夋暟鎹搴扑笂缁熶竴瀛楃﹂泦
鍓嶈█
鏁版嵁搴挞噷闱锛岄儴鍒嗘暟鎹琛ㄥ拰鏁版嵁鏄痩atin1镄勶纴閮ㄥ垎鏁版嵁琛ㄥ拰鏁版嵁鏄疷TF8锛岃缮链夐儴鍒呜〃锛岃〃缁撴瀯鏄痷tf8钥屾暟鎹鏄痩atin1銆
杩欑嶅囱恳𨱍呭喌锛屽伐浣滀简鍗佸嚑骞寸殑鎴戯纴杩樻槸绗涓娆$板埌銆备笅闱㈣翠竴涓嬶纴镐庝箞镙峰瓧绗﹂泦缁熶竴鎴耻tf8
1锛屽缓涓涓绌烘暟鎹搴
2锛屾妸琛ㄧ粨鏋勫拰鏁版嵁鏄痷tf8镄勮〃瀵煎嚭锛岀劧钖庣洿鎺ュ煎叆鍒版柊镄勬暟鎹搴扑腑
3锛屾暟鎹琛ㄥ拰鏁版嵁閮芥槸latin1镄勮〃锛屽厛瀵煎嚭琛ㄧ粨鏋勫拰鏁版嵁锛屽姞涓--default-character-set=latin1锛屽皢瀵煎嚭鏂囦欢涓锛宭atin1鏀逛负utf8锛屽湪瀵煎叆鍒版柊镄勬暟鎹搴扑腑銆
4锛岃〃缁撴瀯鏄痷tf8锛岃〃鏁版嵁鏄痩atin1镄勶纴链変簩绉嶆柟娉曪细
4.1锛屽厛瀵煎嚭琛ㄧ粨鏋勶纴瀵煎叆鍒版柊镄勬暟鎹搴扑腑銆傚煎嚭鏁版嵁锛屽姞涓--default-character-set=utf8锛屽洜涓鸿〃缁撴瀯鏄痷tf8锛岃〃鏁版嵁鏄痩atin1锛屽叆搴撴椂宸蹭贡镰併傚湪灏嗘暟鎹瀵煎叆鍒版柊搴扑腑銆傝繖绉嶆柟妗堟湁缂虹偣锛--default-character-set=utf8锛屽煎嚭镄勬暟鎹鍙鑳戒细链変涪澶憋纴瀵煎嚭镄勬暟鎹锛屽湪瀵煎叆镞跺彲鑳戒细鎶ラ敊銆
4.2锛屽彲浠ラ氲繃binary瀛楃﹂泦锅氢腑杞锛屾帹钻愯繖绉嶆柟娉
UPDATE user SET user_name = CONVERT(CONVERT(CONVERT(user_name USING latin1) USING binary) USING UTF8);
杩欑嶆柟娉曪纴鐪佸幓浜嗗煎嚭瀵煎叆镄勯夯鐑︼纴阃熷害姣旇缉蹇锛11w𨱒℃暟鎹锛屽樊涓嶅5-6绉
鏁版嵁搴撹捐¤繖鍧楅潪甯搁吨瑕侊纴鍦ㄨ捐℃暟鎹搴撴椂涓瀹氲佽冭槛娓呮氥傚湴锘轰笉鐗锛屽ぇ铡﹁繜镞╀细鍊掔殑銆
鎭ㄥ彲鑳芥劅鍏磋叮镄勬枃绔:绠鏋恗ysql瀛楃﹂泦瀵艰嚧鎭㈠嶆暟鎹搴撴姤阌欓梾棰榤ysql淇鏀规暟鎹搴撶紪镰(鏁版嵁搴揿瓧绗﹂泦)鍜岃〃镄勫瓧绗︾紪镰佺殑鏂规硶mysql瀛楃﹂泦鍜屾暟鎹搴揿紩镎庝慨鏀规柟娉曞垎浜獶W涓阈炬帴mysql鏁版嵁搴撴椂锛屽缓绔嫔瓧绗﹂泦涓鏂囧嚭鐜颁贡镰佺殑瑙e喅鏂规硶
E. mysql中怎么设置字符集
方法1:通过客户端修改表字段的默认字符集
打开SQLyog客户端,连接数据库如下图所示,点击connection 按钮 连接数据库
我的数据库名称为e,然后我随意找到数据库中test2表,右键-----》Alter Table
如果安装数据库的 时候 没有选择字符集设置,那么mysql数据库默认为latin1,在箭头部分选择utf8字符集
方法2:用数据库命令修改字符集
首先查看当前数据库字符集,在命令框中执行如下命令:show variables like 'character_set_%';
查看字符集排序设置,执行命令:show variables like 'collation_%';
修改服务器级别字符集,执行命令:
1,临时修改:SET GLOBAL character_set_server=utf8;
修改表级别,命令如下:ALTER TABLE table_name DEFAULT CHARSET utf8;
修改数据库级别,命令如下:use e(换成你要修改的数据库名,在这里我的数据库为e),,然后执行命令:alter database e character set utf-8;
或者修改mysql的my.ini文件中的字符集键值
[mysql]
[mysqld]
重启mysql
F. mysql数据库使用的是什么字符集
MySQL字符集多种多样,下面为您列举了其中三种最常见的MySQL字符集查看方法,该方法供您参考,希望对您学习MySQL数据库能有所启迪。
一、查看MySQL数据库服务器和数据库MySQL字符集。
mysql>showvariableslike'%char%'; +--------------------------+-------------------------------------+------ |Variable_name|Value|...... +--------------------------+-------------------------------------+------ |character_set_client|utf8|......--
客户端字符集 |character_set_connection|utf8|...... |character_set_database|utf8|......--
数据库字符集 |character_set_filesystem|binary|...... |character_set_results|utf8|...... |character_set_server|utf8|......--
服务器字符集 |character_set_system|utf8|...... |character_sets_dir|D:MySQLServer5.0sharecharsets|...... +--------------------------+-------------------------------------+------
二、查看MySQL数据表(table)的MySQL字符集。
mysql>showtablestatusfromsqlstudy_dblike'%countries%'; +-----------+--------+---------+------------+------+-----------------+------ |Name|Engine|Version|Row_format|Rows|Collation|...... +-----------+--------+---------+------------+------+-----------------+------ |countries|InnoDB|10|Compact|11|utf8_general_ci|...... +-----------+--------+---------+------------+------+-----------------+------
三、查看MySQL数据列(column)的MySQL字符集。
mysql>showfullcolumnsfromcountries; +----------------------+-------------+-----------------+-------- |Field|Type|Collation|....... +----------------------+-------------+-----------------+-------- |countries_id|int(11)|NULL|....... |countries_name|varchar(64)|utf8_general_ci|....... |countries_iso_code_2|char(2)|utf8_general_ci|....... |countries_iso_code_3|char(3)|utf8_general_ci|....... |address_format_id|int(11)|NULL|....... +----------------------+-------------+-----------------+--------