そうするのが正しい方法です。(テーブル名を囲む "[]" 中かっこに困惑しています。これらはおそらく実際の名前の一部ではないため、削除する必要があります)
さらに、これは効率的な方法です。 と の両方に定数を提供しているtable_schema
ため、テーブルが開かれていないという点で、INFORMATION_SCHEMA の最適化table_name
を利用しています。
explain select count(*) from information_schema.tables where table_schema='world' and table_name='City';
+----+-------------+--------+------+---------------+-------------------------+---------+------+------+---------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+------+---------------+-------------------------+---------+------+------+---------------------------------------------------+
| 1 | SIMPLE | tables | ALL | NULL | TABLE_SCHEMA,TABLE_NAME | NULL | NULL | NULL | Using where; Skip_open_table; Scanned 0 databases |
+----+-------------+--------+------+---------------+-------------------------+---------+------+------+---------------------------------------------------+
提供される「SHOW TABLES」ソリューションも優れています。Java/Python/Whatever code に関する限り、実質的に同じです。結果は有効な ResultSet です。
SHOW TABLES FROM world LIKE 'City';
+------------------------+
| Tables_in_world (City) |
+------------------------+
| City |
+------------------------+
しかし、ストーリーを完成させるために: これは標準的な SQL 構文ではありません。そのため、何らかの ORM のようなフレームワークを使用している場合、このタイプのクエリを常に使用できるとは限りません (EJB3 はそうさせないでください)。
また、サーバー側で解析するのは非常に困難です。サーバー側での SHOW ステートメントの結果の読み取り を参照してください。