基本情報技術者試験 (FE) 科目 A — データベース
SELECT 文の基本 — 射影と重複の除去
SELECT 文は「どの表から (FROM)、どの行を (WHERE)、どの列を (SELECT) 取り出すか」を書く。列を選ぶ操作を関係代数では射影と呼ぶ。DISTINCT を付けると結果から重複行が取り除かれる。
SELECT 文は 3 つの部品でできている
SQL の問合せは、最小構成では次の 2 行です。
SELECT 商品名, 単価 -- どの列を取り出すか
FROM 商品 -- どの表から取り出すかSELECT に書いた列だけが結果に出ます。この 「必要な列だけを取り出す」操作を、関係代数では射影と呼びます。行を絞り込む選択(WHERE)と対になる概念で、用語として問われることがあります。
試す: SELECT に書く列を減らしたり増やしたりしてみる
* は「その表の全列」に展開される
* は表の全列を順番に並べたのと同じ意味です。 表が複数あるときは 商品.* のように表名で修飾すると、 その表の列だけを展開できます。
試す: * を 商品.* や 在庫.* に書き換えると、どちらの表の列が出るか
AS で別名を付ける(相関名)
AS は列や表に別の名前を付けます。シラバスでは相関名という用語で登場します。
SELECT 単価 AS 価格 FROM 商品 -- 列に別名
SELECT S.商品名 FROM 商品 AS S -- 表に別名表の別名は、同じ表を 2 回使う自己結合や、長い表名を何度も書きたくないときに使います。表に別名を付けたら、その後は元の表名では参照できません。FROM 商品 AS S と書いたら 商品.商品名 ではなくS.商品名 と書きます。
試す: 相関名を S から別の名前に変える / 商品.商品名 に戻すとどうなるか
DISTINCT で重複を取り除く
DISTINCT を付けると、結果から重複した行が取り除かれます。 下のエディタで DISTINCT を消してみてください。 5 行に増えます。
試す: DISTINCT を消すと 3 行 → 5 行
SELECT はいつ評価されるのか
一つ進めるを押していくと、FROM で表を読み込んでから SELECT で列が絞られるまでの流れが 1 段階ずつ見られます。SELECT が最後に評価されることがここで確認できます。
試す: 一つ進める を押して、FROM → SELECT の順に見る
試験で問われるポイント
- 射影と選択の区別。列を選ぶのが射影(SELECT)、 行を選ぶのが選択(WHERE)。用語をそのまま問う問題が出ます
- DISTINCT を付けたときの行数。 「この SQL の結果は何行か」を問う形で頻出します
- 相関名を付けた後の参照方法。 別名を付けたのに元の表名で書いている選択肢は誤りです
よくある疑問
「SELECT の基本」の練習問題 1 問
読んだ内容がそのまま出題されます。解答すると解説と、 その SQL を実行シミュレーターで開くリンクが出ます。
自由に試す / 他のレッスンを読む
データベース分野をもっと学ぶ(おすすめ書籍)
イラスト主体で科目Aの全範囲を通読できる入門書。用語の土台を作ってから科目Bのアルゴリズムに入ると理解が速い。
科目Aの頻出テーマを図と語呂で押さえる入門書。参考書と問題集を兼ねるので初受験の一冊目に選びやすい。
公開問題を大量に解いて仕上げるための問題集。擬似言語の読解に慣れた後、本番形式で時間配分を試す段階で使う。
本セクションはAmazonアソシエイトのリンクを含みます。
プログラムの読み方でつまずいたら。
たいてっくが、アルゴリズムの追い方から SQL・データベース設計まで、1対1で学習をサポートします。「コードを目で追っても何をしているか分からない」段階からで大丈夫です。まずは無料相談から。
「教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。」
— H 様(DB・SQL コース受講)「体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。」
— M 様(DB・SQL コース受講)「大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。」
— K 様(DB・SQL コース受講)