データベースの用語一覧へ
このページの目次

主キーとは?

最終更新:2026/08/18

3秒でわかる

テーブルの行を1つに絞り込むための列。値の重複と空を許さない制約があり、更新や削除の対象を取り違えないための土台になります。

もう少し詳しく

どういうものか

テーブルの中の1行を、他のどの行とも取り違えずに指し示すための列、または複数列の組み合わせが主キーです。主キーに指定した列は2つの制約を必ず背負います。1つは一意性で、同じ値が2つの行に現れてはいけません。もう1つは非 NULL で、値が空の行は登録できません。この2つがそろってはじめて「この値を渡せば行が1つに決まる」と言い切れます。

多くの RDBMS では、主キーを定義した時点で一意インデックスが自動で張られます。主キーは行を識別する意味づけであると同時に、その列での検索を速くする物理的な仕組みでもあります。

なぜ必要か

主キーが無いテーブルでは、UPDATE や DELETE の WHERE 句で1行だけを狙うことができません。氏名や日付で絞っても、たまたま同じ値の行があれば巻き添えで書き換わります。修正しようとした1件が10件になり、しかも実行後に気づくことになります。

もう1つの理由は参照です。別のテーブルから「この行に紐づく」と書く外部キーは、参照先に主キー (または一意キー) があってはじめて張れます。主キーの設計は、テーブル単体ではなくテーブル同士のつなぎ方を決める作業でもあります。

具体例

CREATE TABLE members ( id BIGINT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(255) NOT NULL UNIQUE, name VARCHAR(100) NOT NULL ); -- 複数列をまとめて主キーにする (複合主キー) CREATE TABLE course_enrollments ( member_id BIGINT, course_id BIGINT, joined_at DATETIME NOT NULL, PRIMARY KEY (member_id, course_id) );

下の例では、同じ人が同じコースへ二重登録されることを主キーそのものが弾いています。アプリ側で重複チェックを書き忘れても、データベースが最後の砦になります。

似た用語との違い

制約重複空の値1テーブルでの個数
主キー不可不可1つだけ
一意キー (UNIQUE)不可許す実装が多いいくつでも
外部キーいくつでも


つまずきやすいところ

メールアドレスや社員番号のような業務上の一意な値を、そのまま主キーにする設計がよくつまずきます。メールアドレスは変更されますし、社員番号は制度改定で桁が変わります。主キーの値が変わると、それを参照している全テーブルを追いかけて直すことになります。

実務では、意味を持たない連番や UUID を主キーに置き、業務上の一意な値には UNIQUE 制約を別に付ける形が選ばれます。前者を代理キー、後者を自然キーと呼びます。

覚え方

「1行を名指しできる住所」と考えると外れません。住所が空でも重複でも、郵便は届きません。

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地主キーDB

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

SQL・データベースコースの全編を見る