- 通過設置表的字符集和排序規(guī)則,解決MySQL查詢時不區(qū)分字母大小寫、插入時不支持特殊字符的問題。
- 關(guān)于MySQL查詢時不區(qū)分字母大小寫、插入時不支持特殊字符的問題,只有修改表的字符集和排序規(guī)則才能根治,而且事半功倍。utf8mb4支持的最低mysql版本為5.5.3+,若不是,請升級到較新版本。
一、字符集utf8 和Unicode、utf8 和utf8mb4 區(qū)別
新建mysql數(shù)據(jù)庫的時候,需要指定數(shù)據(jù)庫的字符集,一般我們都是選擇utf8這個字符集,但是還會又一個utf8mb4這個字符集,好像和utf8有聯(lián)系。
漲知識一
MySQL在5.5.3之后增加了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來兼容四字節(jié)的unicode。好在utf8mb4是utf8的超集,除了將編碼改為utf8mb4外不需要做其他轉(zhuǎn)換。當然,為了節(jié)省空間,一般情況下使用utf8也就夠了。
可以簡單的理解 utf8mb4 是目前最大的一個字符編碼,支持任意文字。
漲知識二
Unicode可以認為是字符的編號,即每個字符在Unicode表里面的序號。utf8是一種編碼方式,類似于哈夫曼編碼過程,就是把常用(位置靠前)的Unicode字符用短編碼表示,不常用的字符用長代碼表示,從而實現(xiàn)更小的整個文檔的文件大小。在UTF-8編碼中,英文字母是一個字節(jié),中文(非生僻字)是2~3個字節(jié)??梢哉J為,utf8是對Unicode的一種壓縮算法。
二、mysql庫的排序規(guī)則
utf8_unicode_ci比較準確,utf8_general_ci速度比較快。(更多查看)通常情況下 utf8_general_ci的準確性就夠我們用的了,在我看過很多程序源碼后,發(fā)現(xiàn)它們大多數(shù)也用的是utf8_general_ci,所以新建數(shù)據(jù) 庫時一般選用utf8_general_ci就可以了。
如果是utf8mb4那么對應的就是 utf8mb4_general_ci utf8mb4_unicode_ci。
三、查看更改字符集、排序規(guī)則
1. 查看數(shù)據(jù)庫的字符集方式
-- database_name 為數(shù)據(jù)庫名稱
SHOW CREATE DATABASE database_name;
2. 查看表的字符集方式
-- table_name為表的名稱
SHOW CREATE TABLE table_name;
3. 查看字段的字符集方式
-- column_name為字段名稱
SHOW FULL COLUMNS FROM column_name;
4. 修改數(shù)據(jù)庫的字符集方式
-- database_name 為數(shù)據(jù)庫名稱
-- utf8為目標字符編碼
ALTER DATABSE database_name DEFAULT CHARACTER SET utf8mb4;
5. 修改表的字符集方式
-- table_name為表的名稱
-- utf8為目標字符編碼
ALTER TABLE table_name DEFAULT CHARACTER SET utf8;
6. 修改字段的字符集方式文章來源:http://www.zghlxwxcb.cn/news/detail-531572.html
-- table_name為表的名稱
-- column_name為字段名稱
-- varchar(20)為字段的類型
-- utf8為目標字符集
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(20) CHARACTER SET utf8;
7. 同時修改表和表中所有字符類型的字段字符集方式文章來源地址http://www.zghlxwxcb.cn/news/detail-531572.html
-- 例子:alter table user2 convert to character set utf8 collate utf8_general_ci;
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
到了這里,關(guān)于【MySQL】關(guān)于數(shù)據(jù)庫字符編碼以及字符集排序相關(guān)知識的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!