av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

mysql字符集相關(guān)總結(jié)

瀏覽:52日期:2023-10-05 10:33:58

這邊筆記主要記錄一下對(duì)mysql字符集相關(guān)知識(shí)的學(xué)習(xí)

字符集

一般我們使用如下語(yǔ)句創(chuàng)建一張表,創(chuàng)建表的時(shí)候指定了charset為utf8編碼。

CREATE TABLE `test` ( `c1` int UNSIGNED NOT NULL AUTO_INCREMENT, `c2` varchar(255), `c3` char(11), `c4` varchar(255), PRIMARY KEY (`c1`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

但其實(shí)mysql也支持除了utf8之外的其他字符集,可以使用命令 show charset 查看當(dāng)前mysql支持的所有字符集。

例如下圖就是我的mysql支持的所有字符集。

mysql字符集相關(guān)總結(jié)

可以從上圖中看到,第四列表示該字符集最大長(zhǎng)度。我們建表時(shí)常用的 utf8 在mysql里面實(shí)際最大長(zhǎng)度是 3 個(gè)字符。一般認(rèn)知中utf8是用1~4個(gè)字符來(lái)表示具體的內(nèi)容的,但mysql里面的 utf8 實(shí)際是 utf8mb3 的別名,正宗的的最大用4個(gè)字符表示的在mysql中是 utf8mb4 。

注意:

utf8mb4utf8mb4比較規(guī)則

在上面那張圖中,第三列 Default collation 就是這些字符集默認(rèn)的比較規(guī)則。例如acsii字符集的默認(rèn)比較規(guī)則是 ascii_general_ci ,utf8字符集的默認(rèn)比較規(guī)則是 utf8_general_ci 。

其實(shí)每個(gè)字符集有很多種比較規(guī)則,例如我們看一下acsii字符集有哪些比較規(guī)則,如下圖所示

mysql> show collation like ’ascii%’;+------------------+---------+----+---------+----------+---------+| Collation | Charset | Id | Default | Compiled | Sortlen |+------------------+---------+----+---------+----------+---------+| ascii_general_ci | ascii | 11 | Yes | | 0 || ascii_bin | ascii | 65 | | | 0 |+------------------+---------+----+---------+----------+---------+

ascii_general_ci 表示是一種通用的比較,其中 _ci 表示是不區(qū)分大小寫(xiě)(case insensitive)。(反之 _cs 就表示大小寫(xiě)敏感)

ascii_bin 表示是二進(jìn)制比較

再看一下utf8、utf8mb4字符集有哪些比較規(guī)則,如下圖所示

mysql> show collation like ’utf8%’;+--------------------------+---------+-----+---------+----------+---------+| Collation | Charset | Id | Default | Compiled | Sortlen |+--------------------------+---------+-----+---------+----------+---------+| utf8_general_ci | utf8 | 33 | Yes | Yes | 1 || utf8_bin | utf8 | 83 | | Yes | 1 || utf8_unicode_ci | utf8 | 192 | | Yes | 8 || utf8_icelandic_ci | utf8 | 193 | | Yes | 8 || utf8_latvian_ci | utf8 | 194 | | Yes | 8 || utf8_romanian_ci | utf8 | 195 | | Yes | 8 || utf8_slovenian_ci | utf8 | 196 | | Yes | 8 || utf8_polish_ci | utf8 | 197 | | Yes | 8 || utf8_estonian_ci | utf8 | 198 | | Yes | 8 || utf8_spanish_ci | utf8 | 199 | | Yes | 8 || utf8_swedish_ci | utf8 | 200 | | Yes | 8 || utf8_turkish_ci | utf8 | 201 | | Yes | 8 || utf8_czech_ci | utf8 | 202 | | Yes | 8 || utf8_danish_ci | utf8 | 203 | | Yes | 8 || utf8_lithuanian_ci | utf8 | 204 | | Yes | 8 || utf8_slovak_ci | utf8 | 205 | | Yes | 8 || utf8_spanish2_ci | utf8 | 206 | | Yes | 8 || utf8_roman_ci | utf8 | 207 | | Yes | 8 || utf8_persian_ci | utf8 | 208 | | Yes | 8 || utf8_esperanto_ci | utf8 | 209 | | Yes | 8 || utf8_hungarian_ci | utf8 | 210 | | Yes | 8 || utf8_sinhala_ci | utf8 | 211 | | Yes | 8 || utf8_german2_ci | utf8 | 212 | | Yes | 8 || utf8_croatian_ci | utf8 | 213 | | Yes | 8 || utf8_unicode_520_ci | utf8 | 214 | | Yes | 8 || utf8_vietnamese_ci | utf8 | 215 | | Yes | 8 || utf8_general_mysql500_ci | utf8 | 223 | | Yes | 1 || utf8mb4_general_ci | utf8mb4 | 45 | Yes | Yes | 1 || utf8mb4_bin | utf8mb4 | 46 | | Yes | 1 || utf8mb4_unicode_ci | utf8mb4 | 224 | | Yes | 8 || utf8mb4_icelandic_ci | utf8mb4 | 225 | | Yes | 8 || utf8mb4_latvian_ci | utf8mb4 | 226 | | Yes | 8 || utf8mb4_romanian_ci | utf8mb4 | 227 | | Yes | 8 || utf8mb4_slovenian_ci | utf8mb4 | 228 | | Yes | 8 || utf8mb4_polish_ci | utf8mb4 | 229 | | Yes | 8 || utf8mb4_estonian_ci | utf8mb4 | 230 | | Yes | 8 || utf8mb4_spanish_ci | utf8mb4 | 231 | | Yes | 8 || utf8mb4_swedish_ci | utf8mb4 | 232 | | Yes | 8 || utf8mb4_turkish_ci | utf8mb4 | 233 | | Yes | 8 || utf8mb4_czech_ci | utf8mb4 | 234 | | Yes | 8 || utf8mb4_danish_ci | utf8mb4 | 235 | | Yes | 8 || utf8mb4_lithuanian_ci | utf8mb4 | 236 | | Yes | 8 || utf8mb4_slovak_ci | utf8mb4 | 237 | | Yes | 8 || utf8mb4_spanish2_ci | utf8mb4 | 238 | | Yes | 8 || utf8mb4_roman_ci | utf8mb4 | 239 | | Yes | 8 || utf8mb4_persian_ci | utf8mb4 | 240 | | Yes | 8 || utf8mb4_esperanto_ci | utf8mb4 | 241 | | Yes | 8 || utf8mb4_hungarian_ci | utf8mb4 | 242 | | Yes | 8 || utf8mb4_sinhala_ci | utf8mb4 | 243 | | Yes | 8 || utf8mb4_german2_ci | utf8mb4 | 244 | | Yes | 8 || utf8mb4_croatian_ci | utf8mb4 | 245 | | Yes | 8 || utf8mb4_unicode_520_ci | utf8mb4 | 246 | | Yes | 8 || utf8mb4_vietnamese_ci | utf8mb4 | 247 | | Yes | 8 |+--------------------------+---------+-----+---------+----------+---------+

使用不同的比較規(guī)則對(duì)數(shù)據(jù)進(jìn)行比較,結(jié)果可能是不一樣的。

字符集和比較規(guī)則是對(duì)應(yīng)的,不管是只修改字符集還是只修改比較規(guī)則,另一方都會(huì)相應(yīng)地自動(dòng)變化。

四個(gè)級(jí)別的字符集和比較規(guī)則

上文提到了字符集和比較規(guī)則,實(shí)際上在mysql里面有不同級(jí)別的字符集和比較規(guī)則:

服務(wù)器級(jí)別 數(shù)據(jù)庫(kù)級(jí)別 表級(jí)別 列級(jí)別

服務(wù)器級(jí)別的字符集可以看參數(shù) character_set_server ,服務(wù)器級(jí)別的比較規(guī)則可以看參數(shù) collation_server

mysql> show variables like ’character_set_server’;+----------------------+-------+| Variable_name | Value |+----------------------+-------+| character_set_server | utf8 |+----------------------+-------+1 row in set (0.00 sec)mysql> show variables like ’collation_server’;+------------------+-----------------+| Variable_name | Value |+------------------+-----------------+| collation_server | utf8_general_ci |+------------------+-----------------+1 row in set (0.00 sec)

如果要查看數(shù)據(jù)庫(kù)級(jí)別的字符集和比較規(guī)則,那么可以先 use xxxdb 切換到具體的數(shù)據(jù)庫(kù),然后執(zhí)行 show variables like ’character_set_database’ 和 show variables like ’collation_database’ 來(lái)查看該數(shù)據(jù)庫(kù)的字符集和比較規(guī)則。

Database changedmysql> show variables like ’character_set_database’;+------------------------+-------+| Variable_name | Value |+------------------------+-------+| character_set_database | utf8 |+------------------------+-------+1 row in set (0.00 sec)mysql> show variables like ’collation_database’;+--------------------+-----------------+| Variable_name | Value |+--------------------+-----------------+| collation_database | utf8_general_ci |+--------------------+-----------------+1 row in set (0.00 sec)

如果要查看某個(gè)表的字符集和比較規(guī)則,或者表中的某個(gè)列的字符集和比較規(guī)則,那么可以使用 show create table xxxtb 來(lái)查看具體的建表語(yǔ)句,里面就有使用的字符集和比較規(guī)則。

如果創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候沒(méi)有指定字符集和比較規(guī)則,則會(huì)使用服務(wù)器級(jí)別的字符集和比較規(guī)則作為數(shù)據(jù)庫(kù)的字符集和比較規(guī)則。如果創(chuàng)建和修改表的語(yǔ)句中沒(méi)有指明字符集和比較規(guī)則,將使用該表所在數(shù)據(jù)庫(kù)的字符集和比較規(guī)則作為該表的字符集和比較規(guī)則

三個(gè)系統(tǒng)變量

mysql服務(wù)器可以對(duì)應(yīng)多個(gè)客戶端,而這些客戶端的編碼方式可能不同,但存在數(shù)據(jù)庫(kù)里的數(shù)據(jù)的字符集是一定的,mysql就要針對(duì)不同的客戶端進(jìn)行編碼轉(zhuǎn)換處理,然后返回結(jié)果給客戶端。

在mysql里面,有三個(gè) SESSION級(jí)別 的系統(tǒng)變量,可以進(jìn)行上述操作:

character_set_client : 服務(wù)器解碼客戶端請(qǐng)求時(shí)使用的字符集 character_set_connection : 服務(wù)器處理請(qǐng)求時(shí)會(huì)把請(qǐng)求字符串從character_set_client轉(zhuǎn)為character_set_connection character_set_results : 服務(wù)器向客戶端返回?cái)?shù)據(jù)時(shí)使用的字符集

