レッスン 1
SQL とは何か
リレーショナルデータの問い合わせと変更のための宣言型言語として SQL を理解します。
SQL はリレーショナルデータを扱うための言語です。データベースが実行すべき各ステップを記述するのではなく、欲しい結果を記述します。テーブルの行、フィルタに一致する行、別テーブルと結合した行、カテゴリごとに集約した行などです。
これが SQL を通常のアプリケーションコードと区別します。SELECT 文はリクエストに近いものです。
SELECT id, email
FROM users
WHERE status = 'active'
ORDER BY created_at DESC;
users から id と email 列を返し、アクティブなユーザーのみを残し、最新のアカウントを先頭に並べる、という意味です。
開発者が SQL に出会う理由
ORM を使っていても、多くの本番挙動の下には SQL があります。
- リレーショナルデータを読み書きする API エンドポイント
- 管理ダッシュボードとレポート用クエリ
- スロークエリログとデータベースエラーメッセージ
- マイグレーション、制約、インデックス、データ修復スクリプト
- レビュアーがデータアクセス変更を理解する必要があるプルリクエスト
実践的なスキルは、すべてのデータベース機能を暗記することではありません。クエリの形を読み、危険な前提を見抜き、密な文を理解可能な部分に分解することです。
SQL はどこでも同じではない
SQL には共通のコアがありますが、各データベースには方言の詳細があります。PostgreSQL、MySQL、SQLite、SQL Server などは、関数、引用、日付処理、JSON サポート、ページネーション、手続き構文で異なります。
フォーマッタやパーサーが方言を尋ねるときは、分かっていればソースのデータベースを選んでください。汎用 SQL は単純なクエリに有用ですが、実際のアプリケーションクエリはベンダー固有の構文を使うことが多いです。
要点
SQL を構造化されたテキストとして読むことから始めます。選択列、ソーステーブル、フィルタ、JOIN、グループ化、ソート、制限です。その構造が見えると、デバッグははるかに謎めかなくなります。
SQL Formatter にクエリを貼り付け、SQL を変更する前に各句を特定する練習をしてください。