【MySQL】データベースが空かどうかを確認するクエリの書き方
INFORMATION_SCHEMA.COLUMNSを使ってデータベースが空かどうかを確認する方法
MySQLでデータベースが空(テーブルが1つも存在しない状態)かどうかを調べたい場合、INFORMATION_SCHEMA.COLUMNSテーブルを利用すると簡単に確認できます。
基本構文
データベースが空かどうかをチェックするための基本構文は以下の通りです。
SELECT COUNT(DISTINCT `TABLE_NAME`) AS 任意の別名 FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `table_schema` = 'データベース名';
このクエリは、指定したデータベース内に存在するテーブルの数を返します。結果が「0」であればデータベースは空であり、0以外の場合はその数だけテーブルが存在することを意味します。
ここでは、事前に作成しておいた2つのデータベース「sample」と「test3」を使って、実際の動作を確認してみましょう。
- sample:多数のテーブルを持つデータベース → クエリはテーブル数を返す
- test3:テーブルが1つもないデータベース → クエリは0を返す
ケース1:データベース「sample」の場合
実行するクエリは以下の通りです。
mysql> SELECT COUNT(DISTINCT `table_name`) AS TotalNumberOfTables FROM `information_schema`.`columns` WHERE `table_schema` = 'sample';
実行結果にはテーブルの総数が表示されます。つまり、このデータベースは空ではありません。
+---------------------+ | TotalNumberOfTables | +---------------------+ | 130 | +---------------------+ 1 row in set (0.01 sec)
ケース2:データベース「test3」の場合
続いて、もう一方のデータベースに対して同じクエリを実行します。
mysql> SELECT COUNT(DISTINCT `table_name`) AS TotalNumberOfTables FROM `information_schema`.`columns` WHERE `table_schema` = 'test3';
実行結果が「0」を返しているため、このデータベースは空であることがわかります。
+---------------------+ | TotalNumberOfTables | +---------------------+ | 0 | +---------------------+ 1 row in set (0.00 sec)
まとめ
このように、クエリの結果が「0」であればデータベース内にテーブルが1つも存在しないこと、すなわちデータベースが空であると判定できます。シェルスクリプトやアプリケーションからデータベースの状態を自動的にチェックしたい場合にも、この手法は手軽で便利なので、ぜひ活用してください。
-
MySQLでカラムがNULLまたは空文字かどうかを確認する方法
MySQLでカラム(列)がNULLか、あるいは空文字(空の値)かどうかを確認するには、WHERE句とIS NULLを組み合わせて使用します。空文字の判定には、条件として(空の文字列)を指定します。この記事では、実際にテーブルを作成しながら、NULLと空文字を判定する手順を具体的に解説します。1. テーブルの作成まず、CREATE文を使ってテーブルを作成します。mysql> CREATE table ColumnValueNullDemo -> ( -> ColumnName varchar(100) -> ); Query OK, 0 rows affected (0.
-
MySQLで現在選択中のデータベースを確認する方法|DATABASE()関数とstatusコマンドの使い方
MySQLに接続している際、「今どのデータベースを選択しているのか」を確認したい場面はよくあります。この記事では、DATABASE()関数やstatusコマンドを使って、現在選択中のデータベース名を簡単に確認する方法を解説します。 DATABASE()関数で選択中のデータベースを確認する MySQLでは、DUALテーブルに対してDATABASE()関数を実行することで、現在選択されているデータベース名を取得できます。 手順1:データベースを選択する まず、例として「business」というデータベースを選択してみましょう。以下のコマンドを実行します。 mysql> use busi