mysql> CREATE DATABASE d CHARSET utf8; mysql> CREATE TABLE d.t (str VARCHAR(10) CHARSET latin1) DEFAULT CHARSET=utf8;
若未顯式指定,MySQL 採用逐層繼承:Server → Database → Table → Column。高層為低層提供默認值,低層可遵可棄。
流程:character_set_client → character_set_connection(SQL 處理) → character_set_results(返回結果)。三者可用 SET NAMES 一次性設定。隱式轉換會帶來額外開銷,可用 EXPLAIN EXTENDED + SHOW WARNINGS 檢測。
當 character_set_database ≠ character_set_server 時,庫的默認字符集由後者決定。無法直接修改 csd,改變 css 即改變 csd。連接實例未指定庫時,默認字符集與 css 相同。
USE db_name; SET NAMES charset; -- 開始載入數據
統一字符集,避免「字符集 style」混搭。
該操作不進行任何字符集轉換,直接按存儲編碼導出。
CHAR(10) 可能佔 30 字節,即使實際不需要。結語:根據業務選擇字符集,而非一味追求統一。