


MySQL の INSERT ... ON DUPLICATE KEY UPDATE はどのようにして条件付きの挿入と更新を簡素化できるのでしょうか?
Jan 21, 2025 pm 12:04 PMMySQL の INSERT ... ON DUPLICATE KEY UPDATE ステートメント: 簡素化された条件付き挿入と更新
MySQL などのリレーショナル データベースを使用する場合、条件付きで挿入または更新操作を実行する必要がある場合があります。これは、レコードが存在しない場合は新しいレコードを作成する必要がある場合、またはレコードが既に存在する場合は更新する必要がある場合に発生します。従来のアプローチでは、SELECT クエリと INSERT クエリまたは UPDATE クエリを組み合わせて使用しますが、複雑で非効率になる可能性があります。
幸いなことに、MySQL は、INSERT ... ON DUPLICATE KEY UPDATE
ステートメントというより洗練されたソリューションを提供します。この多用途コマンドを使用すると、レコードが存在しない場合に行を挿入したり、同じキーを持つ行がテーブル内にすでに存在する場合に行を更新したりすることができます。
文法:
INSERT INTO `table_name` (`column_list`) VALUES (`value_list`) ON DUPLICATE KEY UPDATE `column_name` = `new_value`
仕組み:
- クエリは標準の INSERT 構文に従い、ターゲット テーブルを指定し、列とそれに対応する値のリストを提供します。
- 一致する主キーまたは一意のキー値を持つ行が存在しない場合は、テーブルに新しい行を挿入します。
- 同じキー値を持つ行が存在する場合、
ON DUPLICATE KEY UPDATE
句は、指定された値のどの値でどの列を更新するかを指定します。
例:
次の例を考えてみましょう:
INSERT INTO `usage` (`thing_id`, `times_used`, `first_time_used`) VALUES (4815162342, 1, NOW()) ON DUPLICATE KEY UPDATE `times_used` = `times_used` + 1
-
thing_id
に存在しない主キー値 4815162342 がある場合は、指定された値を使用してusage
テーブルに新しい行を挿入します。 -
thing_id
の主キー値 4815162342 がすでに存在する場合は、現在の値に 1 を加えてtimes_used
列を更新します。
利点:
-
簡略化された構文:
INSERT ... ON DUPLICATE KEY UPDATE
は、単一のクエリを使用して挿入および更新操作を実行するための簡潔かつ明確な方法を提供します。 - 効率: 既存のレコードをチェックするための不必要な SELECT クエリを回避し、データベースのワークロードを軽減し、パフォーマンスを向上させます。
- インポテンス: この操作はべき等です。つまり、複数回実行してもデータは変更されず、エラーも発生しません。これにより、コード処理が簡素化され、データの整合性が確保されます。
以上がMySQL の INSERT ... ON DUPLICATE KEY UPDATE はどのようにして条件付きの挿入と更新を簡素化できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
