ALTER (修改表結構) ≠ JS alert() (彈窗)開發群常見提問:「用 alert 能不能改表結構?」—— alert 是瀏覽器彈窗 API,ALTER 才是 SQL 修改表結構的關鍵字。本文快速釐清兩者差異,並整理 ALTER TABLE 高頻操作語法備查。
<script>
alert("我是提示文字!"); // 瀏覽器彈出模態對話框
</script>
純前端交互,**零資料庫操作權限**。
ALTER TABLE tbl ADD col_name col_definition [FIRST | AFTER existing_col];ALTER TABLE student ADD name VARCHAR(10);ALTER TABLE tbl CHANGE old_col new_col col_definition;ALTER TABLE student CHANGE name name VARCHAR(20) NOT NULL DEFAULT 'liming'; (改類型+屬性)ALTER TABLE student CHANGE name name1 VARCHAR(20) NOT NULL DEFAULT 'liming'; (改名)ALTER TABLE tbl DROP COLUMN col_name;ALTER TABLE student DROP name;ALTER TABLE tbl ADD INDEX idx_name (col1, col2...);ALTER TABLE student ADD INDEX stu_name (name);ALTER TABLE tbl DROP INDEX idx_name;ALTER TABLE student DROP INDEX stu_name;SHOW INDEX FROM tbl;ALTER TABLE tbl ADD UNIQUE idx_name (col_name);ALTER TABLE tbl ADD PRIMARY KEY (col_name);ALTER TABLE tbl DROP PRIMARY KEY;ALTER TABLE tbl ADD CONSTRAINT fk_name FOREIGN KEY (col) REFERENCES ref_tbl(ref_col) ON DELETE CASCADE;ALTER TABLE tbl DROP FOREIGN KEY fk_name;ALTER TABLE tbl RENAME TO new_tbl;ALTER TABLE tbl ENGINE=InnoDB;ALTER TABLE tbl DEFAULT CHARSET=utf8mb4;ALTER TABLE tbl AUTO_INCREMENT=1000;CHANGE 需指定**完整欄位定義** (類型、長度、NULL/NOT NULL、DEFAULT),否則屬性會重置為預設值。ALTER TABLE 會鎖表 (5.6 前) 或產生臨時表 (Online DDL 5.6+),建議低峰期執行或用 pt-online-schema-change。牢記:ALTER = 改結構 (DDL),alert = 彈窗 (JS),一字之差,天壤之別。