データ操作|選択・射影・結合と和・差・積、SQLの基本【ITパスポート】

ITパスポート試験

ITパスポート 第4部 デジタル技術17-3 データ操作最終更新 2026-10-18

関係データベースのデータ操作は、表から行を選ぶ・列を選ぶ・表どうしをつなぐという少数の操作の組み合わせで、欲しい表を作り出すことです。

選択と射影 ── 行を取り出す、列を取り出す

関係データベースでは、データを行(レコード)と列(フィールド)からなる表で持ちます。試験の問題文では「レコード」「フィールド」の語もよく使われます。表に対する代表的な操作を関係演算といい、 どの操作も結果はまた1つの表になります。次の小さな「商品」表で見ていきます。

操作の前:商品

列 … 商品番号|商品名|分類|価格

1行目 … P01|ノート|文具|200

2行目 … P02|ボールペン|文具|150

3行目 … P03|マグカップ|雑貨|800

4行目 … P04|付箋|文具|300

選択は、条件に合う行だけを取り出す操作です。「分類が文具」で選択すると、P01・P02・P04 の3行が残り、列は4つのままです。 射影は、指定した列だけを取り出す操作です。「商品名」で射影すると、商品名の1列だけの表になり、行は4つのままです。 選択は行を絞り、射影は列を絞る。どちらも元の表の一部を切り出す操作です。

選択と射影。左に「商品」表(商品番号・商品名・分類・価格)があり、P01 ノート 文具 200、P02 ボールペン 文具 150、P03 マグカップ 雑貨 800、P04 付箋 文具 300 の4行。右上は選択の結果で、条件に合う行を取り出す(分類が文具):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|マグカップ

結合 ── 共通の列で2つの表をつなぐ。上に「売上」表(売上番号・日付・商品番号・個数:S1 10月1日 P02 3、S2 10月1日 P03 1、S3 10月2日 P02 2)と「商品」表(商品番号・商品名:P01 ノート、P02 ボールペン、P03 マグカップ)。商品番号が同じ行どうしをつなぐ:売上の各行の商品番号から、S1 の P02 と S3 の P02 は商品の P02 の行へ、S2 の P03 は P03 の行へ線が引かれ、P01 の行にはどの線も届かない。下の結合の結果は売上番号・日付・商品番号・商品名・個数の5列で、S1 10月1日 P02 ボールペン 3、S2 10月1日 P03 マグカップ 1、S3 10月2日 P02 ボールペン 2。

商品番号が同じ行どうしをつなぐと、売上の行に商品名が付いた表ができます。

売上の各行について、商品番号が同じ商品の行を探して横につなげます。S1 と S3 の P02 は「ボールペン」、S2 の P03 は「マグカップ」なので、結果は売上番号|日付|商品番号|商品名|個数 の5列3行になります。

売上の表の商品番号は、商品の表の行を指すための列(外部キー)です。設計で表を分けておき、見るときに結合でつなぎ直す、という関係にあります。 結合は2つの表を使い、共通の列の値が等しい行どうしを横につなぎます。 P01 のノートは売上に一度も出てこないので、結果には現れません。

「2つの表を使う」操作は結合だけではありません。次の節の和・差・積も2つの表を使いますが、こちらは行を縦に集めたり減らしたりする操作で、列の値で横につなぐことはしません。 「2つの表から、同じ値をもつ行を抜き出す」のは積で、結合ではありません。

図書館の“蔵書”表(列=本番号|書名|出版年|棚番号)から、「出版年が2020年以降の本の書名だけ」を一覧にしたいと考えています。必要な操作の組み合わせとして最も適切なものはどれですか。

和・差・積 ── 2つの表の行を集める

列の並びが同じ2つの表があるとき、行の集まりどうしで計算ができます。これを集合演算といいます。 例として、9月に買った会員と10月に買った会員の表を使います(列はどちらも 会員番号|氏名)。

操作の前:2つの表

9月 … M1|青木、M2|石井、M3|上田

10月 … M2|石井、M3|上田、M4|江藤

和・積・差を3つのベン図で示した図。左の円が9月に買った会員、右の円が10月に買った会員。左だけに青木、重なりに石井と上田、右だけに江藤。和はどちらかにある行で、青木・石井・上田・江藤。積は両方にある行で、石井・上田。差(9月-10月)は9月にあって10月にない行で、青木。

和は「どちらかにある」、積は「両方にある」、差は「片方にだけある」行を集めます。

操作の後

和 … どちらかの表にある行。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文字以上の任意の文字列を表します。

インデックス ── 探す速さを上げる

行が何万件もある表で WHERE の条件に合う行を探すとき、何の手がかりも無ければ先頭から1行ずつ全部調べることになります。 そこで、よく条件に使う列にインデックスを作っておきます。本の巻末の索引のように、「この値の行はどこにあるか」をすぐ引ける仕組みです。

インデックス ── 探す速さを上げる。左のインデックスなしでは、先頭から1行ずつ全部調べる。右のインデックスありでは、本の索引のような表(青木 → 12行目、石井 → 3行目、上田 → 27行目)を引き、石井の行の場所をすぐ見つける。下に、取り出される行は同じで速さだけが変わる、と添えてある。

インデックスは結果を変えず、行を探す時間だけを短くします。

インデックスは、取り出される行を変えずに、行を探す時間だけを短くします。

その代わり、行を追加したり値を書き換えたりするときは、表と一緒に索引も書き換える必要があるので、そのぶん手間が増えます。 どの列にも付ければよいわけではなく、検索の条件によく使う列を選んで付けます。

まとめ

この回で持ち帰ること

1. 選択=条件に合う行を取り出す。射影=指定した列を取り出す。どちらも1つの表への操作で、続けて使うこともある

2. 結合=2つの表を、共通の列の値が等しい行どうしで横につなぐ。相手の行が無い行は結果に出ない

3. 和=どちらかにある行、積=両方にある行(共通)、差=片方にだけある行。列の並びが同じ表どうしで行い、差は順番で結果が変わる

4. SQL の SELECT は列(射影)、WHERE は行の条件(選択)。OR はどちらかを満たす行が全部残る。「以前」「以後」はその時刻を含む

5. LIKE のパターンは _ がちょうど1文字、% が0文字以上。名前の先頭から末尾までを覆う形で当てはめる

6. INSERT は追加、UPDATE は更新、DELETE は削除。インデックスは結果を変えずに検索を速くし、追加や更新の手間は増える

この節で解ける公開問題

令和4〜8年度の公開問題のうち、この節の知識で解ける問題は次の4問です。

この節の過去問を続けて解く(4問) →

教科書の一覧(現行の試験の順)教科書の一覧(新しい試験の順)過去問

ITパスポートのUdemy講座を口コミで比べる。動画講座3つ・問題集3つ、受講者数・★評価・口コミつき。広告を含むページですITパスポートのUdemy講座を口コミで比べる。動画講座3つ・問題集3つ、受講者数・★評価・口コミつき。広告を含むページです

Udemy の ITパスポート講座を、受講者数・★評価・口コミで比べたページです(広告を含みます)。

出典:IPA「ITパスポート試験 シラバス(案)Ver0.1」(2026年8月31日)、「ITパスポート試験 シラバス Ver6.5」、 「基本情報技術者試験 シラバス Ver9.2」(データ操作)。 本文の表の例(商品・売上・会員)は当サイトが説明のために作ったもので、練習問題も当サイトのオリジナルです。

タイトルとURLをコピーしました