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

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を参照するクエリを使えば、データベース全体を一つずつ調べることなく、特定のカラムを持つテーブルを瞬時にリストアップできます。テーブル数が多い大規模なデータベースでも、この方法なら効率的に目的のテーブルを見つけられるので、ぜひ活用してみてください。

  1. MySQLデータベースのテーブルサイズを取得・確認する方法

    MySQLデータベース内の各テーブルのサイズを確認したい場合、システムが標準で提供している「information_schema.TABLES」を利用するのが最も手軽な方法です。このスキーマには、すべてのデータベースとテーブルに関するメタ情報(データ長、インデックス長など)が格納されており、SQLクエリだけで簡単に容量を調べることができます。全テーブルのサイズを一覧表示するSQL構文以下のクエリを実行すると、指定したデータベースに含まれるすべてのテーブルのサイズをMB単位で一覧取得できます。 SELECT TABLE_NAME AS `ALLTABLESNAME`, ROUND((DATA_L

  2. JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法

    MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI