整理 MySQL 常用結構變更與資料操作語句,涵蓋欄位管理、索引維護、外鍵約束、資料表重命名等高頻場景,附帶實戰範例與官方文檔重點摘錄,適合開發與 DBA 日常查閱。
ALTER TABLE tablename ADD colname type NOT NULL DEFAULT '0';
範例:ALTER TABLE mmanapp_mmanmedia ADD appid_id INT NOT NULL DEFAULT 372;
ALTER TABLE tablename DROP COLUMN colname;
ALTER TABLE t1 CHANGE a b INTEGER;
ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;
ALTER TABLE infos CHANGE list list TINYINT NOT NULL DEFAULT '0';
ALTER TABLE t1 RENAME t2;
-- 新增普通索引
ALTER TABLE tablename ADD INDEX idx_name (col1, col2);
-- 新增主鍵
ALTER TABLE tablename ADD PRIMARY KEY (id);
-- 新增唯一索引
ALTER TABLE tablename ADD UNIQUE uk_card (cardnumber);
-- 刪除索引
ALTER TABLE tablename DROP INDEX idx_name;
ALTER TABLE yourtablename
ADD [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}];
範例:ALTER TABLE mmanapp_mmanmedia ADD CONSTRAINT fk_mdappid FOREIGN KEY (appid_id) REFERENCES app(id);
ALTER TABLE yourtablename DROP FOREIGN KEY fk_symbol;
注意:若建立時未指定 CONSTRAINT 名稱,需用 SHOW CREATE TABLE 查看系統生成的符號名(如 0_38775)。
SHOW CREATE TABLE tbl_name 或 SHOW TABLE STATUS FROM db_name LIKE 'tbl_name'(Comment 欄位顯示)SET FOREIGN_KEY_CHECKS = 0;
SOURCE dump_file.sql;
SET FOREIGN_KEY_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 0,否則報錯 1005 (errno 150)PRIMARY KEY + UNIQUE KEY 同一欄位)class_status 只有兩值)class_desc VARCHAR(2048))BIGINT AUTO_INCREMENTTINYINT 而非 CHAR/VARCHAROPTIMIZE TABLE 整理碎片(高頻 DELETE/UPDATE 表)