方法1
下記のクエリーでエラーが起きなければテーブルが存在する:
SELECT 1 FROM <table_name> LIMIT 1;
方法2
information_schema
のtables
にクエリーを出して、レコード存在すればテーブルが存在する:
SELECT `TABLE_NAME`
FROM `information_schema`.`tables`
WHERE `table_schema` = '<db_name>'
AND `table_name` = '<table_name>'
LIMIT 1;
方法3
SHOW TABLES
を利用して、レコードが存在すればテーブルが存在する:
SHOW TABLES LIKE '<table_name>';
どれが一番いいのかは場合による。方法1が一番パフォーマンスが良さそうで、ただアプリ側でエラーをミュートしてしまう実装になっていると方法2, 3のほうが無難な気がする。
参考:https://stackoverflow.com/questions/8829102/mysql-check-if-table-exists-without-using-select-from(ほぼ翻訳w)