logo

MySQL の置換

MySQL の REPLACE ステートメントは、SQL 標準の拡張機能です。このステートメントは INSERT ステートメントと同じように機能しますが、古い行が PRIMARY KEY または UNIQUE インデックスのテーブル内の新しいレコードと一致する場合、このコマンドは新しい行が追加される前に古い行を削除する点が異なります。

このステートメントは、既存のレコードをテーブルに更新して最新の状態を維持する場合に必要です。この目的で標準の挿入クエリを使用すると、PRIMARY KEY の重複エントリまたは UNIQUE キー エラーが発生します。この場合、REPLACE ステートメントを使用してタスクを実行します。 REPLACE コマンドには、次の 2 つのうちの 1 つが必要です。 可能 アクションが発生します:

  • 既存のデータ行に一致する値が見つからない場合は、標準の INSERT ステートメントが実行されます。
  • 重複レコードが見つかった場合、replace コマンドは既存の行を削除し、テーブルに新しいレコードを追加します。

REPLACE ステートメントでは、更新は 2 つのステップで実行されます。標準の INSERT コマンドと同様に、最初に既存のレコードが削除され、次に新しく更新されたレコードが追加されます。したがって、REPLACE ステートメントは 2 つの標準機能を実行すると言えます。 消去 そして 入れる

構文

の構文は次のとおりです 交換する のステートメント MySQL :

 REPLACE [INTO] table_name(column_list) VALUES(value_list); 

MySQL REPLACE の例

例を使用して、MySQL の REPLACE ステートメントの動作を理解しましょう。まず、という名前のテーブルを作成します。 '人' 次のステートメントを使用します。

 CREATE TABLE Person ( ID int AUTO_INCREMENT PRIMARY KEY, Name varchar(45) DEFAULT NULL, Email varchar(45) DEFAULT NULL UNIQUE, City varchar(25) DEFAULT NULL ); 

次に、次のコマンドを使用してレコードをテーブルに入力する必要があります。 入れる 以下のような声明:

 INSERT INTO Person(ID, Name, Email, City) VALUES (1,'Mike', '[email protected]', 'California'), (2, 'Alexandar', '[email protected]', 'New York'), (3, 'Adam', '[email protected]', 'Los Angeles'), (4, 'Peter', '[email protected]', 'Alaska'); 

を実行します。 選択する ステートメントを使用して、以下の出力に表示されるレコードを確認します。

MySQL の置換

テーブルへのデータの検証後、REPLACE ステートメントを使用して古い行を新しい行に置き換えることができます。以下のステートメントを実行して、 ID が 4 の人の都市

 REPLACE INTO Person (id, city) VALUES(4,'Amsterdam'); 

上記のステートメントが正常に実行された後、置換を確認するために Person テーブルのデータを再度クエリする必要があります。

tostring Javaメソッド
MySQL の置換

の値は、 名前 そして Eメール 列は ヌル 今。これは、REPLACE ステートメントが次のように機能するためです。

  • このステートメントは、最初に Person テーブルに新しい行を挿入しようとします。しかし、id = 4 がすでにテーブルに存在するため、新しい行の挿入は失敗します。
  • したがって、このステートメントは、まず ID = 4 の行を削除し、次にアムステルダムと同じ ID と都市を持つ新しい行を挿入します。 name 列と email 列の値を指定していないため、NULL に設定されています。

行を更新する MySQL REPLACE ステートメント

次の REPLACE ステートメントを使用して、行データをテーブルに更新できます。

 REPLACE INTO table SET column1 = value1, column2 = value2; 

上記の構文は次のようになります。 UPDATE ステートメント REPLACE キーワードを除く。このステートメントでは WHERE 句を使用できないことに注意してください。

REPLACE ステートメントを使用して、次の例を実行して、 という名前の人の都市を更新します。 マイク から カリフォルニアバーミンガム

 REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham'; 

テーブルを検証すると、次の出力が表示されます。

MySQL の置換

列の値を指定していない場合は、 SET句 、このコマンドは次のように機能します。 UPDATE ステートメント これは、REPLACE ステートメントがその列のデフォルト値を使用することを意味します。

MySQL REPLACE を使用して SELECT ステートメントからデータを挿入します。

次の REPLACE INTO ステートメントを使用すると、クエリから返されたデータを含むデータをテーブルに挿入できます。

 REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition; 

上記の REPLACE クエリは次のクエリと似ていることに注意してください。 選択に挿入 声明。 REPLACE INTO ステートメントを使用して同じテーブル内の行をコピーする以下の例を実行します。

 REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2; 

テーブルを検証すると、次の出力が得られます。この出力では、同じテーブル内の行のコピーが正常に追加されたことがわかります。

MySQL の置換