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 でデスクトップ上の一般的なアイコンを表示または非表示にする方法

推薦する

権限の問題によりMySQLの設定ファイルmy.cnfを起動できない問題の解決方法

この記事では、権限の問題により MySQL 構成ファイル my.cnf を起動できない場合の関連する...

Linux で 1 つのファイルの内容を別のファイルの末尾にコピーする

問題の説明:たとえば、ファイル 11 の内容は次のとおりです。こんにちはファイル22の内容は次のとお...

nginx が動的と静的の分離を実装する方法の例

目次server1にnginxをデプロイするサーバーにlnmpを展開するノード3にhttpdをデプロ...

TypeScript 列挙の基本と例

目次序文TypeScript の列挙型とは何ですか? TypeScriptで列挙型を使用する際に注意...

Linux の文字端末でマウスを使って赤い四角形を移動する方法

すべてがファイルです! UNIX はすでにそれを言っています。エリック・レイモンドはこう言いました。...

Vue3 のレンダリング関数における互換性のない変更の詳細な説明

目次レンダリングAPIの変更レンダリング関数のパラメータレンダリング関数のシグネチャの変更VNode...

HTML テーブル タグ チュートリアル (36): テーブル ヘッダーの背景色属性 BGCOLOR

<TH> タグは、テーブル内のヘッダーのプロパティを設定するために使用されます。以下の...

Windows 10 での mysql-8.0.17-winx64 のインストール方法

1.公式サイトからダウンロードして解凍する参考: ダウンロード後、zip 圧縮ファイル (mysql...

MySQL データ分析ストレージエンジンの例の説明

目次1. 事例紹介2. システムのデフォルトのストレージエンジンとデフォルトの文字セットを表示する3...

円形/扇形メニューを2分で実装する方法を教えます(基本バージョン)

序文このプロジェクトでは円形のメニューが必要です。オンラインで検索しましたが、適切なものが見つからな...

Dockerがコンテナを起動するたびに、IPとホストが指定した操作が実行されます。

序文Dockerを使ってHadoopクラスタを起動するたびに、ネットワークカードの再バインド、IPの...

MySQL 構成 SSL マスタースレーブ レプリケーション

MySQL5.6 SSLファイルの作成方法公式ドキュメント: https://dev.mysql.c...

Vue で $attrs と $listeners を使用するチュートリアル

目次導入例要約する導入$属性すべての親コンポーネントのプロパティを継承します (props を通じて...

Zabbixのインストールと展開の詳細な説明

序文Zabbix は最も主流のオープンソース監視ソリューションの 1 つです。導入自体は難しくありま...

yum を使用して rpm と関連する依存関係をダウンロードして、docker をオフラインでインストールします。

yum を使用してすべての依存関係を一緒にインストールできますが、–downloadonly –d...