IPA SQL・関係代数 — 頻出論点と過去問
頻出論点
1. この分野は何か
関係データベースに蓄えられた表から、目的のデータを取り出したり加工したりする演算と問い合わせ言語を扱う分野です。理論の土台である関係代数と、実装言語であるSQLの両面から、複数の表をどう結びつけ、どの単位で集計・絞り込みを行うかが問われます。特に、値が存在しないことを表すNULLが結合・比較・集計に混ざったときの振る舞いや、重複行が排除されるか残るかの違いが、つまずきやすいところです。
2. 実際の出題のされ方
具体的な表のデータに対して、条件に合う行の抽出や集計を手作業で追わせる問題が繰り返し出題されています。SQL文を示さずに日本語の条件と複数の表だけを与え、期間や合計額の条件に合うデータを読み取らせる問題が、ITパスポートで出ています。同じくITパスポートでは、関係代数の基本操作の名前を選ばせる問題や、%と_を使ったパターンマッチングの該当件数を数えさせる問題も出ています。
SQL文の実行結果の行数や値を求める問題、目的の結果を得る字句の空欄補充、機能の性質を問う問題は、応用情報技術者の午前と高度試験の午前Iで出題されています。たとえば、更新可能なビューの定義文を選ぶ問題、ストアドプロシージャの性質を問う問題、横に並んだ複数期の売上列を縦の行に並べ替えるSQL文を選ぶ問題、ウィンドウ関数のOVER句に入れる指定を選ぶ問題が出ています。
自己参照する表に相関副問合せを使ったときの結果や、GRANT文で利用者に渡る権限の範囲を選ばせる問題が、情報処理安全確保支援士の午前IIにあります。システム監査技術者の午前IIでは、自然結合と同じ結果になるSQL文を選ぶ問題が出ています。
データベーススペシャリストの午前IIでは、より踏み込んだSQLの構文と関係代数の理論まで問われます。SQLでは、ウィンドウ関数でグループごとの順位付けに使う関数を選ぶ問題、一方の表にだけある行を取り出す結合の種類や集合演算子による表の比較、3値論理の真理値、制約の検査時期を切り替える指定、シーケンスとロールバックの関係などが出題されています。関係代数では、商演算の結果の表や、属性が個ある関係の異なる射影の個数を求める問題が出ています。これに加えて、商演算や等結合の基本演算への分解、差演算を用いた共通集合の表現、演算ごとの和両立の要否など、演算どうしの関係を問う問題も出題されています。
3. 学習のポイント
関係代数の演算は、結果の列構成と重複の扱いを軸に整理します。特定の行を取り出す選択や特定の列を取り出す射影のほか、集合演算は2つの関係の属性の数と対応する定義域がそろっている(和両立である)ことが前提ですが、すべての行の組合せを作る直積にはこの前提がありません。等結合は直積と選択の組合せで表され、結合キーの列が結果に2つとも残りますが、自然結合では共通列の重複が取り除かれて1つになります。また、関係をで割る商演算は、のどの行とも組になっているの値だけを取り出す操作で、のの値との直積からにある組を除くと、に現れない組合せだけが残るので、そこに含まれるを元のから引く手順で表せます。
SQLの結合と副問合せでは、一致しない行の扱いと評価の向きを押さえます。LEFT OUTER JOINでは左表の全行が結果に残り、右表に一致する行がなければ右表の列がNULLになります。このとき、右表の列に対する絞り込み条件をON句に書くかWHERE句に書くかで結果が変わります。相関副問合せでは、外側の表の各行について内側の副問合せを評価します。NOT EXISTSは内側の検索結果が0件のときに真となるため、関連する行が1つも無い行を取り出すのに使われます。また、<や>などの比較演算子の右辺に副問合せを置く場合、副問合せは単一の値を返す必要があります。
集合演算子とウィンドウ関数、DDL・制御文の仕様も重要です。UNION・EXCEPT・INTERSECTはいずれもデフォルトで重複行を1つにまとめます(UNION ALLは重複を残します)。ウィンドウ関数では、OVER句の中でPARTITION BYにより集計や順位付けのグループを分け、ORDER BYでグループ内の順序を指定します。データベースオブジェクトの仕様としては、ビューが更新できるのは、ビューの1行が基底表の1行に対応していて、定義にDISTINCT・GROUP BY・集約関数などの行の対応を崩す構文を含まないときです。ストアドプロシージャは、複数のSQL文をまとめてDBMS側に保存しておき、アプリケーションから1回呼び出すだけで実行させる仕組みです。制約をDEFERRABLEと定義しておくと、SET CONSTRAINTSで検査の時期をコミットのときまで遅らせ、トランザクションの途中で一時的に制約を満たさない状態を許せます。なお、シーケンスの採番はトランザクションの取消しに連動しないため、ロールバックすると番号に欠けが出ることがあります。GRANT文では、WITH GRANT OPTIONを付けると対象表の操作権限だけでなく、その権限を他者に再付与する付与権も一緒に渡ります。
4. 間違えやすいところ
NULLが関わる3値論理・集約関数・外部結合の組合せは、結果を1行ずつ追って確かめる必要があります。SQLの論理演算には真・偽のほかに不定(Unknown)があります。ORでは一方が真なら全体が真に決まりますが、偽と不定のORは不定のままです。WHERE句は条件が真の行だけを残し、不定の行は除外します。また、AVGやSUMなどの集約関数は、COUNT(*)を除いてNULLの行を無視して計算します。たとえば点数の列にNULLの行があると、AVGはその行を分母に入れずに平均を出すので、NULLを0と数えたときの平均とは値が変わります。NULLを別の値に置き換えたいときは、引数のうち最初にNULLでないものを返すCOALESCE関数を使います。
SELECT句にDISTINCTが付いている問題では、抽出された行数をそのまま数えた誤答肢がありました。条件を満たす行を抜き出したあと、指定された列の値が何種類あるかを数え上げる必要があります。
差演算を重ねた式は、引く側の集合が元の集合と重なる部分を持つかどうかをベン図で確かめると、結果が変わるかどうかが分かります。共通部分を持たない集合を引いても、元の集合の要素は減りません。
男女それぞれの最年長を除く問題では、比較演算子の右辺の副問合せをGROUP BYで性別ごとにまとめた誤答肢がありました。この副問合せは複数の行を返すので、単一の値との比較ができずにエラーになります。
ストアドプロシージャの利点として、ディスク装置への入出力の回数が減るとする誤答肢がありました。複数のSQL文をDBMS側にまとめておいても、処理対象のデータ量や必要なディスクアクセス自体は変わりません。
SQL・関係代数の理解度チェック
SQL・関係代数の過去問一覧
- 2025(R7)秋 応用情報技術者 午前 問28 関係データベースのビューに関する記述のうち,適切なものはどれか。…
- 2025(R7)秋 高度試験共通 午前I 問9 関係データベースのビューに関する記述のうち,適切なものはどれか。…
- 2025(R7)秋 データベーススペシャリスト 午前II 問7 SQLの3値論理において,a,bに入れる字句の組合せはどれか。 “真 AND 不定”は a であり,“偽 AND 不定”…
- 2025(R7)秋 データベーススペシャリスト 午前II 問8 表定義に基づいて作成された“システム担当者”表において,トランザクションAの複合文内のSQL文全てを正常終了させるために…
- 2025(R7)秋 データベーススペシャリスト 午前II 問9 “名簿1”表と“名簿2”表のそれぞれ対応する行が全て等しいかどうかを確認するSQL文のa, b, cに入れる適切な字句は…
- 2025(R7)秋 データベーススペシャリスト 午前II 問10 関係演算において,商演算と同等な結果が得られる演算の組合せはどれか。…
- 2025(R7)春 応用情報技術者 午前 問28 和両立である関係 R と S がある。R \cap S と等しいものはどれか。ここで,- は差演算,\cap は共通演算…
- 2025(R7)春 情報処理安全確保支援士 午前II 問21 “従業員”表に対して,SQL文を実行して得られる結果はどれか。ここで,実線の下線は主キーを表し,表中のNULLは値が存在…
- 2025年度(R7) ITパスポート 問66 関係データベースで管理している次の“ログイン記録”表及び“部署”表において,ログイン結果が失敗となったことのある,又は,…
- 2024(R6)秋 応用情報技術者 午前 問30 “成績”表に対して,SQL文1と同一の結果を得るために,SQL文2のaに入れる字句はどれか。…
- 2024(R6)秋 システム監査技術者 午前II 問21 “納品”表と“顧客”表の自然結合と同じ結果を得るSQL文はどれか。…
- 2024(R6)秋 データベーススペシャリスト 午前II 問 1 SQL のシーケンスに関する説明のうち,適切なものはどれか。…
- 2024(R6)秋 データベーススペシャリスト 午前II 問 2 クライアントサーバシステムにおけるストアドプロシージャに関する記述のうち,適切でないものはどれか。…
- 2024(R6)秋 データベーススペシャリスト 午前II 問7 “商品”表と“商品別売上実績”表に対して,SQL文を実行して得られる売上平均金額はどれか。…
- 2024(R6)秋 データベーススペシャリスト 午前II 問8 図のツリー構造に対するデータを格納した“隣接リスト”表から,リーフノードを取得するSQL文のaに入れる字句はどれか。ここ…
- 2024(R6)秋 データベーススペシャリスト 午前II 問9 “商品”表と“納品”表を商品番号で等結合した結果はどれか。…
- 2024(R6)秋 データベーススペシャリスト 午前II 問10 “従業員”表から,男女それぞれの最年長従業員を除く全ての従業員を取り出すSQL文とするために,aに入れる字句はどれか。こ…
- 2024(R6)秋 データベーススペシャリスト 午前II 問11 関係 R,S に次の演算を行うとき,R と S が和両立である必要のないものはどれか。…
- 2024(R6)春 応用情報技術者 午前 問25 ストアドプロシージャの利点はどれか。…
- 2024(R6)春 応用情報技術者 午前 問26 “部品”表及び“在庫”表に対し,SQL文を実行して結果を得た。SQL文の a に入れる字句はどれか。…
- 2024(R6)春 高度試験共通 午前I 問9 ストアドプロシージャの利点はどれか。…
- 2024(R6)春 情報処理安全確保支援士 午前II 問21 “人事”表に対して次のSQL文を実行したとき,結果として得られる社員番号はどれか。…
- 2024年度(R6) ITパスポート 問93 関係データベースで管理している“従業員”表から,氏名が‘%葉’に該当する従業員を抽出した。抽出された従業員は何名か。ここ…
- 2023(R5)秋 応用情報技術者 午前 問28 更新可能なビューを作成する SQL文はどれか。ここで,SQL文に現れる基底表は全て更新可能とする。…
- 2023(R5)秋 応用情報技術者 午前 問29 “製品”表と“在庫”表に対し,次のSQL文を実行した結果として得られる表の行数は幾つか。 ``sql SELECT DI…
- 2023(R5)秋 データベーススペシャリスト 午前II 問9 “成績”表から,クラスごとに得点の高い順に個人を順位付けした結果を求めるSQL文の,aに入れる字句はどれか。…
- 2023(R5)秋 データベーススペシャリスト 午前II 問10 表Aと表Bから,どちらか一方にだけ含まれるIDを得るSQL文の a に入れる字句はどれか。…
- 2023(R5)秋 データベーススペシャリスト 午前II 問11 関係 R と関係 S において,R ÷ S の関係演算結果として,適切なものはどれか。ここで,÷ は商演算を表す。…
- 2023(R5)春 応用情報技術者 午前 問27 クライアントサーバシステムにおけるストアドプロシージャの記述として,誤っているものはどれか。…
- 2023(R5)春 情報処理安全確保支援士 午前II 問21 次のSQL文をA表の所有者が発行したときの,利用者BへのA表に関する権限の付与を説明したものはどれか。…
- 2023年度(R5) ITパスポート 問100 関係データベースにおける結合操作はどれか。…
- 2022(R4)秋 応用情報技術者 午前 問27 “従業員”表に対して“異動”表による差集合演算を行った結果はどれか。…
- 2022(R4)秋 応用情報技術者 午前 問28 “商品” 表に対して,次の SQL 文を実行して得られる仕入先コード数は幾つか。…
- 2022(R4)秋 データベーススペシャリスト 午前II 問6 “文書”表,“社員”表から結果を得るSQL文の a に入れる字句はどれか。…
- 2022(R4)秋 データベーススペシャリスト 午前II 問7 “商品”表と“商品別売上実績”表に対して,SQL文を実行して得られる売上平均金額はどれか。…
- 2022(R4)秋 データベーススペシャリスト 午前II 問8 “社員”表に対して,SQL文を実行して得られる結果はどれか。ここで,実線の下線は主キーを表し,表中の NULL は値が存…
- 2022(R4)秋 データベーススペシャリスト 午前II 問9 SQL文1とSQL文2を実行した結果が同一になるために,表Rが満たすべき必要十分な条件はどれか。 〔SQL文1〕 ``s…
- 2022(R4)秋 データベーススペシャリスト 午前II 問10 和両立である関係RとSがある。R \cap Sと等しいものはどれか。ここで,-は差演算,\capは共通集合演算を表す。…
- 2022(R4)秋 データベーススペシャリスト 午前II 問11 関係R, Sの等結合演算は,どの演算によって表すことができるか。…
- 2022(R4)秋 データベーススペシャリスト 午前II 問12 “社員”表から,男女それぞれの最年長社員を除く全ての社員を取り出すSQL文とするために,aに入れる字句はどれか。ここで,…
- 2022(R4)秋 情報処理安全確保支援士 午前II 問21 表Rと表Sに対して,次のSQL文を実行した結果はどれか。 〔SQL文〕 ``sql SELECT R.X AS A, R…
- 2022年度(R4) ITパスポート 問98 関係データベースで管理している“従業員”表から,氏名の列だけを取り出す操作を何というか。…
- 2021(R3)秋 応用情報技術者 午前 問26 関係Rと関係Sに対して,関係Xを求める関係演算はどれか。…
- 2021(R3)秋 応用情報技術者 午前 問29 “部門別売上”表から,部門コードごと,期ごとの売上を得るSQL文はどれか。…
- 2021(R3)秋 システム監査技術者 午前II 問21 関係データベースのビューに関する記述のうち,適切なものはどれか。…
- 2021(R3)秋 高度試験共通 午前I 問8 関係Rと関係Sに対して,関係Xを求める関係演算はどれか。…
- 2021(R3)秋 データベーススペシャリスト 午前II 問6 “商品”表と“当月商品仕入合計”表に対して,SQL文を実行した結果はどれか。…
- 2021(R3)秋 データベーススペシャリスト 午前II 問8 “社員取得資格”表に対し,SQL文を実行して結果を得た。SQL文の a に入れる字句はどれか。…
- 2021(R3)秋 データベーススペシャリスト 午前II 問9 属性が n 個ある関係の異なる射影は幾つあるか。ここで,射影の個数には,元の関係と同じ結果となる射影,及び属性を全く含ま…
- 2021(R3)秋 データベーススペシャリスト 午前II 問10 ある電子商取引サイトでは,会員の属性を柔軟に変更できるように,“会員項目”表で管理することにした。“会員項目”表に対し,…
- 2021(R3)秋 データベーススペシャリスト 午前II 問11 関係R, Sに次の演算を行うとき,RとSが和両立である必要のないものはどれか。…
- 2021(R3)春 システムアーキテクト 午前II 問24 ある月の“月末商品在庫”表と“当月商品出荷実績”表を使って,ビュー“商品別出荷実績”を定義した。このビューにSQL文を実…
- 2021年度(R3) ITパスポート 問95 関係データベースで管理された“商品”表,“売上”表から売上日が5月中で,かつ,商品ごとの合計額が20,000円以上になっ…
データベースのほかの論点
データモデル・E-R/UML・キー37問 正規化・関数従属19問 トランザクション・同時実行制御30問 障害回復・バックアップ26問 分散DB・NoSQL18問 インデックス・物理設計11問