摘要:通過設置表的字符集和排序規則,解決MySQL查詢時不區分字母大小寫、插入時不支持特殊字符的問題。
關於MySQL查詢時不區分字母大小寫、插入時不支持特殊字符的問題,只有修改表的字符集和排序規則才能根治,而且事半功倍。utf8mb4支持的最低mysql版本為5.5.3+,若不是,請升級到較新版本。下面以把字符集和排序規則分別修改為utf8mb4 和 utf8mb4_bin為例,進行展開描述,當然,童鞋們也可以換成其它字符集和排序規則,請量體裁衣,自行決定。
查看表的字符集和排序規則
查看schema中某張表的排序規則:
show table status from schema_name like '%table_name%';
查看schema中所有表的排序規則:
SELECT table_name, table_type, engine, version, table_collation
FROM information_schema.tables WHERE table_schema = 'schema_name' ORDER BY table_name DESC;
上述SQL腳本支持表名模糊匹配。查看某張表中字段的字符集和排序規則:
show full COLUMNS FROM table_name;
修改表的字符集和排序規則
修改數據庫的字符集編碼命令如下:
ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
修改表的字符集編碼:
alter table table_name character set utf8mb4;
它只修改表新增列的默認定義,已有列的字符集不受影響,請格外注意。若要同時修改表字符集和已有列字符集,並將已有數據進行字符集編碼轉換,請使用如下CONVERT TO腳本:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
修改字段的字符集和排序規則
修改某個字段的字符集編碼:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
注:執行命令過程中字段名無需加引號。修改完數據庫字符集,立即生效。
結束語
工作中處處都需要學習,有時候看似簡單的一個優化,可以讓你深入學習后收獲各種知識。所以在學習中要不求甚解,不僅要了解這個知識點,也要熟悉為什么要這么做。