主キーとは?しゅキー
主キーとは、候補キーの中から設計者が選んで指定した、表の行を一意に識別するためのキー。一意であることに加えてNULLを許さない。構成管理データベースで構成品目に一意の識別情報を与えるのと同じく、記録を後から確実に特定するための土台になる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
同じ内容の行が2つあると、どちらを直せばよいかが機械的に決まらず、更新も削除も曖昧になる。行を一意に指せる列の組を明示しておくことで、更新の対象が一つに定まり、他の表からその行を参照できるようになる。台帳やログの記録が後から追跡できるのは、この一意な識別があってのこと。
具体例
受注明細表の主キーを(受注番号, 明細番号)の組とする。構成管理でも同じ考え方で、同一型番の機器が100台あっても、資産番号という一意の識別子を割り当てておけば、変更記録や障害記録がどの1台の話なのか後からぶれない。
試験での引っ掛け
UNIQUE制約はNULLを許し、実装によっては複数のNULLも許すが、PRIMARY KEYはNULLを許さない。また複数ある候補キーのうち選んだ1つが主キーで、選ばれなかったものは代替キーと呼ぶ。「一意ならすべて主キー」ではない。
関連用語
出た過去問
出典:平成30年度 秋期 ITサービスマネージャ試験 午前Ⅱ 問21(IPA)
“社員”表から、役割名がプログラマである社員が3人以上所属している部門の部門名を取得するSQL文はどれか。ここで、実線の下線は主キーを表す。 社員(社員番号, …
正解:SELECT 部門名 FROM 社員 WHERE 役割名 = 'プログラマ' GROUP BY 部門名 HAVING COUNT(*) >= 3
要点:行の条件はWHERE、集約後の条件はHAVINGに書く
SQLの評価順は、WHEREで行を絞り込み、GROUP BYで集約し、HAVINGで集約結果を絞り込む、という順序になる。したがって役割名の条件は行単位なのでWHEREに、人数3人以上という集約後の条件はHAVING COUNT(*)>=3に書く必要がある。集約関数をWHEREに書くことはできず、HAVINGをWHEREより前に置くこともできない。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。