MySQLでデータベースを作成日順にソートして表示するクエリの書き方
MySQLでは、ORDER BY句を活用することで、データベースを作成日順に並べて表示できます。まずは、サーバー上のすべてのデータベースを一覧表示する基本のコマンドから見ていきましょう。
すべてのデータベースを表示する
mysql> show databases;
このコマンドを実行すると、以下のように登録されている全データベースが出力されます。
+---------------------------+ | Database | +---------------------------+ | bothinnodbandmyisam | | business | | commandline | | customer_tracker_database | | customertracker | | database1 | | databasesample | | demo | | education | | hb_student_tracker | | hello | | information_schema | | javadatabase2 | | javasampledatabase | | mybusiness | | mydatabase | | mysql | | onetomanyrelationship | | performance_schema | | rdb | | sample | | sampledatabase | | schemasample | | sys | | test | | test3 | | tracker | | universitydatabase | | web | | webtracker | +---------------------------+ 30 rows in set (0.00 sec)
作成日順にデータベースを表示するクエリ
SHOW DATABASESコマンド自体にはソート機能がなく、作成日の情報も表示されません。そこで活躍するのが、MySQLに標準搭載されている情報スキーマ「INFORMATION_SCHEMA.TABLES」です。このテーブルには各テーブルの作成日時や更新日時などのメタデータが格納されており、これを集計することでデータベース単位の作成日を求められます。
以下のクエリを実行すると、各データベースの作成日時と更新日時を取得し、作成日の新しい順に並べ替えて表示できます。
mysql> SELECT
-> TABLE_SCHEMA AS ALL_DATABASE_NAME,
-> MAX(create_time) AS creationTime,
-> MAX(update_time) updatingTime
-> FROM INFORMATION_SCHEMA.TABLES
-> GROUP BY ALL_DATABASE_NAME
-> ORDER BY creationTime DESC;クエリのポイントは次の通りです。
- TABLE_SCHEMA AS ALL_DATABASE_NAME:テーブルが属するデータベース名を取得します。
- MAX(create_time):データベース内のテーブル作成日時の最大値を取得し、データベースの作成日として扱います。
- MAX(update_time):最終更新日時を併せて確認できるようにしています。
- GROUP BY ALL_DATABASE_NAME:データベース名ごとに結果をグループ化します。
- ORDER BY creationTime DESC:作成日の降順(新しい順)にソートします。
実行結果は以下のようになります。
+---------------------+---------------------+---------------------+ | ALL_DATABASE_NAME | creationTime | updatingTime | +---------------------+---------------------+---------------------+ | test | 2019-04-03 11:37:58 | 2019-04-03 11:38:55 | | hb_student_tracker | 2019-03-19 03:54:32 | NULL | | sample | 2019-03-15 00:04:29 | 2019-03-08 16:06:09 | | test3 | 2019-03-12 20:29:12 | NULL | | mysql | 2019-02-26 07:10:49 | 2019-04-03 11:38:56 | | demo | 2019-02-19 03:27:40 | NULL | | tracker | 2019-02-14 19:49:55 | NULL | | bothinnodbandmyisam | 2019-02-06 14:32:26 | 2019-02-05 18:11:14 | | commandline | 2019-01-30 21:21:56 | NULL | | rdb | 2019-01-03 19:37:43 | NULL | | business | 2019-01-02 17:32:17 | 2018-12-10 17:53:02 | | education | 2018-10-06 15:07:29 | NULL | | information_schema | 2018-09-23 02:09:14 | NULL | | sys | 2018-09-23 02:09:03 | NULL | | performance_schema | 2018-09-23 02:08:01 | NULL | +---------------------+---------------------+---------------------+ 15 rows in set (0.05 sec)
このように、INFORMATION_SCHEMAを活用すれば、SHOW DATABASESだけでは分からない作成日や更新日といった詳細なメタデータを簡単に確認できます。データベースの管理や整理を行う際にぜひ活用してみてください。
-
MySQLで日付型カラムにNULLを挿入する方法|ALTER TABLEによるカラム定義の変更手順
日付型(DATE)カラムにNULLを挿入したい場合、ALTER TABLE文とMODIFY句を使って、カラム定義をNULL許可に変更する必要があります。基本の構文alter table テーブル名 modify column カラム名 date NULL;既存のテーブル構造はそのままに、指定したカラムだけをNULLを許容する形へ変更できます。検証用テーブルを作成するまず、日付カラムをNOT NULLとして定義したテーブルを作成します。mysql> create table DemoTable ( ShippingDate date NOT NULL ); Query OK, 0
-
MySQLでNULL値を1として表示・更新する方法
MySQLでは、テーブル内のNULL値を別の値(たとえば「1」)に置き換えて扱いたい場面があります。この記事では、IFNULL関数とUPDATE文を組み合わせて、NULL値を1に変換する具体的な手順をサンプルコード付きで解説します。 1. サンプルテーブルを作成する まず、動作確認用のテーブルを作成します。 mysql> create table DemoTable1963 ( Counter int ); Query OK, 0 rows affected (0.00 sec) 2. レコードを挿入する INSERT文を使って、NULLを含む複数のレコードを