mysql服務(wù)器會(huì)為每個(gè)客戶端都維護(hù)一份session級(jí)別的這三個(gè)變量。

不過(guò)在實(shí)際生產(chǎn)環(huán)境中,為了避免麻煩,公司一般都會(huì)有規(guī)范規(guī)定客戶端默認(rèn)都使用utf8字符集。

以上就是mysql字符集相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于mysql字符集的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 日日躁狠狠躁aaaaxxxx | 中文字幕一区二区不卡 | 福利片在线观看 | 99精品久久久久久 | 国产99久久久国产精品 | 欧美free性| 久久高清 | 亚洲少妇综合网 | 亚洲综合大片69999 | 成人精品一区二区三区四区 | 精品一区二区三区免费视频 | 99视频在线免费观看 | 欧美成人精品激情在线观看 | 亚洲a在线视频 | 日本久久黄色 | 成人中文网 | 九九久久久| 91精品国产色综合久久不卡98口 | 亚洲一区二区在线 | 蜜桃视频在线观看免费视频网站www | 欧美午夜精品 | 欧美激情欧美激情在线五月 | 欧美三级三级三级爽爽爽 | 久久久高清| 日韩精品1区2区 | 亚洲午夜视频在线观看 | 国产精品久久久久久久久久久免费看 | 91精品国产综合久久香蕉麻豆 | 中文字幕国产精品视频 | 国产精品久久久久久久久久免费看 | 成人在线日韩 | 精品亚洲一区二区 | av黄色国产| 精品久久久久久久久久久久久久 | a级在线观看 | 国产观看 | 成人国产精品色哟哟 | 午夜成人免费视频 | 精品国产一区二区在线 | 久久这里只有精品首页 | 高清黄色毛片 |