MySQLデータベースからフィールド名とデータ型を取得する方法
MySQLでカラム名(フィールド名)とデータ型を取得するには?
MySQLでテーブルの各カラム(フィールド)の名前とデータ型を確認したい場合、INFORMATION_SCHEMA.COLUMNS テーブルを利用するのが最も簡単で確実な方法です。INFORMATION_SCHEMAは、MySQLサーバーが管理しているメタデータ(テーブル構造やカラム情報など)を格納する特別なデータベースであり、SQL文だけでスキーマ情報を取得できます。
基本の構文
指定したテーブルのカラム名とデータ型を一覧表示するには、以下のように記述します。
SELECT COLUMN_NAME, COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'yourTableName';
サンプルテーブルを作成して確認してみよう
まず、動作を確認するためのテーブルを作成します。
mysql> CREATE TABLE DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(60),
ClientAge int,
ClientSalary DECIMAL(10,4),
isRegularClient bool
);
Query OK, 0 rows affected (0.44 sec)このテーブルに対して、先ほどのクエリを実行します。
mysql> SELECT COLUMN_NAME, COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'DemoTable';
実行すると、次のような結果が得られます。
+-----------------+---------------+ | COLUMN_NAME | COLUMN_TYPE | +-----------------+---------------+ | Id | int(11) | | ClientName | varchar(60) | | ClientAge | int(11) | | ClientSalary | decimal(10,4) | | isRegularClient | tinyint(1) | +-----------------+---------------+ 5 rows in set (0.02 sec)
実行結果のポイント
- bool型で定義したカラムは、MySQL内部では tinyint(1) として扱われます。これはMySQLの仕様上、BOOLEANがTINYINT(1)のエイリアスであるためです。
- AUTO_INCREMENT の主キーカラム「Id」は、int(11)として表示されます。
- DECIMAL型に指定した桁数(10,4)もそのまま COLUMN_TYPE に反映されます。
より正確に検索するためのコツ
同じ名前のテーブルが複数のデータベースに存在する場合もあるため、TABLE_SCHEMA条件を追加してデータベース名を明示的に指定しておくと、意図しないテーブルを参照するミスを防げます。
SELECT COLUMN_NAME, COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'yourDatabaseName' AND TABLE_NAME = 'yourTableName';
また、COLUMN_NAMEだけでなく、IS_NULLABLE(NULL許可の有無)、COLUMN_KEY(インデックス情報)、CHARACTER_MAXIMUM_LENGTH(文字列の最大長)などのカラムも同時に取得できるので、テーブル定義書の作成やマイグレーション作業にも役立ちます。
-
MySQLデータベースのテーブルサイズを取得・確認する方法
MySQLデータベース内の各テーブルのサイズを確認したい場合、システムが標準で提供している「information_schema.TABLES」を利用するのが最も手軽な方法です。このスキーマには、すべてのデータベースとテーブルに関するメタ情報(データ長、インデックス長など)が格納されており、SQLクエリだけで簡単に容量を調べることができます。全テーブルのサイズを一覧表示するSQL構文以下のクエリを実行すると、指定したデータベースに含まれるすべてのテーブルのサイズをMB単位で一覧取得できます。 SELECT TABLE_NAME AS `ALLTABLESNAME`, ROUND((DATA_L
-
MySQL Workbenchを使ってサーバー上のデータベースからERモデルを取得する方法
サーバー上のデータベースからERモデル(ER図)を取得するには、まずMySQL Workbenchを起動します。起動直後の画面は以下のとおりです。1. リバースエンジニアリングの開始次に、メニューバーから「Database」メニューを選択し、「Reverse Engineer」をクリックします。Database -> Reverse Engineer2. データベースへの接続すると、下のスクリーンショットのようなウィザードが表示されます。ここでデータベースのパスワードを入力し、「OK」ボタンを2回押してください。3. ウィザードの進行「OK」ボタンを押すと、次のウィザード画面に移行します