MySQLでテーブル定義を取得

MySQLでテーブル定義を取得

記事一覧MySQLでテーブル定義を取得

似たような構成のテーブルを作る時に、今までは mysqldump コマンドで -d オプションを付けて実行していました。

これでも十分に要件は満たせるのですが、MySQL のコンソールからサクっと出したい場合もあるので、SHOW CREATE TABLE コマンドで出力してみます。

SHOW CREATE TABLE table_name;

\G を最後に付けた方が多少は見やすいでしょうか。

       Table: table_name
Create Table: CREATE TABLE `table_name` (

  (省略)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

それほど使う機会はないですが、SHOW 系のコマンドは DB やテーブル、INDEX など、いざって時にすぐに情報が取り出せるので、基本的なものは覚えておくか、コマンドをまとめておくといいですね。

# 指定のテーブルのINDEXの確認
SHOW INDEX FROM table_name;

# テーブルの情報
SHOW TABLE STATUS;

SHOW TABLE STATUS LIKE 'table_name'\G;

よく、Rows の値がレコード数と一致しないという話を見かけますが、ストレージエンジンが InnoDB の場合は一致しないです。

昔は更新の少ない参照メインのテーブルや全文検索用のテーブルは、MyISAM のストレージエンジンを採用していましたが、この場合は Rows とレコード数が一致します。

InnoDB の場合は素直に COUNT を取得するのがいいですね。

そういえば、MySQL5.7 から InnoDB でも全文検索ができるんですね。

参考カテゴリ

エンジニア記事一覧

最新の投稿やよく見られているのオススメ記事一覧です。