-- 進入庫後 SHOW TABLES; -- 列出所有表 DESC table_name; -- 結構簡覽 DESCRIBE table_name; -- 等同 DESC SHOW COLUMNS FROM table_name; -- 詳細輸出 SHOW CREATE TABLE table_name; -- 完整建表語句
USE information_schema; SELECT * FROM COLUMNS WHERE TABLE_SCHEMA='db_name' AND TABLE_NAME='table_name';
適用場景:跨庫對比結構、自動化腳本提取欄位信息。
-- 執行可能產生警告的操作後 SHOW WARNINGS; -- 輸出示例: -- Level: Warning, Code: 1265, Message: Data truncated for column 'name' at row 3
| 特性 | TRUNCATE TABLE | DELETE FROM |
|---|---|---|
| 速度 | 極快(元數據操作) | 逐行刪除,慢 |
| 事務 | 隱式提交,不可回滾 | 可回滾 |
| 觸發器 | 不觸發 | 觸發 |
| 自增值 | 重置為 1 | 保持不變 |
| 外鍵約束 | 受限(需先禁用) | 檢查約束 |
| 權限 | 需 DROP 權限 | 需 DELETE 權限 |
TRUNCATE TABLE table_name; -- 或 DELETE FROM table_name;
# 生成 TRUNCATE 語句
mysql -N -s information_schema -e "
SELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME, ';')
FROM TABLES WHERE TABLE_SCHEMA='db_name';" > truncate.sql
# 執行(-f 強制繼續忽略外鍵錯誤)
mysql -f db_name < truncate.sql
mysql -N -s information_schema -e "
SELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME, ';')
FROM TABLES WHERE TABLE_SCHEMA='db_name'" | mysql -f db_name
關鍵參數:
-N:不輸出列名-s:靜默模式(無表格框)-f:強制執行(外鍵錯誤不中斷)for i in {1..5}; do
mysql -N -s information_schema -e "
SELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME, ';')
FROM TABLES WHERE TABLE_SCHEMA='db_name'" | mysql -f db_name
[ $? -eq 0 ] && break
sleep 1
done
mysqldump -d db_name > struct_backup.sql 保留結構SET FOREIGN_KEY_CHECKS=0; 清空後 SET FOREIGN_KEY_CHECKS=1;ALTER TABLE t AUTO_INCREMENT=1;(TRUNCATE 自動完成)SELECT COUNT(*) FROM t; 確認為 0DELETE FROM t WHERE 1=1 不重置自增值:後續插入 ID 從斷點繼續掌握 DESC/SHOW COLUMNS 查結構,TRUNCATE 清數據,information_schema 做自動化,是 MySQL 運維的三板斧。生產環境操作前請三思:有備份嗎?有回滾預案嗎?確認是 TRUNCATE 還是 DELETE?