MySQLテーブルにカラム(列)が存在するかどうかを確認する2つの方法
MySQLのテーブルに特定のカラム(列)が存在するかどうかを確認したい場合、主に以下の2つの方法があります。
- DESCコマンドを使う方法
- SHOW COLUMNSコマンドを使う方法
検証用テーブルの作成
まず、動作確認のために複数のカラムを持つテーブルを作成します。
mysql> CREATE table ColumnExistDemo
-> (
-> UniqueId int,
-> UniqueName varchar(200),
-> UniqueAddress varchar(200)
-> );
Query OK, 0 rows affected (0.57 sec)
方法1:DESCコマンドで全カラムを一覧表示する
最初の方法は、DESCコマンドを使ってテーブル内のすべてのカラム名と型情報を取得するやり方です。構文は次のとおりです。
DESC yourTableName;
実際にこのクエリを実行して、カラムが存在するかどうかを確認してみましょう。ただし、この方法はすべてのカラムが表示されるため、特定の1カラムだけを調べたい場合にはあまり効率的とは言えません。
mysql> DESC ColumnExistDemo;
実行結果は以下のとおりです。
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| UniqueId | int(11) | YES | | NULL | |
| UniqueName | varchar(200) | YES | | NULL | |
| UniqueAddress | varchar(200) | YES | | NULL | |
+---------------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
方法2:SHOW COLUMNS ... LIKEで特定のカラムのみ確認する(推奨)
2つ目の方法は、LIKE句を使って特定の1カラムだけを絞り込んで確認できるため、より実用的です。構文は以下のとおりです。
SHOW COLUMNS from `yourTableName` LIKE 'yourColumnName';
それでは、このクエリを使って指定したカラムが存在するかどうかを確認してみましょう。
mysql> SHOW COLUMNS from `ColumnExistDemo` LIKE 'UniqueName';
実行結果は以下のとおりです。
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| UniqueName | varchar(200) | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
1 row in set (0.00 sec)
なお、LIKE句に一致するカラムが存在しない場合は「Empty set」と返されます。この挙動を利用すれば、シェルスクリプトやアプリケーション側でもカラムの有無を簡単に判定できます。
補足:INFORMATION_SCHEMAを使った確認方法
さらに、INFORMATION_SCHEMA.COLUMNSを参照する方法も覚えておくと便利です。WHERE句でデータベース名やテーブル名、カラム名を細かく指定できるため、プログラムから柔軟に判定したい場合に最適です。
SELECT COUNT(*) AS cnt
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'yourDatabaseName'
AND TABLE_NAME = 'yourTableName'
AND COLUMN_NAME = 'yourColumnName';
結果が1以上であれば、そのカラムは存在していることになります。用途に応じてDESC・SHOW・INFORMATION_SCHEMAの3つの方法を使い分けるとよいでしょう。
-
MySQLでテーブルが存在するかどうかを確認する方法【INFORMATION_SCHEMA.TABLES活用】
MySQLでテーブルの存在を確認するにはMySQLにおいて、特定のテーブルがデータベース内に存在するかどうかを確認したい場合、INFORMATION_SCHEMA.TABLES を利用するのが一般的な方法です。このシステムビューには、サーバー上のすべてのデータベースとテーブルに関するメタデータが格納されており、これを参照することで目的のテーブルが存在するかを簡単に調べられます。基本構文テーブルの存在確認は、以下のようなSELECT文で行います。select table_name from information_schema.tables where table_schema=database
-
MySQLでテーブルの単一行にNULL値が含まれているか確認する方法
MySQLでテーブルの行内にNULL値が含まれているかどうかを確認するには、「IS NULL」演算子を使用します。WHERE句と組み合わせることで、特定のカラムがNULLである行を簡単に抽出できます。ここでは、実際にテーブルを作成し、NULL値を含む行を検索する手順を順番に見ていきましょう。 サンプルテーブルの作成 まず、以下のようにテーブルを作成します。 例 mysql> create table demo86 -> ( -> value1 varchar(20) -> , -> value2 varchar(20)