例)
“学生”表、“学部”表に対して、次の SQL 文を実行した結果得られるデータはどれか。
SELECT 氏名 FROM 学生, 学部
WHERE 所属=学部名 AND 所在地='新宿'
学生 学部
┌────┬────┬────┐ ┌────┬────┐
│ 氏名 │ 所属 │ 住所 │ │学部名 │所在地 │
┝━━━━┿━━━━┿━━━━┥ ┝━━━━┿━━━━┥
│合田知子│ 理 │ 新宿 │ │ 理 │ 新宿 │
├────┼────┼────┤ ├────┼────┤
│青木俊介│ 工 │ 渋谷 │ │ 工 │ 新宿 │
├────┼────┼────┤ ├────┼────┤
│川内聡 │ 人文 │ 渋谷 │ │ 人文 │ 渋谷 │
├────┼────┼────┤ ├────┼────┤
│坂口祐子│ 経済 │ 新宿 │ │ 経済 │ 渋谷 │
└────┴────┴────┘ └────┴────┘
解説)
SELECT 氏名 FROM 学生, 学部
WHERE 所属=学部名 AND 所在地='新宿'
この SQL の文章は、次のような構成になっている。
SELECT 〜 FROM 〜 WHERE 〜
このような構成の SQL 文を SELECT 文(問合せ)と呼ばれるもので、
「表のデータの検索を行うとき」に用いる。
この SELECT 文の構成は、
SELECT (検索する列の名前)
FROM (検索対象表の名前)
WHERE (検索条件)
となる。
この構文は、よく出るので覚えておく。
まず、1行目の【SELECT 氏名 FROM 学生, 学部】は、
【学生表と学部表から氏名の列を取り出せ】という意味になる。
2行目は WHERE 句なので、この部分は検索条件を指定している。
【WHERE 所属=学部名 AND 所在地='新宿'】という検索条件。
ここまでをまとめると
【WHERE 所属=学部名 AND 所在地='新宿'】という条件を満たす
【学生表と学部表から氏名の列を取り出せ】
という意味になる。
もうすこし検索条件の部分を細かく見ていくと
【WHERE 所属=学部名 AND 所在地='新宿'】
まず、前半部分は
【所属と学部名が同じもので学生表と学部表をくっつけろ】という意味になる。
後半部分は【所在地が新宿のもの】となる。
したがって、この SQL 文の意味は
「所在地が新宿のものを選んで、所属と学部名が同じもので学生表と学部表を
くっつけて、氏名の列を取りせ」
という意味になる。
【所在地が新宿のもの】は、学部表から理学部と工学部である。
よって、実行結果は下のようになる。
┌────┐
│ 氏名 │
┝━━━━┥
│合田知子│
├────┤
│青木俊介│
└────┘
解答)
合田知子 青木俊介