MySQL は、オープンソースのリレーショナル データベース管理システムです。さまざまなニーズを満たすためにさまざまなタイプのテーブルを提供します。実際のアプリケーションでは、テーブル タイプの変更が必要になる場合があります。この記事では、MySQL テーブルの種類を変更する方法を紹介します。
MySQL テーブル タイプは、主に InnoDB、MyISAM、MEMORY、CSV などのタイプに分類されます。 InnoDB は MySQL のデフォルトのストレージ エンジンです。各ストレージ エンジンには長所と短所があり、実際のアプリケーションの実際のニーズに応じて選択する必要があります。
MySQL では、テーブルのデータ型の変更は一般に 2 つの状況に分けられます。
1) 非トランザクション テーブル (MyISAM など) からトランザクション テーブル (MyISAM など) に変更する。 InnoDB);
2) トランザクション テーブル (InnoDB など) から非トランザクション テーブル (MyISAM など) に変更します。
2 つの状況での変更方法は少し異なります。以下で詳しく紹介します。
非トランザクション テーブルからトランザクション テーブルへの変更は、比較的一般的な操作です。以下では、MyISAM テーブルを InnoDB テーブルに変更する方法について説明します。
1) 現在のテーブルの種類を確認する
DESCRIBE ステートメントを使用すると、テーブルのフィールド情報やインデックス情報など、テーブルの基本情報を確認できます。次のコマンドを実行します:
DESCRIBE tablename;
ここで、tablename はクエリ対象のテーブルの名前です。
2) データのバックアップ
テーブルの種類を変更する前に、テーブル内のデータをバックアップする必要があります。 mysqldump コマンドを使用して、テーブル内のデータをファイルにバックアップできます。たとえば、testDB ライブラリの test_table テーブルを test_table.sql ファイルにバックアップするには、次のコマンドを実行できます:
mysqldump testDB test_table > test_table.sql
3) ロックtable
テーブル タイプを変更する前に、テーブルをロックする必要があります。 MySQL では、ALTER TABLE ステートメントを実行するには書き込みロックが必要です。したがって、ALTER TABLE ステートメントを実行する前に、テーブルをロックして、他のユーザーがテーブルを変更できないようにする必要があります。
次のコマンドを使用してテーブルをロックできます:
LOCK TABLES tablename WRITE;
ここで、tablename は変更するテーブルの名前です。
4) テーブル タイプを変更する
次のコマンドを実行して、テーブル タイプを MyISAM から InnoDB に変更します:
ALTER TABLE tablename ENGINE=InnoDB;
このうち、tablenameは変更するテーブルの名前です。
5) テーブルのロックを解除する
変更が完了したら、テーブルのロックを解除する必要があります。次のコマンドを実行します:
UNLOCK TABLES;
この時点で、MyISAM テーブルは InnoDB テーブルに正常に変更されます。
実際のアプリケーションでは、トランザクション テーブルから非トランザクション テーブルへの変更は比較的まれです。以下では、InnoDB テーブルを MyISAM テーブルに変更する方法について説明します。
1) データのバックアップ
テーブル タイプを変更する前に、テーブル内のデータもバックアップする必要があります。バックアップ方法は以前と同じなので、ここでは繰り返しません。
2) 新しいテーブルを作成します
2 つのテーブル タイプの格納方法が異なるため、テーブルを直接変更して InnoDB テーブルを MyISAM テーブルに変更することはできません。したがって、最初に新しい MyISAM テーブルを作成し、そのテーブルにデータをインポートする必要があります。
次のコマンドを使用して、新しい MyISAM テーブルを作成できます:
CREATE TABLE new_table
(
...
) ENGINE=MyISAM;
where , new_table は作成するテーブルの名前、... は新しいテーブルのフィールド情報と制約情報です。
3) 新しいテーブルにデータをインポートする
INSERT INTO ステートメントを使用して、元のテーブルから新しいテーブルにデータを挿入できます。たとえば、test_table テーブルのデータを new_table テーブルに挿入するには、次のコマンドを実行できます:
INSERT INTO new_table SELECT * FROM test_table;
4) テーブルの名前を変更します
データのインポートが完了したら、新しいテーブルの名前を元のテーブルに変更する必要があります。次のコマンドを実行できます:
RENAME TABLE test_table TO old_table, new_table TO test_table;
ここで、old_table は古いテーブル名、test_table は新しいテーブル名です。
この時点で、InnoDB テーブルは MyISAM テーブルに正常に変更されました。
MySQL テーブル タイプの変更は、比較的一般的な操作です。実際のアプリケーションでは、実際のニーズに基づいてさまざまなテーブル タイプを選択する必要があります。非トランザクション テーブルからトランザクション テーブルに変更する場合でも、トランザクション テーブルから非トランザクション テーブルに変更する場合でも、テーブルのロックとデータのバックアップが必要です。この記事では、MySQL テーブル タイプを変更する基本的な方法を紹介し、読者の役に立つことを願っています。
以上がmysqlテーブルタイプの変更の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。