2026年版・3-4

SQLの一問一答

基本情報技術者試験 科目A「技術要素」から、SQLに関する4択問題を10問。「答えと解説を見る」を開くと、正解とその理由がその場で読めます。会員登録は不要です。

この分野の演習

全10問/解説つき・基本無料

アプリ形式で解く(全600問) 技術要素の要点解説を読む
問題

上から順に解いてみてください。答えは各問の下で確認できます。科目Aの本試験と同じく、4択で出題しています。

問13-4

次の社員表から、部署が「営業」で給与が30万円以上の社員の氏名を求めるSQL文として、最も適切なものはどれか。

社員番号氏名部署給与
1青木営業32
2井上総務35
3上田営業28
(給与の単位は万円)

  • ①SELECT 部署 FROM 社員 WHERE 氏名 = '営業' AND 給与 >= 30
  • ②SELECT 氏名 FROM 社員 WHERE 部署 = '営業' OR 給与 >= 30
  • ③SELECT 氏名 FROM 社員 GROUP BY 部署 HAVING 給与 >= 30
  • ④SELECT 氏名 FROM 社員 WHERE 部署 = '営業' AND 給与 >= 30
答えと解説を見る
正解 ④SELECT 氏名 FROM 社員 WHERE 部署 = '営業' AND 給与 >= 30
解説
SELECT文は「SELECT 取り出す列 FROM 表 WHERE 行の条件」の形で書きます。「部署が営業」かつ「給与が30万円以上」の両方を満たす行を取り出すので、2つの条件をANDで結びます。この表では、青木さん(営業・32万円)だけが該当します。

他の選択肢が不適切な理由
・ORで結ぶ:どちらか一方を満たせばよいことになり、井上さん(総務・35万円)や上田さん(営業・28万円)も取り出されてしまいます。
・GROUP BY 部署 HAVING 給与 >= 30:部署ごとにグループ化する文で、個々の社員の氏名を条件で取り出す文になっていません。
・SELECT 部署 … WHERE 氏名 = '営業':取り出す列と条件の列を取り違えています。

覚え方のポイント
「両方満たす=AND」「どちらか=OR」。条件を日本語で読み上げて、「かつ」ならAND、「または」ならORと置き換えると間違えません。
問23-4

次の社員表に対して、下のSQL文を実行した結果として正しいものはどれか。

氏名部署給与
青木営業30
井上営業40
上田総務25
江藤総務27
小野開発45
SELECT 部署, AVG(給与) FROM 社員 GROUP BY 部署 HAVING AVG(給与) >= 30

  • ①営業 35、総務 26、開発 45 の3行
  • ②営業 35 の1行
  • ③営業 35 と 開発 45 の2行
  • ④開発 45 の1行
答えと解説を見る
正解 ③営業 35 と 開発 45 の2行
解説
GROUP BY 部署 で部署ごとにグループにまとめ、AVG(給与) で各グループの給与の平均を求めます。
営業:(30 + 40)÷ 2 = 35
総務:(25 + 27)÷ 2 = 26
開発:45 ÷ 1 = 45
HAVING AVG(給与) >= 30 で、平均が30以上のグループだけを残すので、営業(35)と開発(45)の2行が結果になります。

他の選択肢が不適切な理由
・営業 35 の1行:開発(平均45)も条件を満たすのに除いています。
・3行:HAVING句の条件を適用していない結果です。
・開発 45 の1行:営業の平均(35)を誤って30未満としています。

覚え方のポイント
「WHERE=グループ化の前に行を絞る」「HAVING=グループ化の後にグループを絞る」。集計関数(AVG、SUM、COUNTなど)を条件にするときはHAVINGを使います。
問33-4

社員表の全ての社員の行を、給与の高い順に並べて表示したい。SQL文の末尾に付けるものとして、最も適切なものはどれか。

  • ①ORDER BY 給与 ASC
  • ②GROUP BY 給与 DESC
  • ③ORDER BY 給与 DESC
  • ④WHERE 給与 DESC
答えと解説を見る
正解 ③ORDER BY 給与 DESC
解説
SELECT文の結果を並べ替えるには、ORDER BY句を使います。DESC(descending)を付けると降順(大きい順)、ASC(ascending)を付けるか何も付けないと昇順(小さい順)になります。給与の高い順なので「ORDER BY 給与 DESC」です。

他の選択肢が不適切な理由
・ORDER BY 給与 ASC:昇順(給与の低い順)に並べます。
・GROUP BY 給与 DESC:GROUP BYはグループ化の句で、並べ替えには使いません。
・WHERE 給与 DESC:WHEREは行を絞り込む条件の句で、並べ替えには使いません。

