主鍵操作是 MySQL 基礎中的基礎。本文涵蓋查看建表語句、修改字符集、主鍵類型差異、新增刪除主鍵與自增屬性的完整操作指南,適合初學者快速掌握。
SHOW CREATE TABLE tablename;
輸出範例顯示主鍵定義、引擎、預設字符集等關鍵資訊。
ALTER DATABASE maildb DEFAULT CHARACTER SET utf8;ALTER TABLE mailtable DEFAULT CHARACTER SET utf8;ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;避坑指南:若欄位實際儲存編碼與定義不符(如定義 latin1 實存 utf8),需先轉為 BLOB 再轉回目標類型:
ALTER TABLE t1 CHANGE c1 c1 BLOB;
ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;
| 模式 | 定義語法 | 插入行為 | 適用場景 |
|---|---|---|---|
| PRIMARY KEY | PRIMARY KEY (id) | 必須顯式提供值,否則預設 0 導致重複錯誤 | 業務主鍵(如 UUID、訂單號) |
| AUTO_INCREMENT | id INT NOT NULL AUTO_INCREMENT PRIMARY KEY | 自動遞增,插入時可省略或給 NULL/0 | 代理主鍵(無業務含義) |
-- 新增主鍵
ALTER TABLE tb ADD PRIMARY KEY (id);
-- 修改欄位為自增主鍵(需先刪除舊主鍵)
ALTER TABLE tb CHANGE id id INT(10) NOT NULL AUTO_INCREMENT=1;
-- 刪除自增主鍵(順序固定:先去自增,再刪主鍵)
ALTER TABLE tb CHANGE id id INT(10); -- 移除 AUTO_INCREMENT
ALTER TABLE tb DROP PRIMARY KEY; -- 刪除主鍵約束
理解主鍵類型差異、遵循操作順序,能有效避免「Duplicate entry '0' for key 'PRIMARY'」等常見錯誤。