MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでROW_FORMATをDYNAMICに変更する方法【ALTER TABLE文の使い方】

MySQLでROW_FORMATをDYNAMICに変更する方法

MySQLのInnoDBテーブルで行フォーマット(ROW_FORMAT)をDYNAMICに変更したい場合は、ALTER TABLE文を使用します。DYNAMIC形式では、可変長カラムの長いデータをオーバーフローページに格納できるため、大きな行データも効率的に扱えるのが特徴です。

ROW_FORMATを変更する基本構文

ALTER TABLE テーブル名 ROW_FORMAT=DYNAMIC;

サンプルテーブルを作成する

まずは、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
(
    CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    CustomerName varchar(200),
    CustomerAge int,
    CustomerAddress varchar(200)
);
Query OK, 0 rows affected (0.73 sec)

DESCコマンドでテーブル構造を確認する

DESCコマンドを実行して、作成したテーブルの構造を確認してみましょう。

mysql> desc DemoTable;

実行すると、以下のような出力が得られます。

+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| CustomerId      | int(11)      | NO   | PRI | NULL    | auto_increment |
| CustomerName    | varchar(200) | YES  |     | NULL    |                |
| CustomerAge     | int(11)      | YES  |     | NULL    |                |
| CustomerAddress | varchar(200) | YES  |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

ROW_FORMATをDYNAMICに変更するクエリ

それでは、実際にROW_FORMATをDYNAMICへ変更してみましょう。以下のクエリを実行します。

mysql> alter table DemoTable ROW_FORMAT=DYNAMIC;
Query OK, 0 rows affected (1.05 sec)
Records: 0 Duplicates: 0 Warnings: 0

これでテーブルの行フォーマットがDYNAMICに変更されました。


補足:ROW_FORMAT=DYNAMICについて

DYNAMICはInnoDBの行フォーマットの一つで、VARCHAR型やTEXT型などの可変長カラムの値が長すぎてページに収まらない場合、その値全体をオーバーフローページに格納し、ポインタのみを行内に残します。
なお、MySQL 5.7以降ではDYNAMICがデフォルトの行フォーマットとなっています。古いバージョン(5.6以前)で使用する場合は、innodb_file_format=Barracudaおよびinnodb_file_per_table=ONの設定が必要になる点に注意してください。

  1. MySQLでカラム(列)の順序を変更する方法|ALTER TABLEとAFTERの使い方

    はい、MySQLではカラム(列)の順序を変更することが可能です。ALTER TABLE文とAFTERキーワードを組み合わせることで、特定のカラムを好きな位置へ移動させられます。 1. サンプルテーブルを作成する まず、動作確認用として以下のようなテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> `Student_Key_Age` int, -> `Student_Key_Name` varchar(20), -> `Student_Key_CountryName` varchar

  2. 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を含む複数のレコードを