首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 資料表檢查與清空操作常用指令總整理

     編輯:MySQL 綜合教學

資料庫日常維護中,檢查表結構、狀態與清空資料是高頻操作。本文系統整理 MySQL 客戶端常用檢查指令,並提供多種清空資料表的實戰方案。

一、資料庫與資料表檢查指令

基本導航

mysql> SELECT DATABASE();          -- 目前使用的資料庫
mysql> STATUS;                   -- 連線狀態總覽
mysql> SHOW DATABASES;           -- 所有資料庫列表
mysql> USE database_name;        -- 切換資料庫
mysql> SHOW TABLES;              -- 目前資料庫所有表
mysql> SHOW TABLES FROM db_name; -- 指定資料庫的表(不切換)

表結構檢查(四種等效方式)

DESC table_name;
DESCRIBE table_name;
SHOW COLUMNS FROM table_name;
SHOW CREATE TABLE table_name;    -- 含建表完整 SQL

進階結構查詢

USE information_schema;
SELECT * FROM COLUMNS WHERE TABLE_NAME = 'table_name' AND TABLE_SCHEMA = 'db_name';

警告訊息檢查

mysql> SHOW WARNINGS;
-- 輸出範例:
-- +---------+------+-------------------------------------------+
-- | Level   | Code | Message                                   |
-- +---------+------+-------------------------------------------+
-- | Warning | 1265 | Data truncated for column 'name' at row 3 |
-- +---------+------+-------------------------------------------+

二、資料表清空方案總覽

方案一:重建資料庫(最徹底、最快)

# 1. 僅匯出結構
mysqldump --no-data -u root -p db_name > schema.sql

# 2. 刪除並重建資料庫
mysql -u root -p -e "DROP DATABASE db_name; CREATE DATABASE db_name;"

# 3. 匯入結構
mysql -u root -p db_name < schema.sql

優點:徹底釋放空間、重建索引統計資訊。缺點:需離線操作、權限較高。

方案二:動態產生 TRUNCATE 批次腳本(線上操作首選)

# 產生清空指定資料庫所有表的 SQL
mysql -N -s information_schema -e "SELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME, ';') FROM TABLES WHERE TABLE_SCHEMA='db_name'"

# 輸出範例:
# TRUNCATE TABLE table1;
# TRUNCATE TABLE table2;
# ...

方案三:管道直連執行(一鍵清空)

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:強制繼續執行(忽略外鍵錯誤)

外鍵處理:若有外鍵關係,單次執行可能因順序問題報錯。多執行幾次直到無錯誤,或先停用外鍵檢查:

SET FOREIGN_KEY_CHECKS = 0;
-- 執行 TRUNCATE 批次
SET FOREIGN_KEY_CHECKS = 1;

方案四:單表清空指令

TRUNCATE TABLE table_name;     -- 重建表,釋放空間,自增歸零,不可回滾
DELETE FROM table_name;        -- 逐行刪除,可回滾,不重置自增,觸發器生效
DELETE FROM table_name WHERE id > 100; -- 條件刪除

TRUNCATE vs DELETE 核心差異

特性TRUNCATEDELETE
速度極快(DDL,重建表)較慢(DML,逐行)
事務/回滾不支援(隱含提交)支援
自增計數器重置為 1保留
觸發器不觸發觸發
外鍵限制被參考時失敗受限於 ON DELETE
空間釋放立即釋放需 OPTIMIZE TABLE

實戰建議

  • 全庫清空重建:方案一(維護窗口)或方案三 + 關閉外鍵檢查
  • 單表清空:TRUNCATE 為首選
  • 保留自增值/需觸發器:使用 DELETE
  • 大表部分清理:分批 DELETE ... LIMIT 10000 避免長鎖定
  • 操作前:務必確認備份可用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved