データ操作
データ操作とは
Section titled “データ操作とは”関係データベース(リレーショナルデータベース)では、表(テーブル)にデータを格納して管理します。格納されたデータを活用するためには、データに対してさまざまな「操作」を行う必要があります。
関係データベースにおける代表的なデータ操作は、大きく次の5つに分けられます。
| 操作 | 内容 | イメージ |
|---|---|---|
| 挿入 | 表に新しい行(レコード)を追加する | 名簿に新しい人を書き加える |
| 更新 | 既存の行の値を変更する | 名簿の電話番号を書き換える |
| 選択 | 条件に合う行を取り出す | 名簿から東京都在住の人だけを抜き出す |
| 射影 | 特定の列だけを取り出す | 名簿から氏名の列だけを抜き出す |
| 結合 | 複数の表を共通の列で1つにまとめる | 名簿と成績表を学籍番号でつなげる |
これらの操作を組み合わせることで、必要なデータを自在に取り出したり書き換えたりすることができます。以下では、それぞれの操作を具体的に見ていきましょう。
挿入(レコードの追加)
Section titled “挿入(レコードの追加)”挿入とは、表に新しい行(レコード)を追加する操作です。たとえば、社員名簿の表に新入社員の情報を1行追加するようなケースが挿入にあたります。
| 社員番号 | 氏名 | 部署 |
|---|---|---|
| 001 | 田中太郎 | 営業部 |
| 002 | 鈴木花子 | 総務部 |
| 003 | 佐藤次郎 | 開発部 ← 挿入された行 |
挿入を行うと、表の末尾(または指定した位置)に新しいレコードが加わります。
更新(レコードの変更)
Section titled “更新(レコードの変更)”更新とは、表にすでに存在するレコードの値を変更する操作です。たとえば、社員の「鈴木花子」が総務部から営業部に異動した場合、部署の値を書き換えます。
| 社員番号 | 氏名 | 部署 |
|---|---|---|
| 001 | 田中太郎 | 営業部 |
| 002 | 鈴木花子 | 総務部 → 営業部 ← 更新された値 |
| 003 | 佐藤次郎 | 開発部 |
更新は行を追加するのではなく、既存の値を新しい値に置き換える操作である点が、挿入との違いです。
選択(行の抽出)
Section titled “選択(行の抽出)”選択とは、表の中から条件に合致する行(レコード)を取り出す操作です。「横方向」に行を絞り込むイメージと覚えておきましょう。
たとえば、次の社員表から「部署が営業部」の行だけを取り出す操作が選択です。
<元の表>
| 社員番号 | 氏名 | 部署 |
|---|---|---|
| 001 | 田中太郎 | 営業部 |
| 002 | 鈴木花子 | 総務部 |
| 003 | 佐藤次郎 | 営業部 |
<選択の結果(部署=営業部)>
| 社員番号 | 氏名 | 部署 |
|---|---|---|
| 001 | 田中太郎 | 営業部 |
| 003 | 佐藤次郎 | 営業部 |
選択では、列の構成はそのままで、条件を満たす行だけが残ります。
射影(列の抽出)
Section titled “射影(列の抽出)”射影とは、表の中から特定の列(フィールド)だけを取り出す操作です。「縦方向」に列を絞り込むイメージです。
同じ社員表から「氏名」の列だけを取り出す操作が射影です。
<元の表>
| 社員番号 | 氏名 | 部署 |
|---|---|---|
| 001 | 田中太郎 | 営業部 |
| 002 | 鈴木花子 | 総務部 |
| 003 | 佐藤次郎 | 営業部 |
<射影の結果(氏名のみ)>
| 氏名 |
|---|
| 田中太郎 |
| 鈴木花子 |
| 佐藤次郎 |
射影では、行の数は変わらず、指定した列だけが残ります。
選択と射影の違い ── 最大の引っかけポイント
Section titled “選択と射影の違い ── 最大の引っかけポイント”試験では「選択」と「射影」を入れ替えた選択肢が頻繁に出題されます。この2つの違いを確実に押さえておきましょう。
| 選択 | 射影 | |
|---|---|---|
| 取り出すもの | 行(レコード) | 列(フィールド) |
| 方向のイメージ | 横方向に絞る | 縦方向に絞る |
| 条件の例 | 「部署が営業部」 | 「氏名だけ」 |
| 結果 | 列は全部残り、行が減る | 行は全部残り、列が減る |
試験で出るポイント
「氏名の列だけを取り出す操作はどれか」→ 答えは射影です。「選択」と混同しやすいので、**選択=行(横)、射影=列(縦)**と覚えましょう。2022年に出題された頻出問題です。
結合(複数の表の関連付け)
Section titled “結合(複数の表の関連付け)”結合とは、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つの表の積集合」→ 両方に共通する行を取り出す演算です。和集合(どちらかにある行)と混同しないよう注意しましょう。
ワイルドカード
Section titled “ワイルドカード”データを検索するとき、あいまいな条件で探したい場面があります。たとえば「名前に”葉”を含む人」を探したいときなどです。このような部分一致の検索に使われるのがワイルドカードです。
関係データベースで使われる代表的なワイルドカードは2種類あります。
| 記号 | 意味 | 例 | マッチする値 |
|---|---|---|---|
| % | 0文字以上の任意の文字列 | %葉% | 千葉、葉山、青葉台、葉 |
| _(アンダースコア) | 任意の1文字 | _葉 | 千葉、若葉(2文字目が「葉」) |
たとえば、条件「%葉_」でデータを検索する場合を考えてみましょう。
- 「%葉」の部分:末尾が「葉」で、その前に0文字以上の任意の文字が来る
- 「_」の部分:「葉」の後ろに任意の1文字が来る
つまり「%葉_」は「“葉”の後ろにちょうど1文字ある」値にマッチします。
| 値 | マッチする? | 理由 |
|---|---|---|
| 千葉子 | ○(一致) | 「葉」の前に「千」(%に該当)、後ろに「子」(_に該当) |
| 葉子 | ○(一致) | 「葉」の前は0文字(%は0文字以上OK)、後ろに「子」(_に該当) |
| 青葉台 | ○(一致) | 「葉」の前に「青」(%に該当)、後ろに「台」(_に該当) |
| 稲葉 | ×(不一致) | 「葉」の後ろに文字がない → _(1文字必須)に合わない |
| 若葉台南 | ×(不一致) | 「葉」の後ろが「台南」で2文字 → _は1文字だけ |
試験で出るポイント
ワイルドカードの %は「0文字以上」、_は「ちょうど1文字」 です。%が0文字にもマッチする点を見落とすと間違えやすいので注意しましょう。2024年に出題されています。
まとめ ── 5つの基本操作を整理する
Section titled “まとめ ── 5つの基本操作を整理する”最後に、関係データベースの5つの基本操作を改めて整理しておきましょう。
| 操作 | 対象 | 内容 |
|---|---|---|
| 挿入 | 行 | 新しいレコードを追加する |
| 更新 | 行の値 | 既存のレコードの値を変更する |
| 選択 | 行 | 条件に合う行を取り出す |
| 射影 | 列 | 特定の列だけを取り出す |
| 結合 | 複数の表 | 共通の列で表をつなげる |
これに加えて、集合演算(和集合・積集合・差集合)とワイルドカード(%と_)も試験で問われやすいテーマです。操作の名前だけを暗記するのではなく、「何を」「どう取り出すか」というイメージを持って理解しておくことが大切です。
過去問で実力チェック
Section titled “過去問で実力チェック”過去問に挑戦
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年)
正解: イ
