掌握資料庫級別的 DDL 操作是 MySQL 管理的入門必修課。本文系統整理 CREATE、SHOW、ALTER、DROP、USE 五大核心指令族群,解析語法符號語義、字符集管理實戰與常見坑點,建立標準化操作肌肉記憶。
官方文件中的元語法符號含義:
[ ] 方括號:可選參數,可省略{ } 大括號:必選參數,二選一或多選一| 豎線:互斥選項分隔符範例:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name 表示:必須指定 DATABASE 或 SCHEMA,可選 IF NOT EXISTS,資料庫名稱必填,字符集規格可選。
-- 最簡建庫(沿用伺服器預設編碼) CREATE DATABASE t1; -- 显式指定字符集與排序規則(推薦生產環境) CREATE DATABASE IF NOT EXISTS t2 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
關鍵建議: 新專案統一使用 utf8mb4 + utf8mb4_unicode_ci 或 utf8mb4_0900_ai_ci (MySQL 8.0+),完整支援 Emoji 及補充字符,避免 utf8 (實為 utf8mb3) 的 3 位元組限制導致資料截斷。
-- 列出所有資料庫 SHOW DATABASES; -- 或支援模糊匹配 SHOW DATABASES LIKE 't%'; -- 查看建庫完整 DDL(含字符集、排序規則) SHOW CREATE DATABASE t2\G
輸出範例:CREATE DATABASE `t2` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */
-- 僅修改預設字符集(不影響既有表結構) ALTER DATABASE t2 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER DATABASE 只改變後續新建表的預設字符集,既有表結構與資料不會自動轉換。既有表遷移需逐表執行 ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4。
-- 安全刪除(不存在不報錯) DROP DATABASE IF EXISTS t2; -- 強制刪除(慎用!無確認提示) DROP DATABASE t2;
生產環境嚴禁直接執行無 IF EXISTS 的 DROP,建議納入變更管理流程,雙人複核後執行。
USE test; -- 驗證當前資料庫 SELECT DATABASE();
USE 指令將會話上下文切換至指定資料庫,後續無前綴的表操作將預設針對該資料庫。連線池場景下需注意連線狀態重置。
CREATE DATABASE t1; CREATE DATABASE IF NOT EXISTS t1; -- 第二次不會報錯,但會產生警告 SHOW WARNINGS\G
輸出會顯示 Note 1007 Can't create database 't1'; database exists,這是正常行為而非錯誤。SHOW WARNINGS 是診斷「語法合法但語義異常」的關鍵工具。
IF NOT EXISTS、CHARACTER SET utf8mb4、COLLATE utf8mb4_unicode_ciIF EXISTS,並備份驗證後執行ALTER TABLE ... CONVERT TO 而非 ALTER DATABASESHOW WARNINGS 捕捉隱性問題建立標準化的資料庫生命週期操作規範,是從「能用」邁向「好維護、低風險」的關鍵里程碑。