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

MySQLデータベースからフィールド名とデータ型を取得する方法

```html

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(文字列の最大長)などのカラムも同時に取得できるので、テーブル定義書の作成やマイグレーション作業にも役立ちます。

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

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

  2. MySQL Workbenchを使ってサーバー上のデータベースからERモデルを取得する方法

    サーバー上のデータベースからERモデル(ER図)を取得するには、まずMySQL Workbenchを起動します。起動直後の画面は以下のとおりです。1. リバースエンジニアリングの開始次に、メニューバーから「Database」メニューを選択し、「Reverse Engineer」をクリックします。Database -> Reverse Engineer2. データベースへの接続すると、下のスクリーンショットのようなウィザードが表示されます。ここでデータベースのパスワードを入力し、「OK」ボタンを2回押してください。3. ウィザードの進行「OK」ボタンを押すと、次のウィザード画面に移行します