0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

応用情報技術者試験 SQLの一歩進んだ学習

Last updated at Posted at 2025-03-15

本稿は、応用情報技術者試験のデータベース分野に不可欠であるSQL知識を、具体的なテーブル操作を通じて理解を深めるものです。

基本情報技術者試験で出題されるSQLが大まかにわかる方向けです。

今回の内容は以下の動画でも解説しています。

独自の解釈により、不適切な表現がある可能性があります。不適切な表現があった場合、その都度修正していきます。

SQL SELECT文における句の実行順序

SQLクエリの句の論理的な実行順序は以下のとおりです。

論理的な実行順序(概要)

SQL句 説明
1 FROM句 テーブルを指定します。
2 JOIN句 複数テーブルの結合方法を指定します。
3 WHERE句 行の抽出条件を指定します。
4 GROUP BY句 行をグループ化します。
5 HAVING句 グループ毎の集計結果に基づいて、さらにデータを絞り込む条件を指定します。
6 SELECT句 出力する列を指定します。
7 ORDER BY句   結果セットをソートします。

結合 (JOIN) について

結合 (JOIN) は、複数のテーブルから関連するデータを組み合わせて取得するための機能です。
結合の種類を理解することで、目的に応じたデータ抽出が可能になります。

クロス結合

(FROM テーブルA CROSS JOIN テーブルB;)

  • テーブルAとテーブルBのすべての行を組み合わせる
  • 結合条件は不要

※下記、CROSS JOINの結果の表にある foreign_key_b カラムの値について、先頭の2桁は誤記です。申し訳ございません。

image.png


内部結合

(FROM テーブルA INNER JOIN テーブルB ON 結合条件;)

  • テーブルAとテーブルBで結合キーが一致する行のみを結合
  • 一致しない行は除外される
  • 両方のテーブルにデータが存在する行のみ取得したい場合に利用

image.png


左外部結合

(FROM テーブルA LEFT OUTER JOIN テーブルB ON 結合条件;)

  • テーブルA (左側) のすべての行を残す
  • テーブルB (右側) で結合キーが一致する行を結合
  • テーブルBに一致する行がない場合、テーブルB側のカラムはNULLになる

image.png


右外部結合

(FROM テーブルA RIGHT OUTER JOIN テーブルB ON 結合条件;)

  • テーブルB (右側) のすべての行を残す
  • テーブルA (左側) で結合キーが一致する行を結合
  • テーブルAに一致する行がない場合、テーブルA側のカラムはNULLになる

image.png


サブクエリと相関副問い合わせ

  • サブクエリ: SQLクエリ内に入れ子になったクエリ
  • 相関副問い合わせ:
    • サブクエリが外側のクエリ(主クエリ)の各行に依存して実行
    • 主クエリの行ごとにサブクエリが繰り返し評価される

image.png


相関副問い合わせの動きと結果

SELECT *
FROM XMemberT A
WHERE A.Value1>= (
    SELECT AVG(B.Value1)
    FROM XRelationT B
    WHERE B.MemberID = A.MemberID -- 相関部分!
);
  1. 主クエリ (XMemberT A) が1行ずつ処理
  2. 各行 (A) に対して、サブクエリが実行:
    • WHERE B.MemberID = A.MemberID によって、AMemberID と同じ MemberID を持つ XRelationT (B) のレコードのみを処理
    • それらのレコードの Value1 の平均 (AVG(B.Value1)) を計算
  3. 主クエリの WHERE A.Value1 >= (サブクエリ) で比較:

GROUP BY

SQLでデータ集計処理を行うことができます。

image.png


GROUP BY

  • GROUP BY句: 指定したカラムでデータをグループ化
  • 集計関数: グループごとに合計、平均などを計算 (SUM, AVG, COUNT など)
  • HAVING句: 集計後のグループに対して条件を指定し絞り込み
  • SELECT句: 最終的な出力カラムを指定 (集計関数も含む)

SQLの例

SELECT
    カテゴリ,
    SUM(1),
    AVG(2)
FROM
    テーブル
GROUP BY
    カテゴリ
HAVING
    AVG(2) > 100;

標準SQLにおけるセミコロン (;) の意味

SQL文の区切り記号

  • セミコロン (;) は、標準SQLにおいて文の区切りを表します。
  • 複数のSQL文を記述する場合、それぞれの文を ; で区切ることで、独立したSQL文として認識されます。
SELECT * FROM table1;
SELECT * FROM table2;

セミコロンの役割

  • 文の区切り: SQL文の終端を明確にし、複数の文を区別します。
  • 可読性の向上: コードを読みやすく整理し、文の区切りを視覚的に認識しやすくします。
  • スクリプト実行: SQLスクリプト (複数のSQL文をまとめたファイル) を実行する際に、文の区切りを正しく認識させるために必要です。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?