MySQL基礎學習之字符集的應用
字符集的查詢與修改
在MySQL 8.0版本之前, 默認字符集是latin1, 使用默認字符集的時候輸入中文會出現(xiàn)亂碼問題, 所以我們開發(fā)人員經(jīng)常會將MySQL字符集的格式修改為utf8解決亂碼問題, utf8字符集默認指向的是utf8mb3格式編碼, 在MySQL 8.0版本開始, 默認的字符集將改為了utf8mb4, 有效的解決了中文亂碼問題
查看當前MySQL數(shù)據(jù)庫使用的字符集
show variables like 'character%'; -- 或 show variables like '%char%';

MySQL 8.0版本查詢默認字符集

MySQL 5.7版本查詢默認字符集
對于MySQL 5.7版本我們可以通過Navicat等工具來對數(shù)據(jù)庫的默認字符集進行修改, 也可以通過修改MySQL的配置文件my.cnf來修改默認字符集
my.cnf文件在Linux系統(tǒng)下的地址是: /etc/my.cnf 在 [mysqld] 下新增 character_set_server=utf8 修改成功之后注意要重啟 MySQL, 使配置生效, 重啟命令systemctl restart mysqld.service
在上面字符集列表里面有幾個屬性可以了解一下:
character_set_client服務器解碼請求時使用的字符集character_set_connection服務器處理請求時會把請求字符串從character_set_client轉為character_set_connectioncharacter_set_results服務器向客戶端返回數(shù)據(jù)時使用的字符集
字符集比較規(guī)則
utf8mb3和 utf8mb4
在日常操作中utf8字符集表示一個字符需要 14個字節(jié), 但是我們常用的一些字符只需要使用 13個字節(jié), 而字符集表示使用一個字符的最大字節(jié)長度, 長度不同占用空間大小也不同, 所以在MySQL中定義了utf8mb3和utf8mb4:
utf8mb31~3字節(jié)utf8mb41~4字節(jié)
在MySQL中, utf8通常指的是 utf8mb4
查看當前MySQL支持的字符集可輸入下列查詢:
show charset; -- 或 show character set;

我們可以看到查詢結果一共有四列, 分別是字符集名稱, 簡介, 該字符集默認排序規(guī)則, 使用該字符集最大字節(jié)數(shù)

Default collation表示的是該字符集默認的比較規(guī)則, utf8_general_ci是一種通用的比較規(guī)則,這里可以選擇比較規(guī)則主要作用于哪種語言 在我們使用Navicat編輯數(shù)據(jù)庫的時候可以看到當前數(shù)據(jù)庫使用的字符集和排序規(guī)則
utf8_croatiian_ci就是以羅克地亞語的規(guī)則比較,utf8_czech_ci以捷克語的規(guī)則比較utf8_danish_ci以丹麥語規(guī)則比較- ...
utf8_unicode_ci和 utf8_general_ci對中英文來說沒有區(qū)別 utf8_general_ci 校對速度快, 準確度較差 utf8_unicode_ci 準確度高, 但校對速度稍慢
一般來講使用utf8_general_ci就夠了, 但是如果應用中使用到德語, 法語或者俄語, 一定要使用 utf8_unicode_ci, 因為 utf8_general_ci是一種比較老的標準 utf8_unicode_ci會更符合這些國家人們的習慣
比較規(guī)則后綴含義
| 后綴 | 英文釋義 | 描述 |
|---|---|---|
| _ai | accent insensitive | 不區(qū)分重音 |
| _as | accent sensitive | 區(qū)分重音 |
| _ci | case insensitive | 不區(qū)分大小寫 |
| _cs | case sensitive | 區(qū)分大小寫 |
| _bin | binary | 以二進制的方式比較 |
字符集常用SQL
-- 查看服務器的字符集和比較規(guī)則 show variables like '%_server'; -- 查看數(shù)據(jù)庫的字符集和比較規(guī)則 show variables like '%_database'; -- 查看具體數(shù)據(jù)庫的字符集 show create database 表名; -- 修改具體數(shù)據(jù)庫的字符集 alter database 表名 default character set 'utf8' collate 'utf8_general_ci';
修改數(shù)據(jù)庫的默認字符集和比較規(guī)則后, 原來已經(jīng)創(chuàng)建的表的字符集和比較規(guī)則并不會改變, 需要單獨的去更改
以上就是MySQL基礎學習之字符集的應用的詳細內(nèi)容,更多關于MySQL字符集的資料請關注腳本之家其它相關文章!
相關文章
mysql 觸發(fā)器創(chuàng)建與使用方法示例
這篇文章主要介紹了mysql 觸發(fā)器創(chuàng)建與使用方法,結合實例形式分析了mysql 觸發(fā)器基本概念、原理、創(chuàng)建、使用方法及操作注意事項,需要的朋友可以參考下2020-05-05
MySQL出現(xiàn)SQL Error (2013)連接錯誤的解決方法
這篇文章主要介紹了MySQL出現(xiàn)SQL Error (2013)連接錯誤的解決方法,2013錯誤主要還是在于用戶的授權問題,需要的朋友可以參考下2016-06-06
mysql問題之slow log中出現(xiàn)大量的binlog dump記錄的解決方法
今天在查看mysql中發(fā)現(xiàn)比較慢,然后我使用了slow log,發(fā)現(xiàn)出現(xiàn)了大量的binlog dump記錄,下面我來給大家整理一下這個問題的解決辦法2013-09-09

