ソート順でテーブル一覧を表示する方法!SHOW TABLESに相当するMySQLクエリの書き方
MySQLでは通常SHOW TABLESコマンドを使ってデータベース内のテーブル一覧を確認できますが、このコマンドは結果をソートして表示する機能がありません。テーブル名をアルファベット順(昇順)に並べて表示したい場合は、INFORMATION_SCHEMA.TABLESビューを利用したSELECT文を使うのが効果的です。
INFORMATION_SCHEMA.TABLESとは
INFORMATION_SCHEMA.TABLESは、MySQLサーバーが管理しているすべてのデータベースとテーブルのメタ情報(スキーマ名・テーブル名・エンジンの種類など)を格納しているシステムビューです。ここからTABLE_NAMEカラムを選択すれば、テーブル一覧を自由に整形・ソートして取得できます。
基本構文
以下の構文を実行すると、指定したデータベース内のテーブル一覧を昇順(A→Z)で取得できます。
select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA= 'yourDatabaseName' order by TABLE_NAME;
ポイントは次の3つです。
・TABLE_SCHEMAに調べたいデータベース名を指定する
・ORDER BY TABLE_NAMEでテーブル名を基準に並べ替える
・降順にしたい場合は末尾にDESCを付けるだけです
実行例
ここでは「sample」というデータベースを対象に、SHOW TABLES相当のクエリを実行してみます。
mysql> select TABLE_NAME from INFORMATION_SCHEMA.TABLES
-> where TABLE_SCHEMA= 'sample' order by TABLE_NAME;
このクエリを実行すると、次のような出力が得られます。
+------------------------------------+ | TABLE_NAME | +------------------------------------+ | a | | accumulateddemo | | add10minutedemo | | add1toexistingvalue | | addanumbertocurrentvaluedemo | | addcolumnandindexdemo | | addingcurrentyeardemo | | addprefixtocolumndemo | | addtoexistingvaluedemo | | addtotaltimedemo | | addwhereclausedemo | | aggregatefunctiondemo | | allfiles | | allownulldefaulnotnulldemo | | allrecordsexceptlastone | | ampmtimedisplaydemo | | autoincrementdemo | | autoincrementtabledemo | | averagedemo | | averagestring | ...(中略)... | wheresetdemo | | wildcarddemo | | yesterdayrecordsdemo | | yourtable | +------------------------------------+ 342 rows in set (0.11 sec)
実行結果を見ると、テーブル名が「a」「accumulateddemo」「add10minutedemo」のようにアルファベット順にきちんとソートされていることが分かります。サンプルデータベースには合計342個のテーブルが存在し、それぞれが昇順で一覧表示されました。
補足:より便利な応用テクニック
INFORMATION_SCHEMA.TABLESを使うメリットは、単なる一覧表示にとどまらず、条件や整形を柔軟に組み合わせられる点です。
- テーブル数を数えたい場合:
select count(*) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='sample'; - 特定の文字列を含むテーブルだけ抽出したい場合:
where TABLE_SCHEMA='sample' and TABLE_NAME like '%demo%'を追加 - 降順で表示したい場合:
order by TABLE_NAME descに変更
このように、INFORMATION_SCHEMA.TABLESを活用すれば、SHOW TABLESコマンドでは実現できないソート済みのテーブル一覧や絞り込み表示を簡単に行えます。大量のテーブルを管理しているデータベースでは特に役立つテクニックなので、ぜひ覚えておきましょう。
-
MySQLで複数テーブルの行数を1つのクエリでカウントする方法
この記事では、MySQLで複数のテーブルの行数(レコード数)を1つのクエリだけで同時に取得する方法を解説します。鍵となるのは、SELECT文の中にサブクエリとしてCOUNT(*)を組み込むテクニックです。実際にサンプルテーブルを作りながら、動作を確認していきましょう。 手順1:最初のテーブルを作成する まず、サンプル用のテーブル「DemoTable1」を作成します。 mysql> create table DemoTable1 (FirstName varchar(100)); Query OK, 0 rows affected (0.54 sec) レコードを挿入する INSERT
-
MySQLでORDER BY FIELD()を使って複数のID順にレコードを並べ替える方法
MySQLでは、ORDER BY FIELD()を使用することで、任意のIDの順序に従ってレコードを並べ替えることができます。通常のORDER BY句は昇順・降順でのソートしか行えませんが、FIELD()関数と組み合わせることで、指定した値の並び順そのものをソート基準として利用できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable( ClientId varchar(40), ClientName varchar(40) ); Query OK, 0 rows affected (0.55 s