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

MySQLでテーブルが存在するかどうかを確認する方法

MySQLでテーブルの存在を確認するには

MySQLで特定のテーブルが存在するかどうかを確認したい場合、INFORMATION_SCHEMA.TABLES を利用するのが便利です。このシステムビューを照会することで、データベース内に目的のテーブルが存在するかを簡単に調べられます。

まずは、確認用のサンプルテーブルを作成してみましょう。

mysql> create table Client_information
-> (
-> Id int,
-> Name varchar(10)
-> );
Query OK, 0 rows affected (0.48 sec)

次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into Client_information values(1,'Larry');
Query OK, 1 row affected (0.14 sec)

mysql> insert into Client_information values(2,'Mike');
Query OK, 1 row affected (0.17 sec)

mysql> insert into Client_information values(3,'Sam');
Query OK, 1 row affected (0.19 sec)

SELECT文を使って、テーブル内のすべてのレコードを表示してみます。

mysql> select * from Client_information;

上記のクエリを実行すると、以下のような結果が出力されます。

+------+-------+
| Id | Name |
+------+-------+
| 1 | Larry |
| 2 | Mike |
| 3 | Sam |
+------+-------+
3 rows in set (0.00 sec)

INFORMATION_SCHEMA.TABLESでテーブルの存在を確認する

それでは、テーブルがMySQL内に存在するかどうかを確認するクエリを見てみましょう。information_schema.tables に対して、table_name を条件に検索を実行します。

mysql> select * from information_schema.tables where table_name='Client_information';

以下の出力結果が表示されれば、テーブル「Client_information」が存在していることが確認できます。

+---------------+--------------+--------------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | ENGINE | VERSION | ROW_FORMAT | TABLE_ROWS | AVG_ROW_LENGTH | DATA_LENGTH | MAX_DATA_LENGTH | INDEX_LENGTH | DATA_FREE | AUTO_INCREMENT | CREATE_TIME | UPDATE_TIME | CHECK_TIME | TABLE_COLLATION | CHECKSUM | CREATE_OPTIONS | TABLE_COMMENT |
+---------------+--------------+--------------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------------+
| def | sample | client_information | BASE TABLE | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 0 | 0 | NULL | 2019-03-11 20:02:40 | NULL | NULL | utf8_general_ci | NULL | | |
| def | test | client_information | BASE TABLE | InnoDB | 10 | Dynamic | 3 | 5461 | 16384 | 0 | 0 | 0 | NULL | 2019-04-03 02:28:31 | 2019-04-03 02:29:00 | NULL | utf8mb4_0900_ai_ci | NULL | | |
+---------------+--------------+--------------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------------+
2 rows in set (0.13 sec)

補足:より効率的に存在確認を行う方法

上記の例では SELECT * を使用していますが、テーブルの存在確認だけが目的であれば、必要なカラムだけを取得するか、EXISTS を使うことでより効率的に処理できます。また、TABLE_SCHEMA を条件に加えてデータベース(スキーマ)を限定すると、意図しない同名テーブルの混同を防げます。

mysql> SELECT COUNT(*) AS table_exists
-> FROM information_schema.tables
-> WHERE table_schema = 'sample'
-> AND table_name = 'Client_information';

結果が1であればテーブルは存在し、0であれば存在しないことを意味します。この方法はスクリプトやアプリケーションからの存在チェックにも応用できるため、実務でも広く使われています。

  1. MySQLのバージョンを確認する方法をわかりやすく解説

    この記事では、現在利用しているMySQLサーバーのバージョンを確認する方法について詳しく解説します。コンソールでクエリを実行する前に、まずクライアントがサーバーに正しく接続されていることを確認しておきましょう。接続が確立されていないと、クエリを実行しても結果を取得できません。MySQLのバージョンを確認する基本クエリ以下のクエリを実行すると、使用中のサーバーのバージョン番号と、実行時点の日付を同時に取得できます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント: 関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つ

  2. C#でファイルが存在するかどうかを確認する方法

    C#でファイルの存在を確認するには、File.Existsメソッドを使用します。このメソッドは、指定したパスにファイルが存在する場合は true を、存在しない場合は false を返します。カレントディレクトリ内のファイルを確認するまず、現在のディレクトリ(カレントディレクトリ)にファイルが存在するかどうかを確認する基本的な例を見てみましょう。if (File.Exists(MyFile.txt)) { Console.WriteLine(The file exists.); }特定のディレクトリ内のファイルを確認する次に、フルパスを指定して、特定のディレクトリ内にファイルが存在する