コンテンツにスキップ

データ操作

関係データベース(リレーショナルデータベース)では、表(テーブル)にデータを格納して管理します。格納されたデータを活用するためには、データに対してさまざまな「操作」を行う必要があります。

関係データベースにおける代表的なデータ操作は、大きく次の5つに分けられます。

操作内容イメージ
挿入表に新しい行(レコード)を追加する名簿に新しい人を書き加える
更新既存の行の値を変更する名簿の電話番号を書き換える
選択条件に合う行を取り出す名簿から東京都在住の人だけを抜き出す
射影特定の列だけを取り出す名簿から氏名の列だけを抜き出す
結合複数の表を共通の列で1つにまとめる名簿と成績表を学籍番号でつなげる

これらの操作を組み合わせることで、必要なデータを自在に取り出したり書き換えたりすることができます。以下では、それぞれの操作を具体的に見ていきましょう。

挿入とは、表に新しい行(レコード)を追加する操作です。たとえば、社員名簿の表に新入社員の情報を1行追加するようなケースが挿入にあたります。

社員番号氏名部署
001田中太郎営業部
002鈴木花子総務部
003佐藤次郎開発部 ← 挿入された行

挿入を行うと、表の末尾(または指定した位置)に新しいレコードが加わります。

更新とは、表にすでに存在するレコードの値を変更する操作です。たとえば、社員の「鈴木花子」が総務部から営業部に異動した場合、部署の値を書き換えます。

社員番号氏名部署
001田中太郎営業部
002鈴木花子総務部 → 営業部 ← 更新された値
003佐藤次郎開発部

更新は行を追加するのではなく、既存の値を新しい値に置き換える操作である点が、挿入との違いです。

選択とは、表の中から条件に合致する行(レコード)を取り出す操作です。「横方向」に行を絞り込むイメージと覚えておきましょう。

たとえば、次の社員表から「部署が営業部」の行だけを取り出す操作が選択です。

<元の表>

社員番号氏名部署
001田中太郎営業部
002鈴木花子総務部
003佐藤次郎営業部

<選択の結果(部署=営業部)>

社員番号氏名部署
001田中太郎営業部
003佐藤次郎営業部

選択では、列の構成はそのままで、条件を満たす行だけが残ります。

射影とは、表の中から特定の列(フィールド)だけを取り出す操作です。「縦方向」に列を絞り込むイメージです。

同じ社員表から「氏名」の列だけを取り出す操作が射影です。

<元の表>

社員番号氏名部署
001田中太郎営業部
002鈴木花子総務部
003佐藤次郎営業部

<射影の結果(氏名のみ)>

氏名
田中太郎
鈴木花子
佐藤次郎

射影では、行の数は変わらず、指定した列だけが残ります。

選択と射影の違い ── 最大の引っかけポイント

Section titled “選択と射影の違い ── 最大の引っかけポイント”

試験では「選択」と「射影」を入れ替えた選択肢が頻繁に出題されます。この2つの違いを確実に押さえておきましょう。

選択射影
取り出すもの(レコード)(フィールド)
方向のイメージ横方向に絞る縦方向に絞る
条件の例「部署が営業部」「氏名だけ」
結果列は全部残り、行が減る行は全部残り、列が減る
選択と射影の対比図 — 選択は行を絞る横方向の操作、射影は列を絞る縦方向の操作

試験で出るポイント

「氏名の列だけを取り出す操作はどれか」→ 答えは射影です。「選択」と混同しやすいので、**選択=行(横)、射影=列(縦)**と覚えましょう。2022年に出題された頻出問題です。

結合とは、2つ以上の表を共通のフィールド(列)の値を使って関連付け、1つの表にまとめる操作です。関係データベースでは、データを複数の表に分けて管理するのが基本ですから、必要なときに結合でまとめ直すことが欠かせません。

たとえば、「社員表」と「部署表」があるとします。

<社員表>

社員番号氏名部署コード
001田中太郎D01
002鈴木花子D02

<部署表>

部署コード部署名
D01営業部
D02総務部

共通の列である「部署コード」を使って2つの表を結合すると、次のようになります。

<結合の結果>

社員番号氏名部署コード部署名
001田中太郎D01営業部
002鈴木花子D02総務部

このように、結合によって別々の表に分かれていた情報を一覧で確認できるようになります。

試験で出るポイント

「二つの表からフィールドの値によって関連付けした表を作る操作」→ 答えは結合です。結合は「共通するフィールド(列)の値でつなげる」という点を押さえましょう。

関係データベースでは、同じ構造(列の構成が同じ)を持つ2つの表に対して、集合の考え方を使った演算を行うことができます。これを集合演算と呼びます。

たとえば、「表A:東京支店の社員一覧」と「表B:プロジェクトXのメンバー一覧」があるとき、次の3つの演算が代表的です。

