メインコンテンツにスキップ
eLearner.app

インタラクティブコース

SQLコース

ブラウザで実際に Postgres を実行しながら、SQL をゼロから英語で学習します。

01 · モジュール 1 — 基本的な SELECT

4 レッスン

基礎: テーブルからのデータの読み取りとフィルタリング。

  1. 1.1SQL の概要SQL とは何か、SQL が使用される理由、データベースとはどのようなものなのか。~5 min
  2. 1.2…から選択最も単純なクエリ: テーブルから行を読み取る。~10 min
  3. 1.3WHERE によるフィルタリング条件を満たす行のみを選択します。~10 min
  4. 1.4ORDER BYで並べ替える結果を昇順または降順に並べます。~8 min

02 · モジュール 2 — より強力な SELECT

4 レッスン

制限、重複排除、名前変更、カウント: 毎日使用するツール。

  1. 2.1LIMITによる制限たとえば、リーダーボードを作成するために、最初の N 行のみを返します。~6 min
  2. 2.2DISTINCT を使用した一意の値SELECT の結果から重複を削除します。~6 min
  3. 2.3AS で名前を変更する結果内の列と式に、より読みやすい名前を付けます。~6 min
  4. 2.4カウントと集計: COUNT、AVG、MAX集計関数: 多数の行から 1 つの数値を取得します。~8 min

03 · モジュール 3 — JOIN と GROUP BY

4 レッスン

複数のテーブルを結合し、グループごとにレポートを作成することは、実際のクエリの中心です。

  1. 3.12 つのテーブルを結合する: INNER JOIN関係に従って異なるテーブルの行を結合します。~12 min
  2. 3.2すべてを左側に維持する: LEFT JOIN他のテーブルに一致しない行を含めます。~10 min
  3. 3.3GROUP BYによるグループ化グループごと、たとえば部門ごとに集計を計算します。~10 min
  4. 3.4グループのフィルタリング: HAVING集計上の条件を満たすグループのみを保持します。~8 min

04 · モジュール 4 — 実践的な SQL

4 レッスン

実際の作業に違いをもたらすツール: リスト、範囲、NULL、条件付きロジック。

  1. 4.1リストと範囲: IN と BETWEEN「これらのいずれか」と「A と B の間」のコンパクトなフィルター。~8 min
  2. 4.2NULL の処理: IS NULL と COALESCE欠損値を予期せず認識して対処します。~10 min
  3. 4.3条件付きロジック: CASE WHENSELECT 内で値をカテゴリに直接変換します。~10 min
  4. 4.4別のクエリ内のクエリ: サブクエリ別の SELECT 内で SELECT の結果を使用する。~12 min

05 · モジュール 5 — 高度な JOIN

4 レッスン

複数テーブルの JOIN、自己結合、OUTER、CROSS、集合演算: プロのようにデータを結合します。

  1. 5.13 つ以上のテーブルでの JOIN単一のクエリで、注文→顧客→製品という一連の関係をたどります。~12 min
  2. 5.2Self-JOIN: それ自体とのテーブル階層と内部関係: 2 つの役割 (子と親) によるテーブルの読み取り。~10 min
  3. 5.3OUTER JOIN: 「ギャップ」を見つけるLEFT/RIGHT/FULL OUTER JOIN を使用して、一致しない行を検索します。~10 min
  4. 5.4UNION、INTERSECT、EXCEPT (および CROSS JOIN)結果をセットとして結合します: 和集合、交差、差分、デカルト積。~12 min

06 · モジュール 6 — 組み込み関数

4 レッスン

PostgreSQL ネイティブ関数 (文字列、日付、数値、型変換) を使用してデータを変換および操作します。

  1. 6.1文字列関数LOWER、UPPER、LENGTH、連結、SUBSTRING、TRIM、REPLACE、LIKE、および ILIKE。~12 min
  2. 6.2日付とタイムスタンプの関数EXTRACT、DATE_TRUNC、間隔および日付の違い。~12 min
  3. 6.3数値関数ROUND、CEIL、FLOOR、ABS、MOD、および整数と小数の除算。~10 min
  4. 6.4CAST と型変換`::type` と `CAST(... AS ...)` による型間の変換。~10 min

07 · モジュール 7 — 高度な分析

4 レッスン

マルチステップ クエリ (CTE)、ランキングと累計 (ウィンドウ関数)、無制限の階層 (WITH RECURSIVE)。

  1. 7.1CTE: WITH を使用した複数ステップのクエリ可読性と再利用性を高めるために、複雑なクエリを名前付きのステップに分割します。~12 min
  2. 7.2ウィンドウ関数: ランキングとグループごとの計算グループ内ランキングの場合は、ROW_NUMBER、RANK、DENSE_RANK と OVER(PARTITION BY …)。~14 min
  3. 7.3LAG、LEAD、および累計各行を前/次の行と比較し、累積合計を計算します。~12 min
  4. 7.4再帰的 CTE: 任意の深さの階層カテゴリなどの階層を横断する場合は WITH RECURSIVE。~14 min

08 · モジュール 8 — データの書き込みと変更

4 レッスン

INSERT、UPDATE、DELETE、制約付きの CREATE TABLE、トランザクション: 書き込みによるループの終了。

  1. 8.1データの挿入: INSERT単一行および複数行の INSERT、RETURNING 句、明示的に列を選択します。~10 min
  2. 8.2更新と削除: UPDATE と DELETEWHERE による選択的な変更、および WHERE を忘れると大惨事となる理由。~10 min
  3. 8.3テーブルと制約の作成: DDL主キー、NOT NULL、一意、外部キー、チェック、デフォルトを使用してテーブルを作成します。~12 min
  4. 8.4トランザクション: オールオアナッシングBEGIN、COMMIT、ROLLBACK: 操作のグループをアトミックにします。~10 min

