SQL:主キーと一意キーと外部キー
スポンサーリンク
各キーの違い
重複 | NULL値 | 表に設定できる数 | |
---|---|---|---|
主キー | × | × | 1つのみ |
一意キー | × | ○ | 複数可 |
外部キー | ○ | ○ | 複数可 |
主キー
主キー(プライマリキー/PRIMARY KEY)とは、表の中で、行を一意に識別するための列(または組み合わせ)のことです。1つの表に1つのみ設定することができ、NULL値を含めることはできません。基本的に、一度主キー列に格納した値を後から変更することはありません。
USER表
ID | USER_NAME | USER_NAME_KANA | ADDRESS_CODE |
---|---|---|---|
10001 | 佐藤 | サトウ | 013 |
10002 | 鈴木 | スズキ | 001 |
10003 | 高橋 | タカハシ | 047 |
10004 | 鈴木 | スズキ | 013 |
USER表のID列が主キーとなっている場合、ID列には重複した値やNULL値を格納することはできません。
一意キー
一意キー(ユニークキー/UNIQUE KEY)とは、表の中で、行を一意に識別するための列(または組み合わせ)のことです。
1つの表に複数設定することができ、NULL値を含めることができます。
USER表
ID | USER_NAME | USER_NAME_KANA | ADDRESS_CODE |
---|---|---|---|
10001 | 佐藤 | サトウ | 013 |
10002 | 鈴木 | スズキ | 001 |
10003 | 高橋 | タカハシ | 047 |
10004 | 鈴木 | スズキ | 013 |
(null) | 田中 | タナカ | 027 |
USER表のID列が一意キーとなっている場合、ID列には重複した値を格納することはできませんが、NULL値を格納することはできます。
外部キー
外部キーとは、表の中の主キー、または別の表の主キーを参照する列のことです。
NULL値を含めることができ、値を入れる場合には、参照する列にある値のみ格納することができます。
USER表
ID | USER_NAME | USER_NAME_KANA | ADDRESS_CODE |
---|---|---|---|
10001 | 佐藤 | サトウ | 013 |
10002 | 鈴木 | スズキ | 001 |
10003 | 高橋 | タカハシ | 047 |
10004 | 鈴木 | スズキ | 013 |
ADDRESS表
CODE | NAME |
---|---|
001 | 北海道 |
013 | 東京都 |
027 | 大阪府 |
047 | 沖縄県 |
USER表のADDRESS_CODE列は、ADDRESS表のCODE列を参照する外部キーに設定されています。そのため、ADDRESS表にないものを格納することはできません。
また、ADDRESS表のCODE列は、ADDRESS表の主キーに設定されています。