集合演算意味結果
和集合(和演算)表Aまたは表Bの少なくとも一方に含まれる行をすべて集める東京支店の社員 または プロジェクトXメンバー(重複は除く)
積集合(積演算)表Aと表Bの両方に共通する行だけを取り出す東京支店の社員 かつ プロジェクトXメンバー
差集合(差演算)表Aにはあるが表Bにはない行だけを取り出す東京支店の社員で、プロジェクトXメンバーではない

試験で出るポイント

「2つの表の積集合」→ 両方に共通する行を取り出す演算です。和集合(どちらかにある行)と混同しないよう注意しましょう。

データを検索するとき、あいまいな条件で探したい場面があります。たとえば「名前に”葉”を含む人」を探したいときなどです。このような部分一致の検索に使われるのがワイルドカードです。

関係データベースで使われる代表的なワイルドカードは2種類あります。

記号意味マッチする値
%0文字以上の任意の文字列%葉%千葉、葉山、青葉台、葉
_(アンダースコア)任意の1文字_葉千葉、若葉(2文字目が「葉」)

たとえば、条件「%葉_」でデータを検索する場合を考えてみましょう。

  • 「%葉」の部分:末尾が「葉」で、その前に0文字以上の任意の文字が来る
  • 「_」の部分:「葉」の後ろに任意の1文字が来る

つまり「%葉_」は「“葉”の後ろにちょうど1文字ある」値にマッチします。

マッチする?理由
千葉子○(一致)「葉」の前に「千」(%に該当)、後ろに「子」(_に該当)
葉子○(一致)「葉」の前は0文字(%は0文字以上OK)、後ろに「子」(_に該当)
青葉台○(一致)「葉」の前に「青」(%に該当)、後ろに「台」(_に該当)
稲葉×(不一致)「葉」の後ろに文字がない → _(1文字必須)に合わない
若葉台南×(不一致)「葉」の後ろが「台南」で2文字 → _は1文字だけ

試験で出るポイント

ワイルドカードの %は「0文字以上」_は「ちょうど1文字」 です。%が0文字にもマッチする点を見落とすと間違えやすいので注意しましょう。2024年に出題されています。

まとめ ── 5つの基本操作を整理する

Section titled “まとめ ── 5つの基本操作を整理する”

最後に、関係データベースの5つの基本操作を改めて整理しておきましょう。

操作対象内容
挿入新しいレコードを追加する
更新行の値既存のレコードの値を変更する
選択条件に合う行を取り出す
射影特定の列だけを取り出す
結合複数の表共通の列で表をつなげる

これに加えて、集合演算(和集合・積集合・差集合)とワイルドカード(%と_)も試験で問われやすいテーマです。操作の名前だけを暗記するのではなく、「何を」「どう取り出すか」というイメージを持って理解しておくことが大切です。


過去問に挑戦

Q. 関係データベースにおいて,表Aと表Bの積集合演算を実行した結果はどれか。

表A

品名価格
ガム100
せんべい250
チョコレート150

表B

品名価格
せんべい250
チョコレート150
どら焼き100
  • ア | 品名 | 価格 | | --- | --- | | ガム | 100 | | せんべい | 250 | | チョコレート | 150 | | どら焼き | 100 |
  • イ | 品名 | 価格 | | --- | --- | | ガム | 100 | | せんべい | 500 | | チョコレート | 300 | | どら焼き | 100 |
  • ウ | 品名 | 価格 | | --- | --- | | せんべい | 500 | | チョコレート | 300 |
  • エ | 品名 | 価格 | | --- | --- | | せんべい | 250 | | チョコレート | 150 |
解答(令和2年)

正解: エ

Q. 関係データベースで管理している “従業員” 表から,氏名の列だけを取り出す操作を何というか。

従業員

従業員番号氏名所属コード
H001試験花子G02
H002情報太郎G01
H003高度次郎G03
H004午前桜子G03
H005午後三郎G02
  • ア 結合
  • イ 射影
  • ウ 選択
  • エ 和
解答(令和4年)

正解: イ

Q. 関係データベースにおける結合操作はどれか。

  • ア 表から,特定の条件を満たすレコードを抜き出した表を作る。
  • イ 表から,特定のフィールドを抜き出した表を作る。
  • ウ 二つの表から,同じ値をもつレコードを抜き出した表を作る。
  • エ 二つの表から,フィールドの値によって関連付けした表を作る。
解答(令和5年)

正解: エ

Q. 関係データベースで管理している “従業員” 表から,氏名が “%葉_” に該当する従業員を抽出した。抽出された従業員は何名か。ここで, “_” は任意の1文字を表し, “%” は0文字以上の任意の文字列を表すものとする。

従業員

従業員番号氏名
S001千葉翔
S002葉山花子
S003鈴木葉子
S004佐藤乙葉
S005秋葉彩葉
S006稲葉小春
  • ア 1
  • イ 2
  • ウ 3
  • エ 4
解答(令和6年)

正解: イ

もっと過去問を解きたい方へ

フライトパスアプリなら、詳しい解説や分野別の過去問演習、SRS(間隔反復)学習ができます。

アプリで効率的に学習しよう