SHOW TABLES LIKE 查詢
直接使用 SHOW TABLES LIKE 'table_name' 來判斷表是否存在。結果為空表示表不存在。
$tableName = 'your_table_name';
$res = Db::query("SHOW TABLES LIKE '{$tableName}'");
if (empty($res)) {
echo "表不存在";
} else {
echo "表已存在";
}
INFORMATION_SCHEMA 查詢
查詢 INFORMATION_SCHEMA.TABLES 表,該表儲存了所有資料庫的表資訊。對於包含大量表的資料庫,因為可以直接查詢目標表的資訊,比 SHOW TABLES LIKE 更有效。
$tableName = 'your_table_name';
$dbName = 'your_database_name';
$res = Db::query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{$dbName}' AND TABLE_NAME = '{$tableName}'");
if (empty($res)) {
echo "表不存在";
} else {
echo "表已存在";
}
Try-Catch 捕獲異常
嘗試對錶執行一條簡單的查詢,如果表不存在會丟擲異常,可以透過捕獲異常來判斷表是否存在。
$tableName = 'your_table_name';
try {
Db::query("SELECT 1 FROM {$tableName} LIMIT 1");
echo "表已存在";
} catch (Exception $e) {
echo "表不存在";
}
總結
SHOW TABLES LIKE:簡單直接,適合小型資料庫。
INFORMATION_SCHEMA 查詢:適合包含大量表的資料庫,尤其是在需要批次判斷多張表的情況下。
Try-Catch:更適合在查詢操作中附帶判斷,不適合高頻使用。