09 · モジュール 9 — データ構造と DDL

4 レッスン

テーブル、高度な制約、複雑なタイプとビューの作成と変更。

  1. 9.1高度なデータ型とENUM数値型、TEXT と VARCHAR、BOOLEAN、UUID、およびカスタム ENUM 型。~10 min
  2. 9.2複数のテーブルレベルの制約複合的な UNIQUE 制約と PRIMARY KEY 制約、高度な CHECK および外部キー (ON DELETE CASCADE)。~12 min
  3. 9.3構造の変更: ALTER TABLE既存のテーブルに対する列または制約の追加、変更、削除。~10 min
  4. 9.4ビューとデータの抽象化複雑なクエリを簡素化するための VIEW とパフォーマンスのための MATERIALIZED VIEW を作成します。~12 min

10 · 最適化とインデックス

4 レッスン

クエリを高速化する技術: インデックス、実行プラン、データベースの最適化。

  1. 10.1インデックスとBツリーインデックスを作成すると、大規模なテーブルのルックアップ クエリが大幅に高速化されます。~15 min
  2. 10.2説明と分析データベースの実行計画を読んでボトルネックを診断する方法を学びます。~15 min
  3. 10.3複合インデックスと部分インデックス複数の列に対してインデックスを一度に使用するか、データの特定のスライスに対してのみインデックスを使用します。~12 min
  4. 10.4N+1 問題悪名高い ORM パフォーマンスの問題と、それを 1 つのクエリで解決するネイティブ SQL メソッド。~12 min

11 · トランザクションと同時実行性

4 レッスン

ACID トランザクション、ロック、分離レベルなどの同時データ変更を安全に管理します。

  1. 11.1ACID トランザクション (BEGIN/COMMIT)BEGIN、COMMIT、ROLLBACK でデータの一貫性を保ち、クエリを他の人には見えない単一のブロックにグループ化します。~15 min
  2. 11.2競合状態エッジ シナリオ: 2 人の並列データベース従業員が同じユーザー カートを操作すると何が起こるか。~10 min
  3. 11.3ロックと更新のための選択読み取り中に行をアクティブにロックし、他の変更中のスレッドに順番を待機させます。~15 min
  4. 11.4分離レベルSerializable を実装して限界に挑戦するか、安全ではないが高速なパフォーマンスを得るために Read Committed に落とします。~12 min

12 · 関数とトリガー

4 レッスン

データベース内のビジネス ロジックを自動化します。再利用可能な関数を作成し、トリガーでイベントに反応します。

  1. 12.1UDF とベース SQL独自のユーザー定義関数を作成して複雑な計算をカプセル化し、すべてのクエリでマクロのように再利用します。~15 min
  2. 12.2PL/pgSQL を使用した高度なロジック変数、if-else 分岐、データベース内の純粋な手続き型スタイルのループなど、関数にスーパーパワーを与えます。~15 min
  3. 12.3トリガーの概要OUTGOING (OLD) または INCOMING (NEW) レコードを即座に検査できる特別な関数を定義します。~15 min
  4. 12.4実践的なトリガーと監査安全性の自動化: 「updated_at」日付を自動更新し、コンプライアンスのために削除された行を魔法のようにアーカイブします。~12 min

13 · ウィンドウ関数

4 レッスン

行を折りたたむことのない高度なデータ分析: OVER()、PARTITION BY、および分析関数を発見します。

  1. 13.1導入とOVER句元の個々の行を保持しながら、集計計算 (SUM や AVG など) を実行します。~15 min
  2. 13.2PARTITION BYによるグループ化GROUP BY を使用せずに、関数を適用するデータ内に論理グループ (ウィンドウ) を作成します。~15 min
  3. 13.3ランキング: ROW_NUMBER、RANK、DENSE_RANK結果に連続した行番号とランクを割り当て、同順位を正しく処理します。~15 min
  4. 13.4シフト: LAG と LEAD現在の行から前または次の行の値に直接アクセスして、デルタと変動を計算します。~12 min

14 · CTE と階層クエリ (WITH)

3 レッスン

共通テーブル式を使用して巨大なクエリを簡素化し、再帰的 CTE を使用して無制限のデータ ツリーをナビゲートします。

  1. 14.1CTE の概要 (WITH)一時的な「仮想テーブル」を宣言することで、読み取り不可能なネストされたサブクエリをクリーンな手続き形式に置き換えます。~12 min
  2. 14.2複数のチェーンされた CTE単一の WITH ステートメント内で処理を複数の連続ステップに分割することで、複雑さを軽減します。~15 min
  3. 14.3再帰的 CTE: ツリー状データCTE 自体から CTE を呼び出すことで、マネージャー階層と親子カテゴリを無制限に移動できます。~18 min

15 · PostgreSQL JSON と NoSQL

2 レッスン

外部データベースを使用せずに、JSON および JSONB を介した柔軟なドキュメント サポートと組み合わせたリレーショナル パワーを活用します。

  1. 15.1JSON と JSONB の統合複雑なドキュメントを列内に保存し、矢印演算子を使用してそのフィールドをクエリします。~15 min
  2. 15.2JSON集計関数json_build_object() と json_agg() を使用して、SQL でネイティブにオンザフライで JSON ファイルまたはオブジェクト配列を生成します。~15 min