MySQLで特定のカラム(例:xyz)を持つすべてのテーブルを取得する方法
はじめに
データベース運用の中で、「特定のカラムを持つテーブルがどれなのか知りたい」という場面に遭遇することがあります。例えば、データベース「web」の中から、カラム「StudentFirstName」を含むすべてのテーブルを特定したいケースを考えてみましょう。
このような場合、MySQLのinformation_schemaを活用することで簡単に調べられます。information_schemaは、データベース内のテーブルやカラムなどのメタ情報を管理している特殊なデータベースです。
特定のカラムを持つテーブルを検索するクエリ
以下のクエリを実行することで、指定したカラム名を持つテーブルの一覧を取得できます。
mysql> select myColumnName.table_name from
information_schema.columns myColumnName
where myColumnName.column_name = 'StudentFirstName' and table_schema='web';
実行結果
このクエリを実行すると、次のような出力が得られます。
+---------------+
| TABLE_NAME |
+---------------+
| demotable109 |
| demotable297 |
| demotable335 |
| demotable395 |
| demotable418 |
| demotable425 |
| demotable436 |
+---------------+
7 rows in set (0.14 sec)
この結果から、上記の7つのテーブルがすべて「StudentFirstName」というカラム名を持っていることがわかります。
テーブル構造の確認
本当にそのカラムが存在するか確認するために、取得したテーブルの1つ(ここではdemotable297)の構造をDESCコマンドで確認してみましょう。
mysql> desc demotable297;
実行結果
以下の出力のように、「StudentFirstName」というカラムが含まれていることが確認できます。
+------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| StudentId | int(11) | YES | | NULL | |
| StudentFirstName | varchar(100) | YES | | NULL | |
| StudentLastName | varchar(100) | YES | | NULL | |
+------------------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
まとめ
information_schema.columnsを参照するクエリを使えば、データベース全体を一つずつ調べることなく、特定のカラムを持つテーブルを瞬時にリストアップできます。テーブル数が多い大規模なデータベースでも、この方法なら効率的に目的のテーブルを見つけられるので、ぜひ活用してみてください。
-
MySQLデータベースのテーブルサイズを取得・確認する方法
MySQLデータベース内の各テーブルのサイズを確認したい場合、システムが標準で提供している「information_schema.TABLES」を利用するのが最も手軽な方法です。このスキーマには、すべてのデータベースとテーブルに関するメタ情報(データ長、インデックス長など)が格納されており、SQLクエリだけで簡単に容量を調べることができます。全テーブルのサイズを一覧表示するSQL構文以下のクエリを実行すると、指定したデータベースに含まれるすべてのテーブルのサイズをMB単位で一覧取得できます。 SELECT TABLE_NAME AS `ALLTABLESNAME`, ROUND((DATA_L
-
JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法
MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI