Mysql字符集
时间:2021-07-01 10:21:17
帮助过:7人阅读
# 字符集和字符序
2
3 字符集(character
set):定义了字符以及字符编码。
4
5 字符序(collation):定义了字符的比较规则。
6
7 MySQL支持多种字符集 与 字符序。
8
9 -
一个字符集对应至少一种字符序(一般是1对多)。
10
11 -
两个不同的字符集不能有相同的字符序。
12
13 -
每个字符集都有默认的字符序。
14 1. 查看字符集
15
16 SHOW CHARACTER SET WHERE Charset=
"utf8";
17
18 !
[img](clip_image001.png)
19
20 2. 查看字符序
21
22 SHOW COLLATION WHERE Charset=
"utf8";
23
24 !
[img](clip_image002.png)
25
26 3. 查看当前数据库的字符集
27
28 SHOW VARIABLES LIKE
"%character%";
29
30 !
[img](clip_image003.png)
31
32 # 字符集设置
33
34 ## 各级别字符集
35
36 ### 服务器默认字符集
37
38 1. 用途:
39
40 默认的内部字符集。创建数据库或表时,若未指定库或表的字符集、字符序,使用该服务器的服务器默认字符集。
41
42 2. 查询Server字符集、字符序
43
44 SHOW VARIABLES LIKE
"character_set_server";
45
46 SHOW VARIABLES LIKE
"collation_server";
47
48 3. 设置Server字符集
49
50 *
永久生效,需要重启MySQL服务生效。
51
52 修改参数文件my.cnf
53
54 [mysqld]
55
56 character_set_server=
utf8
57
58 --
影响参数:character_set_server 和 character_set_database
59
60 --
注意:修改后要重启数据库才能生效。
61
62 *
临时生效,重启MySQL服务后丢失。
63
64 mysql>SET GLOBAL character_set_server=
utf8;
65
66 ### 数据库字符集
67
68 1. 用途:指定数据库级别的字符集。不同数据库可以使用不同字符集。
69
70 2. 查看字符集:
71
72 USE IungoPNT;
73
74 SELECT @@character_set_database, @@collation_database;
75
76 !
[图片打不开](clip_image004.png)
77
78 3. 设置字符集:
79
80 创建数据库时设置。
81
82 CREATE DATABASE IungoPNT DEFAULT CHARACTER SET utf8;
83
84 若未指定字符集,使用character_set_server。
85
86 ### 表字符集
87
88 1. 用途:指定表的字符集。不同表可以使用不同字符集。
89
90 2. 查看字符集:
91
92 SHOW TABLE STATUS FROM IungoPNT;
93
94 !
[图片打不开](clip_image006.jpg)
95
96 3. 设置字符集:
97
98 创建表时设置。
99
100 USE IungoPNT;
101
102 DROP TABLE IF EXISTS `SysConfig`;
103
104 CREATE TABLE `SysConfig` (
105
106 `ID` INT NOT NULL AUTO_INCREMENT,
107
108 `ParamID` VARCHAR(
255) NOT NULL ,
109
110 `ParamName` VARCHAR(
255) NOT NULL ,
111
112 `SubParamID` VARCHAR(
255) NOT NULL ,
113
114 `Value` VARCHAR(
500) NOT NULL ,
115
116 PRIMARY KEY (`ID`)
117
118
119
120 ) auto_increment=
1000 default charset=
utf8;
121
122 若未指定字符集,使用数据库字符集。
123
124 # 列字符集
125
126 暂不考虑。
127
128 ##字符集系统变量
129
130 -
character_set_server:默认的内部操作字符集
131
132 -
character_set_client:客户端来源数据使用的字符集
133
134 -
character_set_connection:连接层字符集
135
136 -
character_set_results:查询结果字符集
137
138 -
character_set_database:当前选中数据库的默认字符集
139
140 -
character_set_system:系统元数据(字段名等)字符集
141
142 -
字符集指定
143
144 1. 编译时指定
145
146 2. 配置文件my.cnf中指定:
147
148 [mysqld]
149
150 character_set_server=
utf8
151
152 --
影响参数:character_set_server 和 character_set_database
153
154 --
注意:修改后要重启数据库才能生效。
155
156 [client]
157
158 default-character-
set=
utf8
159
160 --
影响参数:character_set_client,character_set_connection 和character_set_results。
161
162 --
注意:修改后无需重启数据库。
163
164 3. 启动时指定:
165
166 a) ./mysqld --character-
set-server=utf8 &
167
168 --
影响参数:character_set_server 和 character_set_database
169
170 b) mysql -uroot -pmysql --
default-character-
set=
utf8
171
172 --影响参数:
set character_set_client,
set character_set_connection,
set character_set_results。
173
174 4. SQL临时指定:
175
176 a) 分别指定
177
178 mysql> SET character_set_client =
utf8;
179
180 mysql> SET character_set_connection =
utf8;
181
182 mysql> SET character_set_database =
utf8;
183
184 mysql> SET character_set_results =
utf8;
185
186 mysql> SET character_set_server =
utf8;[]()
187
188 b) mysql客户端使用:
set names utf8;
189
190 等价于:
191
192 set character_set_client=
utf8;
193
194 set character_set_connection=
utf8;
195
196 set character_set_results=
utf8;
197
198 c)
set character
set utf8;
199
200 等价于:
201
202 set character_set_client=
utf8;
203
204 set character_set_results=
utf8;
205
206 set collation_connection=
@@collation_database;
207
208 # 字符集转换
209
210 1. MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;
211
212 2. 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下:
213 使用每个数据字段的CHARACTER SET设定值;
214 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);
215 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;
216 若上述值不存在,则使用character_set_server设定值。
217
218 3. 将操作结果从内部操作字符集转换为character_set_results。
219
220 4. 乱码原因:
221
222 字符集转换过程中造成信息丢失。
223
224 大字符集(utf8)往小字符集(gb2312)转换会造成信息丢失,反之不会。
---恢复内容结束---
Mysql字符集
标签:mysql字符集 配置 roo cti connect mysql 开始 修改 pre