MySQLでテーブルの作成日時・更新日時を確認する方法|SHOW TABLE STATUSの使い方
MySQLでは、create_timeやupdate_timeの情報を参照することで、テーブルがいつ作成され、いつ最後に更新されたのかを正確に把握できます。本記事では、SHOWコマンドを使ってテーブルの作成日時・更新日時を確認する手順を、実際の実行例とともにわかりやすく解説します。
1. データベースを選択する
まず、対象となるデータベースを選択します。ここでは、すでに複数のテーブルが存在するデータベース「test3」を例に進めます。
mysql> use test3; Database changed
2. データベース内のテーブル一覧を確認する
次に、以下のクエリを実行して、データベースtest3に含まれるすべてのテーブルを表示します。
mysql> show tables;
実行結果は以下の通りです。
+-------------------------+ | Tables_in_test3 | +-------------------------+ | add6hour | | deletedemo | | differentdatetime | | fieldlessthan5chars | | lastrecordbeforelastone | | mostrecentdatedemo | | nullcasedemo | | order | | orderbydatethentimedemo | | posts | | productdemo | | radiansdemo | | siglequotesdemo | | studentinformation | | updatestringdemo | +-------------------------+ 15 rows in set (0.00 sec)
3. SHOW TABLE STATUSで作成日時・更新日時を確認する
テーブルの作成日時や更新日時を調べるには、次のようにSHOW TABLE STATUSを実行します。このコマンドにより、各テーブルの詳細なステータス情報が一覧表示されます。
mysql> show table status;
出力結果には、テーブル名(Name)、ストレージエンジン(Engine)、行数(Rows)などの情報に加え、今回必要な情報である作成日時(Create_time)と更新日時(Update_time)も含まれています。
+-------------------------+--------+------+---------------------+-------------+ | Name | Engine | Rows | Create_time | Update_time | +-------------------------+--------+------+---------------------+-------------+ | add6hour | InnoDB | 0 | 2019-02-14 18:33:27 | NULL | | deletedemo | InnoDB | 6 | 2019-02-13 19:20:04 | NULL | | differentdatetime | InnoDB | 4 | 2019-02-14 10:26:28 | NULL | | fieldlessthan5chars | InnoDB | 8 | 2019-02-13 19:03:05 | NULL | | lastrecordbeforelastone | InnoDB | 8 | 2019-02-14 17:31:59 | NULL | | mostrecentdatedemo | InnoDB | 6 | 2019-02-14 17:15:53 | NULL | | nullcasedemo | InnoDB | 6 | 2019-02-14 17:55:39 | NULL | | order | InnoDB | 8 | 2019-02-14 14:23:38 | NULL | | orderbydatethentimedemo | InnoDB | 4 | 2019-02-14 18:05:36 | NULL | | posts | InnoDB | 0 | 2019-02-13 18:19:06 | NULL | | productdemo | InnoDB | 4 | 2019-02-13 20:06:36 | NULL | | radiansdemo | InnoDB | 2 | 2019-02-14 14:33:24 | NULL | | siglequotesdemo | InnoDB | 0 | 2019-02-14 10:41:23 | NULL | | studentinformation | InnoDB | 0 | 2019-02-14 17:06:07 | NULL | | updatestringdemo | InnoDB | 2 | 2019-02-13 18:25:59 | NULL | +-------------------------+--------+------+---------------------+-------------+ 15 rows in set (0.72 sec)
※実際の出力には、Version、Row_format、Data_length、Collationなど、さらに多くのカラムが含まれます。ここでは見やすさのため、主要なカラムのみを抜粋しています。
4. 特定のテーブルだけを確認する方法
テーブル数が多い場合は、LIKE句を組み合わせることで、目的のテーブルだけを絞り込んで表示できます。
mysql> show table status like 'deletedemo';
5. information_schemaから取得する方法
information_schema.TABLESをSELECT文で参照する方法もあります。必要なカラムだけを柔軟に取り出せるのがメリットです。
SELECT TABLE_NAME, CREATE_TIME, UPDATE_TIME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'test3';
注意点:InnoDBではUpdate_timeがNULLになることがある
上記の実行例のように、InnoDBテーブルの場合、Update_timeがNULLと表示されることがあります。これは、InnoDBが更新内容をバッファプール経由で遅延書き込みする仕組みを持っているためで、更新日時が常にリアルタイムに反映されるとは限らないためです。一方、MyISAMテーブルでは最終更新日時が比較的正確に記録されます。運用時に日時情報を厳密に扱いたい場合は、この挙動の違いを理解しておくと安心です。
このように、SHOW TABLE STATUSコマンドやinformation_schemaを活用すれば、MySQL上のテーブルがいつ作成され、いつ更新されたのかを簡単に確認できます。データベースの保守管理やトラブルシューティングの際にぜひ役立ててください。
-
MySQLで今日から7日前までの日付データを取得する方法
特定の期間内の日付データを取得するには、DATE()関数とINTERVAL演算子を組み合わせて使用します。ここでは、今日から7日前までの間に該当するレコードを抽出する方法を解説します。select *from yourTableName where DATE(yourColumnName) > (NOW() - INTERVAL 7 DAY);注意: 現在の日付が「2019-06-02」であると仮定して説明します。まずはサンプル用のテーブルを作成しましょう。mysql> create table DemoTable ( &
-
MySQLで設定したインデックスを確認・表示する方法【SHOW INDEXコマンド】
MySQLで作成済みのインデックスを確認したい場合は、SHOWコマンドを使用します。この記事では、実際にテーブルとインデックスを作成しながら、インデックス情報を表示する手順をわかりやすく解説します。インデックスを表示する基本構文テーブルに設定されたインデックスの一覧を取得するには、以下の構文を使用します。show index from テーブル名;サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。以下の例では、自動採番される主キー「Id」と、姓名を格納するカラムを持つテーブルを定義しています。mysql> create table DemoTable (