person(id, name, sex, birth)
INSERT INTO person VALUES (1, '張三', '男', 1988);
INSERT INTO person (id, name, sex, birth) VALUES (6, '王芳', '女', 1992);
INSERT INTO person (id, name) VALUES (8, '錢名'), (9, '章碩');
INSERT INTO person2 (id, name, sex, birth) SELECT * FROM person;
前提:目標列與源查詢列數量、順序、類型完全一致。
CREATE TABLE per AS SELECT * FROM person;
UPDATE person SET name='小紅' WHERE id=3;
UPDATE person SET name='小紅', sex='女' WHERE id=3;
UPDATE person SET sex='未知'; -- 無WHERE,全表生效
鐵律:執行UPDATE前必先SELECT確認影響行數。生產環境建議:
safe_updates=1(拒絕無WHERE/無LIMIT的UPDATE/DELETE)LIMIT 1防止誤傷DELETE FROM person WHERE id=9;
DELETE FROM person;
TRUNCATE TABLE person;
| 特性 | DELETE | TRUNCATE |
|---|---|---|
| 速度 | 慢(逐行) | 極快(釋放頁) |
| 事務 | 支持回滾 | 不支持(隱式提交) |
| 觸發器 | 觸發 | 不觸發 |
| 自增ID | 不重置 | 重置為1 |
| 外鍵約束 | 檢查 | 失敗(被引用表不可截斷) |
數據變更操作不可逆、高風險,建立標準化操作流程(工單、審批、驗證、回滾預案)是DBA職業素養的體現。