方法1

下記のクエリーでエラーが起きなければテーブルが存在する

SELECT 1 FROM <table_name> LIMIT 1;

方法2

information_schematablesにクエリーを出して、レコード存在すればテーブルが存在する

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)