(1)ascii碼,佔7bit,由128個字元組成,包括大小寫字母、數字0-9、標點符號、非列印字元(換行符、製表符等4個)以及控制字元(退格、響鈴等)組成;
(2)latin1,佔1byte,在ascii基礎上,增加128 ~ 255區間的字元;
(3)gb2312等cjk字符集,可變長字符集,最多佔2bytes,用於儲存常見的cjk字元;
(4)utf8,可變長字符集,最多佔3bytes,可以囊括ascii、cjk及其他絕大多數常用語言文字;這中間其實還有個unicode字符集,它也是2bytes的,也能囊括ascii字元,但即便是ascii字元也需要消耗2bytes,存在一定浪費,而用utf8儲存ascii字元時,實際只需要1byte,更為節省儲存空間;
(5)utf8mb4,可變長字符集,最多佔4bytes,可以包含上面其他幾種字符集;同樣地,以utf8mb4儲存ascii字元時,實際上也是只占用1bytes,儲存一般的漢字占用3bytes,而儲存個別漢字則需要4bytes,儲存emoji也至少需要4bytes;mysql採用utf8mb4字符集時,儲存文字實際消耗位元組數是由文字內容的位元組數決定的,並非總是需要4位元組,列舉幾種情況:>輸入字符集任意,且儲存ascii字元時,每個字元需要1byte;輸入字符集是gb2312,且儲存的字元是漢字時,每個字元需要2bytes;輸入字符集是utf8/utf8mb4,且儲存的字元是低編碼漢字時,每個字元需要3bytes;輸入字符集是utf8/utf8mb4,且儲存的字元是高編碼漢字時,每個字元需要4bytes;輸入字符集是binary,且儲存的字元是高編碼漢字時,每個字元需要4bytes;
1、只修改字符集(使用預設校驗集)mysql> alter table t1 convert to character set utf8mb4
2、同時修改表字符集和校驗集mysql> alter table t1 convert to character set utf8mb4 collate utf8mb4_bin;
3、只修改某列的字符集mysql> alter table t1 modify c1 varchar(20) character set utf8mb4 not null default
4、同時修改某列的字符集和校驗集mysql> alter table t1 modify c1 varchar(20) character set utf8mb4 collate utf8mb4_unicode_ci not null default
character_set_server:server端預設字符集;(1)從前端到後端(瀏覽器=>web server=>mysql連線層=>server層=>db層》table層),盡可能使用同一種字符集;character_set_database:database預設字符集,若未設定,則和 character_set_server 的設定一樣;database中的資料表/stored procedure/stored function 也可以自行設定字符集,若未指定,則和 character_set_database的設定一樣;資料表中的字元型別列,也可以單獨設定字符集,若未設定,則和該錶指定的字符集一樣;
character_set_client:客戶端顯示讀取結果的字符集;
character_set_connection:客戶端從server端讀取資料時傳輸字符集;
character_set_results:server端將資料傳送給客戶端時的字符集;mysql涉及到字符集的設定實在太多,因此強烈建議各個環節全部採用同一種字符集,避免出現意外狀況。
(2)盡可能採用大字符集,也就是優先順序:utf8mb4 > utf8 > gbk > latin1;
(3)採用邏輯備份資料時,切記要不定期進行恢復測試.
mysql避免中文亂碼
檢視編碼格式 show variables like char 1 避免匯入資料有中文亂碼的問題 1 將資料編碼格式儲存為utf 8 設定預設編碼為utf8 set names utf8 設定資料庫db name預設為utf8 alter database db name default chara...
mysql 數設定據庫編碼及避免匯入亂碼問題
mysql會出現中文亂碼的原因不外乎下列幾點 1.server本身設定問題,例如還停留在latin1 2.table的語系設定問題 包含character與collation 3.客戶端程式 例如php 的連線語系設定問題 一 避免建立資料庫及表出現中文亂碼和檢視編碼方法 1 建立資料庫的時候 cr...
mysql 避免全表 mysql避免全表掃瞄
我們在寫資料庫查詢語句的時候,經常會忽略一些查詢效能問題,導致最後在查詢資料的情況下非常耗時,影響專案質量。資料庫的設計是一門藝術,需要遵循一定的規範。對資料量很大的表一定要建立合適的索引,無論是單個索引還是復合索引,要根據查詢的業務邏輯去建立,同時也記住,單個表的索參數量不得超過5個,不然會很導致...