覚え方のポイント
「DESC=下がっていく(降順)」「ASC=上がっていく(昇順・省略時の既定)」。SQL文の句の順序は SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY です。
問43-4

顧客表の氏名が「山」で始まる顧客の行をすべて取り出したい。WHERE句の条件として最も適切なものはどれか。

  • ①氏名 LIKE '%山'
  • ②氏名 LIKE '山%'
  • ③氏名 = '山%'
  • ④氏名 IN ('山')
答えと解説を見る
正解 ②氏名 LIKE '山%'
解説
LIKEは、文字列のパターンで検索する演算子です。%は「0文字以上の任意の文字列」、_(アンダーバー)は「任意の1文字」を表します。「山で始まる」は、先頭が「山」で、その後に何が続いてもよいので、'山%' と書きます。山田、山本、山などが該当します。

他の選択肢が不適切な理由
・LIKE '%山':「山で終わる」氏名(例:小山、青山)を取り出す条件です。
・= '山%':=は完全一致なので、「山%」という文字列そのものの氏名しか取り出せません。%はLIKEでしか特別な意味を持ちません。
・IN ('山'):氏名が「山」と完全に一致する行だけを取り出す条件です。

覚え方のポイント
「'山%'=山で始まる」「'%山'=山で終わる」「'%山%'=山を含む」。%の位置で意味が変わります。
問53-4

次のSQL文の意味として、最も適切なものはどれか。
SELECT 氏名 FROM 顧客 WHERE 顧客番号 IN (SELECT 顧客番号 FROM 注文)

  • ①注文表に一度でも登場する顧客番号を持つ顧客の氏名を取り出す
  • ②注文表に一度も登場しない顧客番号を持つ顧客の氏名を取り出す
  • ③顧客表と注文表の全ての行の組合せから、氏名を取り出す
  • ④注文の件数が多い順に、顧客の氏名を並べて取り出す
答えと解説を見る
正解 ①注文表に一度でも登場する顧客番号を持つ顧客の氏名を取り出す
解説
かっこの中のSELECT文は副問合せ(サブクエリ)で、先に実行されて注文表にある顧客番号の一覧を返します。外側のSELECT文は、顧客番号がその一覧に含まれる(IN)顧客の氏名を取り出します。つまり、一度でも注文したことがある顧客の氏名が求められます。

他の選択肢が不適切な理由
・一度も登場しない顧客:IN ではなく NOT IN を使った場合の意味です。
・全ての行の組合せ:直積(CROSS JOIN)の意味で、この文とは異なります。
・注文の件数が多い順に並べる:件数を数える集計(COUNT)や並べ替え(ORDER BY)は含まれていません。

覚え方のポイント
副問合せは「かっこの内側から先に読む」。IN(含まれる)とNOT IN(含まれない)、EXISTS(存在する)の違いがよく問われます。
問63-4

SQLで、表の列の値の重複を除いて結果を表示するために、SELECTの直後に指定するものはどれか。

  • ①ALL
  • ②UNIQUE KEY
  • ③GROUP
  • ④DISTINCT
答えと解説を見る
正解 ④DISTINCT
解説
SELECT DISTINCT 列名 と書くと、取り出した結果のうち、同じ値の行は1つにまとめて表示されます。例えば「SELECT DISTINCT 部署 FROM 社員」とすると、社員表にある部署の名前が重複なく1回ずつ表示されます。

他の選択肢が不適切な理由
・UNIQUE KEY:表を定義するときに、列の値が重複しないようにする制約の指定に関係する語で、検索結果の重複を除くものではありません。
・GROUP:GROUP BYの一部で、単独でSELECTの直後に書くものではありません。
・ALL:重複を除かずに全ての行を表示する指定で、何も書かない場合と同じです。

覚え方のポイント
「DISTINCT=区別できるもの(重複なし)」。関係代数の射影は重複を除きますが、SQLのSELECTは既定では重複を残すため、除きたいときにDISTINCTを付けます。
問73-4

データベースの利用者に、特定の表に対する検索の権限を与えるSQL文はどれか。

  • ①COMMIT
  • ②REVOKE
  • ③CREATE
  • ④GRANT
答えと解説を見る
正解 ④GRANT
解説
GRANT文は、利用者(またはロール)に、表やビューに対する操作の権限(SELECT、INSERT、UPDATE、DELETEなど)を与えるSQL文です。例えば「GRANT SELECT ON 社員 TO 佐藤」と書くと、佐藤さんに社員表の検索の権限を与えます。

他の選択肢が不適切な理由
・REVOKE:与えた権限を取り消す(剥奪する)SQL文です。
・COMMIT:トランザクションの更新内容を確定させるSQL文です。
・CREATE:表やビューなどを新しく作成するSQL文です。

