MySQL が重複データを挿入するのを防ぐ 3 つの方法

MySQL が重複データを挿入するのを防ぐ 3 つの方法

新しいテーブルを作成する

テーブル「人」を作成します(
 `id` int NOT NULL COMMENT '主キー',
 `name` varchar(64) 文字セット utf8 照合 utf8_bin NULL デフォルト NULL コメント 'Name',
 `age` int NULL デフォルト NULL コメント '年齢',
 `address` varchar(512) 文字セット utf8 照合 utf8_bin NULL デフォルト NULL コメント 'Address',
 BTREE を使用した主キー (`id`)
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

次の 3 つのデータを追加します。

挿入方法に応じてこれを回避できます。

1. 無視を挿入

insert ignore は、データベースに既に存在するデータを自動的に無視します (主キーまたは一意のインデックスに基づきます)。データがない場合、データを挿入します。データがある場合、このデータの挿入をスキップします。

--次のようにSQLを挿入します。
ignore を person (id,name,age,address) に挿入します。values(3,'那谁',23,'赣苏省'),(4,'我天',25,'浙江省');

再度データベースを確認すると、ID 4 のデータのみが挿入されていることがわかります。ID 3 のデータは既にデータベースに存在するため、無視されます。

2. を置き換える

replace into は、まずデータをテーブルに挿入しようとします。1. このデータ行がテーブル内に既に存在することが判明した場合 (主キーまたは一意のインデックスによって決定)、まずこのデータ行を削除してから、新しいデータを挿入します。 2. それ以外の場合は、新しいデータを直接挿入します。

--次のようにSQLを挿入します。
人物(ID、名前、年齢、住所)の値(3、'那谁'、23、'赣苏省')、(4、'我天'、25、'浙江省')に置き換えます。

まず、テーブル内のデータを復元し、挿入操作後に、ID 3 のデータが変更され、ID 4 のデータが追加されたことがわかります。

3. 重複キーの更新時に挿入する

重複キー更新時の挿入 insert into ステートメントの最後に重複キー更新 + フィールド更新が指定されている場合、重複データが発生したときに、後続のフィールド更新の記述に従って情報が更新されます (主キーまたは一意のインデックスによって決定されます)。

--次のようにSQLを挿入します。
重複キーに対して person (id,name,age,address) values(3,'那谁',23,'赣苏省') を挿入し、name='那谁'、age=23、address='赣苏省' を更新します。

まず、テーブル内のデータを復元し、挿入操作を実行したときに、ID 3 のデータが変更されていることがわかったので、更新操作を実行しました。

ビジネスニーズに応じて方法を選択できます。

上記は、MySQL がデータを繰り返し挿入するのを防ぐ 3 つの方法の詳細です。MySQL がデータを繰り返し挿入するのを防ぐ方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySql でデータの重複挿入を回避する 3 つの方法
  • MySQLは重複しないデータ挿入を実装するためにUNIQUEを使用する
  • MySQL が重複レコードを挿入するのを防ぐ方法
  • MySql でレコードの重複挿入を回避するいくつかの方法
  • MySQL でデータの重複挿入を回避する 4 つの方法

<<:  Docker で MySQL をインストールし、リモート接続を実装するチュートリアル

>>:  テキストの展開と折りたたみの効果を実現するJavaScript

推薦する

携帯電話に GreasyFork js スクリプトをインストールするチュートリアル

目次序文1. Iceraven ブラウザ (Firefox) (Android) 2. (アンドロイ...

仮想マシンクローン Linux centos6.5 システム ネットワーク カード構成グラフィック チュートリアル

Linux システムに触れたばかりの初心者として、VMware 仮想マシンに CentOS6.5 シ...

Dockerはコンテナポートバインディングのローカルポートを実装します

今日、イメージを起動した後、HTTP リクエスト経由でアクセスできないという小さな問題が発生しました...

CSSスタイルシートを効率的に使用するためのヒント: スタイルシートの力を最大限に活用する

インターネット経済の継続的な発展に伴い、インターネット上の専門ウェブサイト、公共サービスウェブサイト...

CSS で平均レイアウトを実現するためにネガティブ マージン テクノロジーを使用する方法

通常、IE ブラウザでの CSS の互換性の問題を解決するために、フロート レイアウトが使用されます...

MySQLトランザクション処理の使用方法とサンプルコードの詳細な説明

MySQL トランザクション サポートは、MySQL サーバー自体にバインドされているのではなく、ス...

IE8はマルチ互換モードを使用してWebページを正常に表示します

IE8には複数の互換モードがあります。 IE プラットフォームの設計者である Chris Wilso...

WeChatアプレット実装アンカー位置決め機能の例

序文小規模なプログラムの開発では、リストをスクロールして表示する必要性に遭遇することがよくあります。...

要素 el-table テーブルの二次カプセル化 (テーブルの高さの調整付き)

序文会社でのインターンシップ中、フロントエンド開発にはvue+element-uiフレームワークを使...

MySQL の高度な機能 - データ テーブル パーティショニングの概念とメカニズムの詳細な説明

目次パーティション分割メカニズムSELECTクエリINSERT操作DELETE操作更新操作パーティシ...

Dockerコンテナの紹介

1. 概要1.1 基本概念: Docker は、Go 言語をベースにしたオープンソースのアプリケーシ...

開発者がデータベースロックを詳細に理解する必要がある理由

1.ロックしますか? 1.1 ロックとは何ですか?ロックの本当の意味は、鍵またはコードで開くことがで...

Linux の daily_routine サンプルコードの詳細な説明

まずサンプルコードを見てみましょう: #/bin/bash cal 日付 -u echo "...

ie8/ie9/ie10/ie11 chrome firefox を区別するための CSS コード

ウェブサイトの互換性のデバッグは本当に面倒です。今日のウェブサイト デザイナーは、以前よりもはるかに...