関係データベースのデータ操作は、表から行を選ぶ・列を選ぶ・表どうしをつなぐという少数の操作の組み合わせで、欲しい表を作り出すことです。
選択と射影 ── 行を取り出す、列を取り出す
関係データベースでは、データを行(レコード)と列(フィールド)からなる表で持ちます。試験の問題文では「レコード」「フィールド」の語もよく使われます。表に対する代表的な操作を関係演算といい、 どの操作も結果はまた1つの表になります。次の小さな「商品」表で見ていきます。
操作の前:商品
列 … 商品番号|商品名|分類|価格
1行目 … P01|ノート|文具|200
2行目 … P02|ボールペン|文具|150
3行目 … P03|マグカップ|雑貨|800
4行目 … P04|付箋|文具|300
選択は、条件に合う行だけを取り出す操作です。「分類が文具」で選択すると、P01・P02・P04 の3行が残り、列は4つのままです。 射影は、指定した列だけを取り出す操作です。「商品名」で射影すると、商品名の1列だけの表になり、行は4つのままです。 選択は行を絞り、射影は列を絞る。どちらも元の表の一部を切り出す操作です。
選択は行を横に切り出し、射影は列を縦に切り出します。
実際の検索では、選択と射影を続けて使うことがよくあります。文具の行だけを選択してから商品名で射影すると、ノート・ボールペン・付箋の1列3行の表になります。問題文が「◯◯の列だけを取り出す」なら射影、「◯◯という条件に合うものを取り出す」なら選択です。 どちらの操作も表は1つで済み、ほかの表は使いません。
結合 ── 共通の列で2つの表をつなぐ
結合は、2つの表を、共通の列の値で関連付けて1つの表にする操作です。 売上の記録には商品番号しか書かれていなくても、商品の表とつなげば商品名を並べて見られます。
操作の前:2つの表
売上 … 売上番号|日付|商品番号|個数 → S1|10月1日|P02|3、S2|10月1日|P03|1、S3|10月2日|P02|2
商品 … 商品番号|商品名 → P01|ノート、P02|ボールペン、P03|マグカップ
商品番号が同じ行どうしをつなぐと、売上の行に商品名が付いた表ができます。
売上の各行について、商品番号が同じ商品の行を探して横につなげます。S1 と S3 の P02 は「ボールペン」、S2 の P03 は「マグカップ」なので、結果は売上番号|日付|商品番号|商品名|個数 の5列3行になります。
売上の表の商品番号は、商品の表の行を指すための列(外部キー)です。設計で表を分けておき、見るときに結合でつなぎ直す、という関係にあります。 結合は2つの表を使い、共通の列の値が等しい行どうしを横につなぎます。 P01 のノートは売上に一度も出てこないので、結果には現れません。
「2つの表を使う」操作は結合だけではありません。次の節の和・差・積も2つの表を使いますが、こちらは行を縦に集めたり減らしたりする操作で、列の値で横につなぐことはしません。 「2つの表から、同じ値をもつ行を抜き出す」のは積で、結合ではありません。
図書館の“蔵書”表(列=本番号|書名|出版年|棚番号)から、「出版年が2020年以降の本の書名だけ」を一覧にしたいと考えています。必要な操作の組み合わせとして最も適切なものはどれですか。
× 書名の列だけを取り出しても、2020年より前の本の書名まで全部残ります。行を絞る操作が足りません。
○ 正解 選択してから射影です。
まず「出版年が2020年以降」で行を選択し、そのあと書名の列で射影すれば、条件に合う本の書名だけの表になります。
× 使う表は“蔵書”表1つだけで、つなぐ相手の表がありません。また選択だけでは列が4つとも残り、書名だけの一覧になりません。
× 和は同じ列の並びの表を2つ合わせる操作です。1つの表から条件で行を絞ったり列を絞ったりする働きはありません。
和・差・積 ── 2つの表の行を集める
列の並びが同じ2つの表があるとき、行の集まりどうしで計算ができます。これを集合演算といいます。 例として、9月に買った会員と10月に買った会員の表を使います(列はどちらも 会員番号|氏名)。
操作の前:2つの表
9月 … M1|青木、M2|石井、M3|上田
10月 … M2|石井、M3|上田、M4|江藤
和は「どちらかにある」、積は「両方にある」、差は「片方にだけある」行を集めます。
操作の後
和 … どちらかの表にある行。M1|青木、M2|石井、M3|上田、M4|江藤。両方にある石井と上田は1行ずつ
積 … 両方の表にある行。M2|石井、M3|上田。「共通」ともいう
差(9月-10月) … 9月にあって10月にない行。M1|青木。逆に10月-9月なら M4|江藤 になる
和・差・積は、列の並びが同じ表どうしで、行を足す・引く・共通部分を取る操作です。 差だけは引く順番で答えが変わります。関係演算の選択・射影・結合と合わせて、問題の選択肢には、この6つの名前が並ぶことがあります。
和と積は、1つの表の中の条件を組み合わせるときにも出てきます。「条件Aを満たすまたは条件Bを満たす行」は、Aで選択した結果とBで選択した結果の和です。 「Aを満たし、かつBを満たす行」は積にあたります。
SQL で書く ── 取り出す・追加する・書き換える・消す
関係データベースへの指示は、SQLという言語で書きます。ITパスポートでは SQL の文法そのものは問われませんが、文の形が分かると関係演算との対応が見えます。
SELECT 文の例:文具の商品名を取り出す
文 … SELECT 商品名 FROM 商品 WHERE 分類 = ‘文具’
SELECT 商品名 … 取り出す列を決める。関係演算の射影にあたる
FROM 商品 … 使う表を決める。ここに2つの表を書き、WHERE に「共通の列が等しい」という条件を書けば結合になる
WHERE 分類 = ‘文具’ … 取り出す行の条件。関係演算の選択にあたる
名前は似ていますが、関係演算の「選択」にあたるのは SELECT ではなく WHERE です。 条件は AND(かつ)や OR(または)で組み合わせられます。時刻や日付の条件では、「以前」「以後」はその時刻ちょうどを含み、「より前」「未満」は含みません。 OR で組み合わせたときは、どちらか一方の条件を満たす行がすべて残ります。片方の条件だけを確かめて終わりにしないことが大切です。
文字の一部が一致する行を探すときは、LIKEとパターン文字列を使います。パターンの中の記号の意味は、試験では問題文に書かれます。 よく使われる決まりは「_ はちょうど1文字」「% は0文字以上の任意の文字列」です。
パターン ‘_ノート%’ に一致するか
ノート … 一致しない。先頭の _ に当たる1文字が無い
Aノート … 一致する。_ が「A」、% が0文字
方眼ノート … 一致しない。ノートの前が2文字あり、_ の1文字に収まらない
Bノートカバー … 一致する。_ が「B」、% が「カバー」
1つの名前の中に目印の文字が2回出てくるときは、どちらの位置で当てはめても合わないかを両方確かめます。 パターンは名前の先頭から末尾までを覆う形で当てはめ、_ の数と % の位置で文字数を数えます。
表の中身を変える操作もあります。INSERTは行を追加する(挿入)、UPDATEは行の値を書き換える(更新)、DELETEは行を削除する操作です。 SELECT は表を読むだけで中身を変えませんが、この3つは表そのものを変えます。
“会員”表の氏名の列に、田中一郎、山田花子、太田、池田、田村 の5人が登録されています。氏名がパターン ‘_田%’ に一致する会員を抽出すると、何名になりますか。ここで、“_”は任意の1文字、“%”は0文字以上の任意の文字列を表します。
× 1名だけだと、太田のように「田」で終わる名前を数え落としています。% は0文字でもよいので、田のあとに何も無くても一致します。
× 2名だと、山田花子・太田・池田のどれかを落としています。3人とも2文字目が「田」です。
○ 正解 3です。
‘_田%’ は「1文字目は何でもよく、2文字目が田、そのあとは何文字でもよい」という意味です。山田花子・太田・池田の3人が一致します。田中一郎と田村は田が1文字目なので、前に _ の1文字がありません。
× 「田」を含む名前を全部数えています。’_田%’ は田の前にちょうど1文字が必要なので、田が先頭にある田中一郎と田村は一致しません。
インデックス ── 探す速さを上げる
行が何万件もある表で WHERE の条件に合う行を探すとき、何の手がかりも無ければ先頭から1行ずつ全部調べることになります。 そこで、よく条件に使う列にインデックスを作っておきます。本の巻末の索引のように、「この値の行はどこにあるか」をすぐ引ける仕組みです。
インデックスは結果を変えず、行を探す時間だけを短くします。
インデックスは、取り出される行を変えずに、行を探す時間だけを短くします。
その代わり、行を追加したり値を書き換えたりするときは、表と一緒に索引も書き換える必要があるので、そのぶん手間が増えます。 どの列にも付ければよいわけではなく、検索の条件によく使う列を選んで付けます。
まとめ
この回で持ち帰ること
1. 選択=条件に合う行を取り出す。射影=指定した列を取り出す。どちらも1つの表への操作で、続けて使うこともある
2. 結合=2つの表を、共通の列の値が等しい行どうしで横につなぐ。相手の行が無い行は結果に出ない
3. 和=どちらかにある行、積=両方にある行(共通)、差=片方にだけある行。列の並びが同じ表どうしで行い、差は順番で結果が変わる
4. SQL の SELECT は列(射影)、WHERE は行の条件(選択)。OR はどちらかを満たす行が全部残る。「以前」「以後」はその時刻を含む
5. LIKE のパターンは _ がちょうど1文字、% が0文字以上。名前の先頭から末尾までを覆う形で当てはめる
6. INSERT は追加、UPDATE は更新、DELETE は削除。インデックスは結果を変えずに検索を速くし、追加や更新の手間は増える
この節で解ける公開問題
令和4〜8年度の公開問題のうち、この節の知識で解ける問題は次の4問です。
教科書の一覧(現行の試験の順)教科書の一覧(新しい試験の順)過去問
Udemy の ITパスポート講座を、受講者数・★評価・口コミで比べたページです(広告を含みます)。
出典:IPA「ITパスポート試験 シラバス(案)Ver0.1」(2026年8月31日)、「ITパスポート試験 シラバス Ver6.5」、 「基本情報技術者試験 シラバス Ver9.2」(データ操作)。 本文の表の例(商品・売上・会員)は当サイトが説明のために作ったもので、練習問題も当サイトのオリジナルです。

