【最新版】基本情報技術者試験 予想問題(テクノロジ) [問6] | 模擬試験で効率的に学習!

スポンサーリンク

問題

問6

次の「商品」表がある。仕入先IDが’M001’または’M003’の商品をすべて取得するSQL文として、適切なものはどれか。

表:商品

商品ID商品名称仕入先ID単価
P001ノートPCM001120000
P002スマートフォンM00280000
P003タブレットM00160000
P004デジタルカメラM00350000
P005プリンタM00330000
  • SELECT * FROM 商品 WHERE 仕入先ID = ‘M001’ AND ‘M003’
  • SELECT * FROM 商品 WHERE 仕入先ID IN (‘M001’, ‘M003’)
  • SELECT * FROM 商品 WHERE 仕入先ID = ‘M001’ AND 仕入先ID = ‘M003’
  • SELECT * FROM 商品 WHERE 仕入先ID LIKE ‘M001’ AND ‘M003’

正解

正解は「」です。

解説

 この問題の正解は「イ」の `SELECT * FROM 商品 WHERE 仕入先ID IN (‘M001’, ‘M003’)` です。このSQL文は、`IN` 演算子を使って、指定したリスト(この場合は ‘M001’ と ‘M003’)のいずれかの値に一致するデータを抽出します。問題の要件である「仕入先IDが’M001’または’M003’の商品」という条件を、簡潔かつ正確に表現しています。

  `SELECT * FROM 商品` は、「商品」という名前の表からすべての列(`*`は全列を意味します)のデータを取得するという意味です。 `WHERE 仕入先ID IN (‘M001’, ‘M003’)` は、取得するデータの条件を指定しており、「仕入先ID列の値が ‘M001’ または ‘M003’ のどちらかである」という条件に合致する行だけを抽出します。 このSQL文を実行すると、商品IDがP001, P003, P004, P005の4つの商品データが取得されます。

ア(SELECT * FROM…):
 `’M001′ AND ‘M003’` という書き方はSQLの正しい文法ではありません。ANDで条件をつなぐなら `仕入先ID = ‘M001’ AND 仕入先ID = ‘M003’` と書きますが、これでは両方を満たすデータは存在しないため、結果は0件になります。
ウ(SELECT * FROM…):
 1つの列に同時に’M001’と’M003’が入ることはないため、結果は常に0件となり誤りです。
エ(SELECT * FROM…):
 `LIKE` は文字列の部分一致を検索する際に使い、`AND` と組み合わせるこの文法は正しくありません。

スポンサーリンク

解法のポイント

 この問題を解くには、SQLの基本的な構文、特に `WHERE` 句での条件指定方法を理解していることが重要です。複数の候補の中からいずれかに一致するデータを探す「OR条件」を表現する方法として、`OR` 演算子を直接使う方法と、`IN` 演算子を使う方法の2つを知っているかが問われています。`IN` 演算子は `()` 内にカンマ区切りで複数の値を指定できる便利な機能です。この使い方を覚えておけば、同様の問題に迅速に対応できます。`AND` と `OR` の違いや、`LIKE` の用途も合わせて復習しておくと万全です。

用語補足

SQL (Structured Query Language):
 リレーショナルデータベースを操作するための言語です。データの検索、追加、更新、削除などを行います。

SELECT文:
 データベースからデータを検索し、取り出すためのSQL命令です。「SELECT 列 FROM 表 WHERE 条件」が基本的な形です。

IN演算子:
 `WHERE` 句で使われ、指定した値のリストのいずれかに一致するデータを検索します。`列 IN (値1, 値2, …)` のように使用します。

OR演算子:
 複数の条件のうち、いずれか一つでも満たしていれば真(True)となる論理演算子です。「AまたはB」を意味します。



タイトルとURLをコピーしました