MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでテーブルが存在するかどうかを確認する方法まとめ|SHOW TABLESとLIKE句の使い方

MySQLでは、テーブルが存在するかどうかを確認したい場面がよくあります。例えば、テーブルを作成する前に重複を避けたいときや、スクリプトの中でテーブルの有無を判定したいときなどです。本記事では、代表的な確認方法を具体的なコード例とともに解説します。

SHOW TABLESコマンドですべてのテーブルを一覧表示する

最も基本的な方法は「SHOW」コマンドを使うことです。このコマンドを実行すると、現在接続しているデータベースに存在するすべてのテーブルが一覧で表示されます。

SHOW TABLES;

実行結果は次のようになります。

+--------------------------+
| Tables_in_business       |
+--------------------------+
| addcheckconstraintdemo   |
| addcolumntable           |
| addconstraintdemo        |
| alphademo                |
| autoincrement            |
| ...                      |
| varchardemo              |
| varcharurl               |
| whereconditon            |
| xmldemo                  |
+--------------------------+
107 rows in set (0.15 sec)

この例では、「business」というデータベース内に合計107個のテーブルが存在していることが確認できます。

LIKE句を使って特定のテーブルだけを絞り込んで表示する

テーブルの数が多い場合、一覧の中から目的のテーブルを探すのは非効率です。そこで「SHOW TABLES」に「LIKE」句を組み合わせると、指定した名前に一致するテーブルだけを表示できます。

構文は以下の通りです。

SHOW TABLES LIKE 'テーブル名';

実際に「tblstudent」というテーブルが存在するかどうかを確認してみましょう。

mysql> SHOW TABLES LIKE 'tblstudent';

実行結果:

+---------------------------------+
| Tables_in_business (tblstudent) |
+---------------------------------+
| tblstudent                      |
+---------------------------------+
1 row in set (0.00 sec)

結果として1件の行が返ってきた場合はそのテーブルが存在することを意味し、逆に「Empty set」と表示された場合はテーブルが存在しないと判断できます。

INFORMATION_SCHEMAを使って確認する方法

さらに柔軟に確認したい場合は、INFORMATION_SCHEMAを参照する方法も有効です。SELECT文の一部として利用できるため、ストアドプロシージャやアプリケーション側の処理に組み込みやすくなっています。

SELECT COUNT(*)
FROM information_schema.tables
WHERE table_schema = 'business'
  AND table_name = 'tblstudent';

実行結果が「1」であればテーブルは存在し、「0」であれば存在しません。テーブル名を変数化して動的にチェックしたいケースでも、この方法が便利です。

まとめ

SHOW TABLES:すべてのテーブルを一覧表示して目視で確認する
SHOW TABLES LIKE 'テーブル名':特定のテーブルだけを絞り込んで素早く確認する
INFORMATION_SCHEMA:クエリやプログラムの中で存在判定を自動化したい場合に活用する

用途に応じてこれらの方法を使い分けることで、MySQLでのテーブル管理をより効率的に行えます。

  1. MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法

    MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法 ストアドプロシージャの中でSHOW CREATE TABLEを実行したい場合は、動的SQL(プリペアドステートメント)を利用します。SHOW系のコマンドはプロシージャ内に直接記述できないため、SQL文を文字列として組み立てて実行するのがポイントです。 まずはサンプル用のテーブルを作成しましょう。 mysql> create table DemoTable2011 -> ( -> StudentId int NOT NULL AUTO_INCREMENT, -> St

  2. MySQLでテーブルが存在するかどうかを確認する方法【INFORMATION_SCHEMA.TABLES活用】

    MySQLでテーブルの存在を確認するにはMySQLにおいて、特定のテーブルがデータベース内に存在するかどうかを確認したい場合、INFORMATION_SCHEMA.TABLES を利用するのが一般的な方法です。このシステムビューには、サーバー上のすべてのデータベースとテーブルに関するメタデータが格納されており、これを参照することで目的のテーブルが存在するかを簡単に調べられます。基本構文テーブルの存在確認は、以下のようなSELECT文で行います。select table_name from information_schema.tables where table_schema=database