ホームページ  >  記事  >  データベース  >  mysqlテーブルタイプの変更

mysqlテーブルタイプの変更

WBOY
WBOYオリジナル
2023-05-23 14:03:131522ブラウズ

MySQL は、オープンソースのリレーショナル データベース管理システムです。さまざまなニーズを満たすためにさまざまなタイプのテーブルを提供します。実際のアプリケーションでは、テーブル タイプの変更が必要になる場合があります。この記事では、MySQL テーブルの種類を変更する方法を紹介します。

  1. 概要

MySQL テーブル タイプは、主に InnoDB、MyISAM、MEMORY、CSV などのタイプに分類されます。 InnoDB は MySQL のデフォルトのストレージ エンジンです。各ストレージ エンジンには長所と短所があり、実際のアプリケーションの実際のニーズに応じて選択する必要があります。

MySQL では、テーブルのデータ型の変更は一般に 2 つの状況に分けられます。

1) 非トランザクション テーブル (MyISAM など) からトランザクション テーブル (MyISAM など) に変更する。 InnoDB);

2) トランザクション テーブル (InnoDB など) から非トランザクション テーブル (MyISAM など) に変更します。

2 つの状況での変更方法は少し異なります。以下で詳しく紹介します。

  1. 非トランザクション テーブルからトランザクション テーブルへの変更

非トランザクション テーブルからトランザクション テーブルへの変更は、比較的一般的な操作です。以下では、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 テーブルに正常に変更されます。

  1. トランザクション テーブルから非トランザクション テーブルへの変更

実際のアプリケーションでは、トランザクション テーブルから非トランザクション テーブルへの変更は比較的まれです。以下では、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 テーブルに正常に変更されました。

  1. 結論

MySQL テーブル タイプの変更は、比較的一般的な操作です。実際のアプリケーションでは、実際のニーズに基づいてさまざまなテーブル タイプを選択する必要があります。非トランザクション テーブルからトランザクション テーブルに変更する場合でも、トランザクション テーブルから非トランザクション テーブルに変更する場合でも、テーブルのロックとデータのバックアップが必要です。この記事では、MySQL テーブル タイプを変更する基本的な方法を紹介し、読者の役に立つことを願っています。

以上がmysqlテーブルタイプの変更の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。