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:更适合在查询操作中附带判断,不适合高频使用。