見出し画像

[MySQL]UNIQUE制約とON DUPLICATE KEY UPDATEの活用法

MySQLのUNIQUE制約を使う事例について紹介します!

UNIQUE制約とは

テーブルを作成するときにカラムに UNIQUE 制約をつけることでカラムに重複した値を格納することができなくなります。

https://www.javadrive.jp/mysql/table/index9.html

例えば、itemsという名前のテーブルのitemカラムにUNIQUE制約をつけることによって、そのカラム内の値が一意(ユニーク)であることを保証します。
重複したデータの入力を防ぐことができるため、itemカラムに"table"というデータが既に登録されている場合、同じ"table"というデータをitemカラムにinsertすることはできないということです。

UNIQUE制約の使い方

UNIQUE制約は、テーブル作成時に UNIQUE キーワードを使って指定することができます。

mysql > CREATE TABLE items (
  id INT AUTO_INCREMENT PRIMARY KEY,
  item VARCHAR(255) UNIQUE,
  price INT
);

上記の例では、item カラムにユニーク制約が適用されており、重複した値を持つデータの追加を防ぐことができます。

UNIQUE制約とON DUPLICATE KEY UPDATEを使ってみる

ユニーク制約を設定したカラムに対して、重複したデータが入力された場合、データの挿入(INSERT)が失敗します。
しかし、ON DUPLICATE KEY UPDATE を使うことで、重複したデータが入力された場合に、既存のデータを更新することができます。

以下の例では、item カラムにユニーク制約が適用されており、price カラムに ON DUPLICATE KEY UPDATE が設定されています。

mysql > INSERT INTO items (item, price)
VALUES ('example_item', 1000)
ON DUPLICATE KEY UPDATE price = VALUES(price);

上記のクエリによって、以下の挙動が実現されます。

  1. テーブルに既存の item カラムがINSERTされた場合、price の値を更新します。

  2. テーブルにない新しい item カラムがINSERTされた場合、その item を追加します。

このように、ユニーク制約と ON DUPLICATE KEY UPDATE を組み合わせることで、データベースの管理が容易になり、効率的なデータ操作が可能になります。

まとめ

UNIQUE制約と ON DUPLICATE KEY UPDATE を活用することで、データベース内のデータの一意性を保ちつつ、重複データの入力に対して柔軟に対応できるようになります。
特に、商品情報や在庫管理など、データの追加と更新が頻繁に行われるシステムにおいて、これらの機能は非常に有用です。

いいなと思ったら応援しよう!