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

推薦する

Vueは画像のズームとドラッグをサポートするリッチテキストエディタを統合しています

必要:ビジネス要件によると、写真をアップロードできる必要があり、アップロードされた写真はモバイル端末...

この記事ではSQL CASE WHENの使い方を詳しく説明します

目次シンプルな CASEWHEN 関数:これは、CASEWHEN 条件式関数を使用するのと同じです。...

アダプティブ Web デザインを実現する方法に関する関連知識ポイントの要約

「アダプティブ Web デザイン」はどのように機能しますか?実はそれほど難しいことではありません。 ...

CentOS 上での MySQL 5.6 のコンパイルとインストール、および複数の MySQL インスタンスのインストールの詳細な説明

--1. mysql用の新しいグループとユーザーを作成する # ユーザー追加 -M -s /sbin...

MySQL データベース接続例外の概要 (収集する価値あり)

Centos にプロジェクトをデプロイするときに奇妙な問題が見つかりました。データベース接続で例外...

Javascript で関数のカリー化とデカリー化を実装する方法

関数のカリー化(黒い疑問符の顔)? ? ?カレー(黒い疑問符の顔)? ? ?これは完璧な中国語翻訳で...

JavaScript の async と await のシンプルで詳細な学習

目次1. はじめに2. 詳しい説明2.1、非同期2.1.1. 関数はPromise以外のオブジェクト...

mysql 8.0.20 winx64.zip 圧縮版のインストールと設定方法のグラフィックチュートリアル

mysql 8.0.20 winx64.zip圧縮版のインストールチュートリアルは以下のように記録さ...

MySQL SQL 最適化チュートリアル: IN クエリと RANGE クエリ

まず、in() クエリについて説明します。 「High Performance MySQL」では、イ...

MySQLのインデックスシステムがB+ツリーを使用する理由の分析

目次1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 3. インデック...

Linux環境にRedisをデプロイし、Dockerにインストールする方法

インストール手順1. Redisをインストールするdocker search redis和docke...

MySQLでカーソルを宣言する方法

MySQL でカーソルを宣言する方法: 1. 変数とカーソルを宣言する 結果をvarchar(300...

JS 継承の詳細

目次序文準備する要約する継承方法プロトタイプ継承プロトタイプチェーン継承コンストラクタの借用(クラス...

CSS フロントエンドページレンダリング最適化属性 will-change の具体的な使用法

序文スクロールやサイズ変更などのスクロール イベントがトリガーされると、トリガーの頻度が非常に高くな...

Vue が Ref を使用してレベル間でコンポーネントを取得する手順

VueはRefを使用してレベル間でコンポーネントインスタンスを取得します例の紹介開発プロセスでは、レ...