系統整理表級 DML 與 DDL 常用操作,重點對比 TRUNCATE 與 DELETE 差異,列舉 ALTER TABLE 八類結構變更語法,含備份、導出入、跨表拼接插入實用技巧。
| 特性 | DELETE FROM tbl | TRUNCATE TABLE tbl |
|---|---|---|
| 速度 | 逐行刪除,慢 | 重建表,極快 |
| 日誌 | 記錄每行,可回滾 | 不記錄行日誌,不可回滾 |
| 自增 ID | 保留最大值,續增 | 重置為 1 |
| 觸發器 | 觸發 ON DELETE | 不觸發 |
| 鎖 | 行鎖 | 表鎖(元數據鎖) |
選擇:需回滾/觸發器/保留自增 → DELETE;大表快速清零、重置自增 → TRUNCATE。
-- 1. 選庫/看表/看結構 USE db; SHOW TABLES; DESC tbl; -- 2. 修改欄位類型 / 空非空 ALTER TABLE tbl MODIFY col VARCHAR(100) NOT NULL; ALTER TABLE tbl CHANGE col col VARCHAR(100) NULL; -- 3. 修改欄位名(可同時改類型/默認值) ALTER TABLE tbl CHANGE old_col new_col INT UNSIGNED DEFAULT 0; -- 4. 新增欄位(指定位置) ALTER TABLE tbl ADD new_col VARCHAR(50) DEFAULT '' AFTER exist_col; -- 5. 修改默認值 ALTER TABLE tbl ALTER col SET DEFAULT 'new_val'; -- 6. 修改資料類型 ALTER TABLE tbl CHANGE col col BIGINT; -- 7. 新增主鍵自增列 ALTER TABLE tbl ADD id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY FIRST; -- 8. 刪除欄位 ALTER TABLE tbl DROP COLUMN col;