SQL初心者向け:UNIQUE制約と主キーの違いを解説

記事内に広告が含まれています。
初学者
初学者

主キーとunique制約はどっちも一意性を保証するけど、使い分けがわからん

主キー(PRIMARY KEY)UNIQUE 制約があります。一意性を保証する点では同じですが、異なる目的と特性を持っています。

※一意性:テーブル内で特定の値が列内で他と重複しない、唯一の値である性質のこと

覚え方:一意性を持たせる目的が違う

  • 主キー:レコードを特定することが第一目標で、その達成のため一意性が必要となる
  • UNIQUE制約:重複があり得ない値を管理・保存して整合性・一貫性を保つことが目標。その達成の手段

主キー(PRIMARY KEY)について

レコードの識別子としての役割を持ちます。主キーを1つ指定すれば、その値をもつ1行のレコードが必ず指定できます。

  • 一意性を保証します。
  • NULL値を許容しません
  • テーブルごとに1つだけ設定可能
  • コードやIDが格納されるべき

用途例

社員ID, ユーザIDなどのユニークなIDやコードを主キーとして利用することが多いです。

UNIQUE制約について

UNIQUE制約がある列には、同じ値は絶対に入りません。

ただし、NULLの場合は複数個登録することが可能であることに注意が必要です。

  • 1つのテーブル内で重複を防ぐことができる
  • NULL値を許容する。ただし、複数のNULL値が存在してもエラーにはならない
  • 複数のUNIQUE制約を設定可能

用途

メールアドレスや電話番号、ユーザ名などを設定することが多いです。ユーザーごとに一意である必要がありますが、IDやコードでないので主キーには不適切な値と言えます。

設定方法

テーブル生成時の設定方法

CREATE TABLE users (
    id INT PRIMARY KEY, // 主キー
    email VARCHAR(255) UNIQUE // unique制約
);

後からUNIQUE制約をつけたい場合

ALTER TABLE users 
ADD UNIQUE (email); //unique制約をつけたい列名を指定

まとめ

主キーはテーブルの中でその行を一意に識別するための中心的な要素であり、UNIQUE制約はそれ以外の列における一意性の保証を目的とします。

Linux
スポンサーリンク