MySQL修改表和字段的字符集和排序規則


摘要:通過設置表的字符集和排序規則,解決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;

  注:執行命令過程中字段名無需加引號。修改完數據庫字符集,立即生效。

結束語

  工作中處處都需要學習,有時候看似簡單的一個優化,可以讓你深入學習后收獲各種知識。所以在學習中要不求甚解,不僅要了解這個知識點,也要熟悉為什么要這么做。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM