データ操作
このノートの問いがそのまま復習カードになり、忘れかけたころに出題されます。
シラバス案 Ver.0.1 の小分類 4-17-3「データ操作」(大分類 4:デジタル技術/中分類 17:データベース)。
2026-09-26 にシラバス本文と突合済み。
0. 何を押さえるか
用語例は 関係演算(選択,射影,結合) の 1 つだけですが、
問われるのは「表から目的のデータを取り出すには、どの操作をどう組み合わせるか」です。
| 操作 | 何をするか | 表がどうなるか |
|---|---|---|
| 選択 | 条件に合う行を取り出す | 行が減る |
| 射影 | 必要な列を取り出す | 列が減る |
| 結合 | 複数の表を共通の項目でつなぐ | 列が増える |
選択は行、射影は列——ここが最頻出で、しかも取り違えやすいところです。
「選択」という語感から列を選ぶと思いがちですが、逆です。
1. 関係演算
根拠: シラバス 4-17-3
関係演算とは?
関係(表)に対する操作で、結果もまた表になるもの
代表が 選択・射影・結合 の 3 つ。
結果が表なので、続けて次の操作をかけられる
(選択した結果を射影する、結合した結果から選択する)。
複雑な取り出し方も、この組み合わせで表せる。
選択と射影の違いは?
| 何を取り出すか | 結果 | |
|---|---|---|
| 選択 | 条件に合う行 | 行が減る(列はそのまま) |
| 射影 | 指定した列 | 列が減る(行はそのまま) |
選択=行、射影=列。
「東京都の顧客だけ」→ 選択
「氏名と電話番号だけ」→ 射影
結合とは? 何を手がかりにつなぐか?
複数の表を、共通する項目の値が等しい行どうしで 1 つの表にすること
多くは外部キーと、相手の表の主キーの対応を使う。
注文表(顧客番号を持つ)と顧客表(顧客番号が主キー)を結合すると、
注文ごとに顧客の氏名や住所を並べた表が得られる。
結合すると列が増える。
「東京都の顧客の氏名だけ」を取り出すには、どの操作をどう組み合わせるか?
選択 → 射影
- 選択:住所が東京都の行を残す
- 射影:氏名の列だけを残す
どの操作が行に効き、どれが列に効くかを意識すると組み立てやすい。
「商品名ごとの注文」を見たいが、注文表には商品番号しかない。どうするか?
注文表と商品表を、商品番号で結合する。
| 注文表 | 商品表 |
|---|---|
| 注文番号・商品番号・数量 | 商品番号(主キー)・商品名・単価 |
結合すれば、注文の行に商品名・単価が並ぶ。
さらに必要な列だけを射影すれば見やすくなる。
表を分けておく(正規化)からこそ、使うときに結合で組み立て直す必要がある。
2. SQL との対応
根拠: シラバス 4-17-3
SQL の SELECT 文で、選択・射影・結合はそれぞれどこに書くか?
| SQL の行 | 意味 |
|---|---|
SELECT 氏名, 電話番号 |
取り出す列(射影) |
FROM 顧客 |
対象の表 |
WHERE 住所 = '東京都' |
残す行の条件(選択) |
| 関係演算 | SQL で書く場所 |
|---|---|
| 射影 | SELECT の後ろ(列名を並べる) |
| 選択 | WHERE の後ろ(条件) |
| 結合 | FROM に複数の表を書き、共通の項目が等しいことを条件にする |
「SELECT」が射影にあたるので、名前に引きずられて「選択」と取り違えない。
複数の条件で行を絞り込むとき、AND と OR はどう違うか?
| 意味 | 件数 | |
|---|---|---|
| AND | 両方を満たす行 | 条件を足すほど減る |
| OR | どちらかを満たす行 | 条件を足すほど増える |
集合でいえば AND が積集合、OR が和集合。
条件を足したのに件数が増えたら OR、というのが確認の目安。
データベースの集計・並べ替えでは何ができるか?
| 何をするか | SQL | |
|---|---|---|
| 並べ替え | 指定した列の昇順・降順に行を並べる | ORDER BY |
| グループ化 | 同じ値の行をまとめる | GROUP BY |
| 集計 | 件数・合計・平均・最大・最小を求める | COUNT・SUM・AVG・MAX・MIN |
「商品分類ごとの売上合計」は、分類でグループ化して合計を求める。