メインコンテンツへ
データベース

SQL文で、表「社員」から部署が「営業」の社員の氏名を取得するとき、正しい記述はどれか。

ア.SELECT 氏名 TO 社員 WHERE 部署 = '営業'
イ.SELECT 氏名 FROM 社員 WHERE 部署 = '営業'正解
ウ.GET 氏名 FROM 社員 IF 部署 = '営業'
エ.FIND 氏名 IN 社員 WHERE 部署 = '営業'

解説

SQLは「図書館の司書への注文書」。「何を(SELECT)」「どの棚から(FROM)」「どんな条件で(WHERE)」の3点セットが決まり文句で、この順番は絶対に変えられません。

なぜ イ が正解か

イが正解なのは、SQLの文法が SELECT→FROM→WHERE という固定の語順を持っているから。図書館で「営業部の本棚から、著者名が書いてあるカードだけ抜き出して」と司書に頼む感覚です。FROM で「どの表か」を指定し、WHERE で「どの行か」を絞り込み、SELECT で「どの列か」を取り出す——この3段階の原理さえ押さえれば、応用もバッチリです。

なぜ ア は間違いか

TO は「〜へ」という方向を示す英単語で、「どこから取るか」を表す FROM とは真逆の意味。データを取り出したいのに「社員テーブルへ向かって送る」命令になってしまいます。INSERT INTO ならアリですが、SELECT の後ろに TO はSQL辞書に存在しません。

なぜ ウ は間違いか

GET は日常英語では「取ってくる」なので意味は通じそうですが、SQLはそんなに優しくなく、GET という命令語を持っていません。また条件句は WHERE であって IF ではない(IF はプログラム制御の話)——2か所ダブルで外れていて、惜しいを通り越して別言語です。

なぜ エ は間違いか

FIND も「見つける」という意味では直感的ですが、これもSQLには存在しない命令語。さらに FROM の代わりに IN を使っている点も誤り——IN はWHERE句の中で「〜のいずれか」を調べるときに使うキーワードで、テーブル名の前には置けません。英語の語感だけで組み立てると見事にハマるワナです。

出典: 基本情報技術者試験 令和5年 サンプル問題