MySQLは重複しないデータ挿入を実装するためにUNIQUEを使用する

MySQLは重複しないデータ挿入を実装するためにUNIQUEを使用する

SQL UNIQUE制約

UNIQUE 制約は、データベース テーブル内の各レコードを一意に識別します。
UNIQUE 制約と PRIMARY KEY 制約はどちらも、列または列セットの一意性を保証します。
PRIMARY KEY には UNIQUE 制約が自動的に定義されます。

テーブルごとに複数の UNIQUE 制約を設定できますが、PRIMARY KEY 制約はテーブルごとに 1 つしか設定できないことに注意してください。

次の SQL は、「Persons」テーブルの作成時に、「Id_P」列に UNIQUE 制約を作成します。

テーブルの作成
(
  Id_P int NULLではない、
  姓 varchar(255) NOT NULL,
  ファーストネームvarchar(255)、
  住所varchar(255)、
  都市ヴァルチャー(255)、
  ユニーク (Id_P)
)

UNIQUE 制約に名前を付け、複数の列に対して UNIQUE 制約を定義する必要がある場合は、次の SQL 構文を使用します。

テーブルの作成
(
  Id_P int NULLではない、
  姓 varchar(255) NOT NULL,
  ファーストネームvarchar(255)、
  住所varchar(255)、
  都市ヴァルチャー(255)、
  制約 uc_PersonID UNIQUE (Id_P、LastName)
)

テーブルが作成されたら、「Id_P」列に UNIQUE 制約を作成するには、次の SQL を使用します。

ALTER TABLE Persons ADD UNIQUE (Id_P)

UNIQUE 制約に名前を付け、複数の列に UNIQUE 制約を定義するには、次の SQL 構文を使用します。

ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

UNIQUE 制約を削除するには、次の SQL を使用します。

ALTER TABLE Persons DROP INDEX uc_PersonID

このように、重複レコードを挿入するたびに、MySQL はキー uni_que の重複エントリ value1-value2 を要求します。もちろん、挿入時に無視するように ignore を追加することもできます。重複レコードがなくなったので、レコードが存在しない場合は挿入を開始し、存在する場合は更新を開始します。

INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...) ON DUPLICATE KEY UPDATE field1='value1', field2='value2', field3='value3', ...

この文は値を挿入することを意味します。レコードがない場合は、

INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...)

このセクションでは、レコードが存在する場合は、

UPDATE field1='value1', field2='value2', field3='value3', ...

以下もご興味があるかもしれません:
  • MySQLテーブル内の重複レコードを見つける
  • 1 つ以上のフィールドに基づいて重複データを検索する MySQL SQL ステートメント
  • MySQLで重複データを見つけて削除し、1つの例だけを残す方法の詳細な説明
  • MySQLテーブル内の重複データをクエリする方法
  • MySQLデータベース内の重複データを削除する方法の概要
  • MySQL クエリの重複データ (重複データを削除し、ID が最も小さいデータのみを保持します)
  • 重複データを処理するための非常に包括的なMySQLコード
  • MySQL データベース内の重複レコードを削除する方法のまとめ [推奨]
  • MYSQLにデータを挿入する際に重複データを無視する方法を共有する
  • 重複したMySQLレコードを現場でチェックし、処理する実践的な記録

<<:  WeChatアプレットが複数行テキストのスクロール効果を実現

>>:  Windows Server 2012 でデスクトップ上の一般的なアイコンを表示または非表示にする方法

推薦する

CentOS7でルートパスワードをリセットする方法

レンガを移動するプロセスでは、さまざまな環境および構成の問題があり、毎回異なるエラーが発生します。 ...

vue-nuxt ログイン認証の実装

目次導入リンク始めるコードを読み進めてくださいプロキシ設定傍受を要求する異なるプレフィックスを持つイ...

Tomcat をサービスとして登録する際に注意すべき点のまとめ

Tomcat をサービスとして登録する場合の注意点は次のとおりです。 インターフェースを開いたら、以...

Linux sar コマンドの使用方法とコード例の分析

1. CPU使用率sar -p (一日中表示) sar -u 1 10 (1: 1秒ごと、10: 1...

WeChatミニプログラムQRコード生成ツール weapp-qrcode 詳細説明

WeChat ミニプログラム - QR コード ジェネレーターダウンロード: weapp-qrcod...

Reactでaxiosを使用してリクエストを送信する一般的な方法

目次Reactにaxios依存関係をインストールして導入するGETリクエストにaxiosを使用するa...

Tomcat のインストール後に起こりうる問題の紹介

1. Tomcatサービスが開いていませんブラウザのアドレスバーにlocalhost:8080と入力...

JSは星を消すケースを実現する

この記事の例では、星を消すためのJSの具体的なコードを参考までに共有しています。具体的な内容は次のと...

Zabbixで監視する必要があるホストを追加するための詳細な手順

監視ホストの追加ホスト 192.168.179.104 が zabbix 監視項目に追加されます (...

Eclipse は Tomcat を構成しますが、Tomcat には無効なポート解決策があります

目次1. EclipseがTomcatを構成する2. Tomcat の無効なポートの解決方法方法1:...

JavaScript BOMの構成と一般的なイベントの詳細な説明

目次1. 部品2. BOMの構成2. ウィンドウオブジェクトの共通イベント1. ウィンドウ読み込みイ...

ウェブページの画像を素早く表示する方法とテクニック

1. .jpg ではなく .gif を使用します。GIF は JPG に比べてサイズが小さくなります...

MySQL で null を置き換える IFNULL() および COALESCE() 関数の詳細な説明

MySQLではisnull()関数をnull値の代わりとして使用することはできません。次のように:ま...

Linux で起動時にプログラムを自動的に実行させる最も簡単な方法

たくさん集めましたが、すべて失敗に終わりました。最終的に、この方法は優れており、使用に影響を与えない...

Alibaba Cloud Ubuntu 16.04でpptpdサービスを構築する方法

1. PPTP VPNを構築するには、ポート1723とGREプロトコルを開く必要があります。 1. ...