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 での mysql 5.7.23 のバイナリ インストール

インターネット上のインストール情報は不均一で、落とし穴だらけです。インストールにはかなりの労力がかか...

MySQL 8.0.11 MacOS 10.13 のインストールと設定方法のグラフィックチュートリアル

MacにMySQLデータベースをインストールし、環境変数を設定する手順を参考までに記録します。具体的...

Linux の MySQL 設定の変更が有効にならない問題の解決方法

背景AWS EC2 を使用するプロジェクトサービスがあります。セキュリティとパフォーマンスを考慮して...

LeetCode の SQL 実装 (177. 給与が N 番目に高い)

[LeetCode] 177. 最も高い給与従業員テーブルからn番目に高い給与を取得する SQL ...

nginx が複数のプロキシ層を通過して実際の送信元 IP を取得するプロセスの詳細な説明

質問Nginx は $remote_addr を実際の IP アドレスとして受け取りますが、実際には...

ChromeはCookieの変更を監視し、値を割り当てます

次のコードは、Chrome による Cookie の変更の監視を導入しています。コードは次のとおりで...

Linux システムで PATH 環境変数を設定する方法 (3 つの方法)

1. Windows システムでは、JDK のインストールなど、多くのソフトウェアのインストールで...

MySQL GTID の総合概要

目次01 GTIDの紹介02 GTIDの仕組み03 GTIDの利点と欠点04 テスト環境構築05 テ...

HTMLのセマンティクスといくつかの簡単な最適化についての簡単な説明

1. セマンティゼーションとは何ですか? Bing辞書の説明セマンティクス化とは、適切な HTML ...

jsはFileReaderを使用してローカルファイルまたはBLOBを読み取ります

目次FileReaderはローカルファイルまたはBLOBを読み取ります1. FileReaderの使...

meta name="" content="の機能の詳細な説明

1. 文法: <meta name="名前" content="...

MySQL マルチバージョン同時実行制御 MVCC の詳細な研究

MVCC MVCC (Multi-Version Concurrency Control) は、マル...

MySQL ビューの原則分析

目次更新可能なビュービューのパフォーマンスビューの制限ビューは MySQL 5.0 以降で導入されま...

Dockerはローカルイメージをパッケージ化し、他のマシンに復元します

1. docker imagesを使用して、このマシン上のすべてのイメージファイルを表示します。 2...

Dockerfile echoは、指定されたファイル内の複数行のテキストを実装する方法を指定します。

Dockerfile内の指定されたファイルに複数の行を追加します。echoの後の「$」記号に注意し...