覚え方のポイント
「GRANT=与える」「REVOKE=取り消す」は権限の管理(データ制御言語:DCL)のセットです。必要最小限の権限だけを与えることが、セキュリティの基本です。
問83-4

SQLのビューの説明として、最も適切なものはどれか。

  • ①データを実際に複写して別の場所に保存した、バックアップ用の表
  • ②検索を速くするために、列の値と行の位置を対応づけた索引
  • ③基の表から定義した仮想の表で、必要なデータだけを見せられる
  • ④更新の途中で障害が起きたときに、元の状態に戻すための記録
答えと解説を見る
正解 ③基の表から定義した仮想の表で、必要なデータだけを見せられる
解説
ビューは、実際の表(基底表)から、SELECT文によって必要な行や列だけを取り出して定義した仮想の表です。データを実際に持つのではなく、使うたびに基底表から作られます。利用者に見せる必要のない列(給与など)を隠したり、複雑な結合を簡単に使えるようにしたりできます。

他の選択肢が不適切な理由
・データを複写して保存したバックアップ用の表:バックアップやレプリカの説明です。ビューはデータを複写しません。
・列の値と行の位置を対応づけた索引:インデックスの説明です。
・障害時に元に戻すための記録:ログ(更新前ログ)の説明です。

覚え方のポイント
「ビュー=見るための窓(仮想の表)」。ビューは、見せる範囲を制限するセキュリティ対策としても使われます(3層スキーマの外部スキーマにあたります)。
問93-4

顧客表と注文表を顧客番号で結合し、注文が1件もない顧客も含めて全ての顧客を結果に表示したい。使う結合として最も適切なものはどれか。顧客表を左側に置くものとする。

  • ①内部結合(INNER JOIN)
  • ②左外部結合(LEFT OUTER JOIN)
  • ③交差結合(CROSS JOIN)
  • ④自然結合(NATURAL JOIN)
答えと解説を見る
正解 ②左外部結合(LEFT OUTER JOIN)
解説
外部結合は、結合の相手に対応する行がない行も結果に残す結合です。左外部結合(LEFT OUTER JOIN)では、左側の表(ここでは顧客表)の行は全て残り、右側の表(注文表)に対応する行がない場合は、注文の列にNULLが入ります。これで、注文が1件もない顧客も表示できます。

他の選択肢が不適切な理由
・内部結合:両方の表に対応する行があるものだけを結果にするため、注文のない顧客は表示されません。
・交差結合:2つの表の全ての行の組合せ(直積)を作るもので、顧客番号で対応づけません。
・自然結合:同じ名前の列の値が等しい行どうしを結合する内部結合の一種で、注文のない顧客は表示されません。

覚え方のポイント
「内部結合=両方にあるものだけ」「外部結合=片方(LEFTなら左)は全部残す」。相手がない部分にはNULLが入ります。
問103-4

SQLで、列の値がNULL(値が存在しない)の行を取り出すWHERE句の条件として、最も適切なものはどれか。

  • ①WHERE 電話番号 IS NULL
  • ②WHERE 電話番号 = NULL
  • ③WHERE 電話番号 = ''
  • ④WHERE 電話番号 = 0
答えと解説を見る
正解 ①WHERE 電話番号 IS NULL
解説
NULLは「値が存在しない」ことを表す特別な状態で、数値の0や空の文字列とは異なります。NULLとの比較に = を使うと、結果は真にも偽にもならない(不明になる)ため、行は取り出されません。NULLかどうかを調べるときは、必ず IS NULL(NULLでないときは IS NOT NULL)を使います。

他の選択肢が不適切な理由
・= NULL:NULLとの比較は不明(UNKNOWN)となり、条件を満たす行として扱われません。
・= '':長さ0の文字列(空文字)と比較する条件で、NULLとは別物です。
・= 0:数値の0と比較する条件で、NULLとは別物です。

覚え方のポイント
「NULLは = で比べられない。IS NULL を使う」。NULLは「0でも空白でもない、値がない状態」です。

基本情報技術者(科目A)の対策問題(全600問)に戻る

非公式の資格試験対策サイトです。独立行政法人情報処理推進機構(IPA)とは一切関係ありません。

※本ページでは、アクセス解析(Googleアナリティクス)と、広告の配信・成果の計測(A8.net)のためにCookie等を利用し、閲覧に関する情報をGoogle LLC・株式会社ファンコミュニケーションズへ送信しています。詳しくはプライバシーポリシーをご覧ください。

※本ページの問題・解説は、生成AI(人工知能)を活用して作成しています。

【PR】