MySQLで特定のテーブルに使用されているストレージエンジンを確認する方法
MySQLでは、information_schema データベースの TABLES テーブルを参照することで、任意のテーブルに使用されているストレージエンジンを簡単に確認できます。ここでは、具体的なSQL文と実行結果の見方を解説します。
ストレージエンジンを確認するSQL文
以下のSQL文を実行すると、データベース「tutorial」内の「Student」テーブルに使用されているストレージエンジンを取得できます。
mysql> SELECT ENGINE FROM information_schema.TABLES
-> WHERE TABLE_SCHEMA = 'tutorial'
-> AND TABLE_NAME = 'Student';
+--------+
| ENGINE |
+--------+
| MyISAM |
+--------+
1 row in set (0.13 sec)
実行結果の見方
この例では、「Student」テーブルに MyISAM ストレージエンジンが使用されていることがわかります。結果セットの ENGINE 列に表示される値が、そのテーブルで実際に使われているストレージエンジンです。
- TABLE_SCHEMA: 対象となるデータベース名を指定します。
- TABLE_NAME: 確認したいテーブル名を指定します。
- ENGINE: 使用されているストレージエンジンの名前が返されます(例:InnoDB、MyISAM など)。
補足:SHOW TABLE STATUS を使う方法
information_schema を直接参照する代わりに、SHOW TABLE STATUS ステートメントを使っても同じ情報を確認できます。
mysql> SHOW TABLE STATUS FROM tutorial WHERE Name = 'Student'\G
このコマンドでは、Engine 列のほかに、行数・平均行長・作成日時などのテーブルに関する詳細情報も同時に取得できます。単純にエンジンだけ知りたい場合は information_schema へのクエリが手軽で、テーブル全体の状態を把握したい場合は SHOW TABLE STATUS が便利です。用途に応じて使い分けるとよいでしょう。
-
MySQLのテーブル名に「user」は使える?予約語エラーの原因と回避方法を解説
MySQLで「user」というテーブル名は使用できる?結論から言うと、「user」はMySQLの予約語(リザーブドワード)であるため、そのままテーブル名として使用することはできません。CREATE TABLE文などで「user」を使おうとすると、構文エラーが発生します。この問題を回避するには、主に以下の2つの方法があります。テーブル名を「users」など別の名前に変更するバッククォート(`)で「user」を囲んで使用するバッククォートを使った例どうしても「user」という名前を使いたい場合は、次のようにバッククォートで囲みます。mysql> create table `user` ( .
-
MySQLテーブルのストレージエンジンを変更する方法
MySQLでは、ALTER TABLE文を使うことで、既存テーブルのストレージエンジンを簡単に変更できます。例えば、MyISAMで作成したテーブルをInnoDBに切り替えたい場合などに役立ちます。 基本構文 alter table yourTableName ENGINE=InnoDB; yourTableName の部分に対象となるテーブル名を指定し、ENGINE= の後ろに設定したいストレージエンジン名を記述します。 サンプルテーブルの作成 まず、MyISAMエンジンを使用したテーブルを作成してみましょう。 mysql> create table DemoTable &n