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

【MySQL】INFORMATION_SCHEMAとORDER BYを使ってカラム名をアルファベット順に取得する方法

MySQLでテーブルのカラム名をアルファベット順に取得したい場合は、INFORMATION_SCHEMA.COLUMNS に対して ORDER BY 句を使用します。データベースのメタ情報を管理する INFORMATION_SCHEMA を活用することで、実際にSELECT文でデータを取り出すことなく、カラム構成だけを簡単に確認できます。

基本の構文

カラム名をアルファベット順(昇順)で取得するための基本構文は以下の通りです。

SELECT anyReferenceName.COLUMN_NAME FROM
INFORMATION_SCHEMA.COLUMNS anyReferenceName
WHERE anyReferenceName.TABLE_NAME = 'yourTableName'
ORDER BY anyReferenceName.COLUMN_NAME

まず INFORMATION_SCHEMA.COLUMNS から対象テーブルの全カラムを抽出し、その結果に対して ORDER BY で並べ替えを行います。WHERE 句でテーブル名を指定することで、目的のテーブルのカラムのみを取得できる点がポイントです。

動作確認用のサンプルテーブルを作成する

それでは、実際に構文の挙動を確認してみましょう。まずは検証用のテーブルを作成します。あえてカラムをバラバラの順序で定義している点に注目してください。

mysql> create table ColumnsOrder
    -> (
    -> StudentFirstName varchar(20),
    -> Id int,
    -> StudentAge int,
    -> StudentLastName varchar(20)
    -> );
Query OK, 0 rows affected (0.90 sec)

このテーブルには、定義順とは異なる順序で「Id」「StudentAge」「StudentFirstName」「StudentLastName」の4つのカラムが存在しています。ここから、アルファベット順にカラム名を取得していきます。

ケース1:昇順(A→Z)で取得する

ORDER BY はデフォルトで昇順(ASC)ソートを行います。そのため、特にオプションを付けなくてもアルファベット順になります。

mysql> select ref.column_name from information_schema.columns ref
    -> where ref.table_name = 'ColumnsOrder'
    -> order by ref.column_name;

実行結果は以下の通りです。

+------------------+
| COLUMN_NAME      |
+------------------+
| Id               |
| StudentAge       |
| StudentFirstName |
| StudentLastName  |
+------------------+
4 rows in set (0.13 sec)

カラム名がアルファベットの昇順できれいに並んでいることが確認できます。

ケース2:降順(Z→A)で取得する

逆順(降順)で取得したい場合は、ORDER BY の末尾に DESC を付けるだけでOKです。

mysql> select ref.column_name from information_schema.columns ref
    -> where ref.table_name = 'ColumnsOrder'
    -> order by ref.column_name desc;

実行結果は以下の通りです。

+------------------+
| COLUMN_NAME      |
+------------------+
| StudentLastName  |
| StudentFirstName |
| StudentAge       |
| Id               |
+------------------+
4 rows in set (0.00 sec)

まとめ

MySQLでカラム名をアルファベット順に取得する手順をまとめると、以下の3ステップです。

  • INFORMATION_SCHEMA.COLUMNS を参照してカラム一覧を取得する
  • WHERE句 で対象テーブル名を絞り込む
  • ORDER BY COLUMN_NAME で並べ替える(昇順はデフォルト、降順はDESC)

この手法は、テーブル設計のドキュメント作成や、大量のカラムを持つテーブルの構成確認などに非常に便利です。ぜひ日々の開発業務で活用してみてください。

  1. MySQLでテーブルのフィールド数(カラム数)を取得する方法

    MySQLでテーブルのフィールド数を確認するには MySQLでテーブルに含まれるフィールド(カラム)の数を表示するには、COUNT(*)を使用します。システムテーブルであるINFORMATION_SCHEMA.COLUMNSを参照することで、特定のテーブルのカラム情報を取得できます。 基本構文 フィールド数を取得するための基本構文は以下のとおりです。 SELECT COUNT(*) AS 任意の別名 FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = テーブル名 AND TABLE_SCHEMA = データベース名; table_nameに

  2. MySQLでテーブルのカラム名(列名)を取得する構文とは?

    MySQLでは、information_schema.columns テーブルを参照することで、指定したテーブルのカラム名(列名)を簡単に取得できます。データベースの構造を確認したい場合や、動的にカラム情報を取得したいアプリケーションを開発する際に非常に便利な方法です。カラム名を取得する基本構文テーブルのカラム名を取得するには、以下の構文を使用します。SELECT column_name FROM information_schema.columns WHERE table_schema = データベース名 AND table_name = テーブル名;table_schema にはデータベー