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

MySQLでINFORMATION_SCHEMA.TABLESを使ってテーブルの存在を確認する方法

INFORMATION_SCHEMA.TABLESとは

MySQLでデータベース内に特定のテーブルがすでに存在するかどうかを確認したい場合、INFORMATION_SCHEMA.TABLESを利用するのが便利です。INFORMATION_SCHEMAは、データベースやテーブルなどのメタ情報を管理する特殊なスキーマであり、そこに対してクエリを実行することで、目的のテーブルが存在するかどうかを簡単に調べられます。

基本構文

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'yourDatabaseName'
AND TABLE_NAME = 'yourTableName';

TABLE_SCHEMAにはデータベース名を、TABLE_NAMEには存在を確認したいテーブル名を指定します。該当するテーブルが存在すればそのテーブル名が返され、存在しなければ空の結果セットが返されます。

ケース1:テーブルが存在する場合

それでは、実際に上記の構文を実行して、テーブルの存在を確認してみましょう。まずはテーブルが存在する場合の例です。

mysql> SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'sample'
AND TABLE_NAME = 'DemoTable';

実行結果は以下のとおりです。

+--------------+
| TABLE_NAME |
+--------------+
| DemoTable |
+--------------+
1 row in set (0.01 sec)

結果として「DemoTable」というテーブル名が返されているため、指定したデータベース内にこのテーブルが存在することが確認できます。

ケース2:テーブルが存在しない場合

次に、存在しないテーブル名を指定した場合の動作を見てみましょう。

mysql> SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'sample'
AND TABLE_NAME = 'DemoTable2';

実行結果は以下のとおりです。

Empty set (0.01 sec)

結果が「Empty set(空の結果セット)」となった場合、指定したテーブルはデータベース内に存在しないことを意味します。

まとめ

INFORMATION_SCHEMA.TABLESに対してクエリを実行すれば、テーブルの有無をシンプルなSQLだけで判定できます。テーブルを作成する前の存在チェックや、スクリプト内での条件分岐など、さまざまな場面で活用できる実用的なテクニックなので、ぜひ覚えておきましょう。

  1. MySQLで月ごとにテーブルの値を合計する方法を解説

    MySQLでテーブル内の値を月ごとに合計したい場合は、EXTRACT()関数を使用します。この関数を使うことで、日付から特定の月の情報を抽出できます。例えば、年に関係なく1月のすべての価格を合計したい場合などに便利です。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable1415 -> ( -> ProductPurchaseDate date, -> ProductPrice int -> ); Query OK, 0 rows affected (0.53 se

  2. MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方

    MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