本物のクライアントで学ぶSQL
この講座ではデータベースクライアントで例題を実行します。23テーブル・約5万行のショップデータベースを使うため、結合や GROUP BY も実際のデータで確認できます。
例題のほとんどには Planche で実行 ボタンがあります。押すと、サンプルデータベースとクエリを用意したアプリが開きます。インストールやアカウント登録は不要で、データはブラウザ内で処理されます。
基本コース
- データベースはどんな形をしているか テーブル、行、列、NULL、主キー、クエリの実行
- 行を読む:SELECT・WHERE・ORDER BY・LIMIT SELECT、列の指定、WHERE、ORDER BY、LIMIT、列の別名
- 行を絞り込む:WHERE のすべて AND / OR の優先順位、IN、BETWEEN、LIKE、IS NULL
- テーブルを組み合わせる:JOIN INNER JOIN、複数テーブルの結合、LEFT JOIN、ON と WHERE、自己結合
- 行を要約する:GROUP BY COUNT、SUM、AVG、MIN、MAX、GROUP BY、HAVING、COUNT DISTINCT
- クエリの中のクエリ:サブクエリ スカラーサブクエリ、IN、EXISTS、NOT EXISTS、導出テーブル、相関サブクエリ
- 手順に分けるクエリと行をまたぐ計算:CTEとウィンドウ関数 WITH、CTEの連鎖、ROW_NUMBER、RANK、DENSE_RANK、SUM OVER、LAG
- データを変える:INSERT・UPDATE・DELETE INSERT、UPDATE、DELETE、主キーの衝突、BEGIN / COMMIT / ROLLBACK
- なぜ遅いのか:インデックスとEXPLAIN EXPLAIN QUERY PLAN、全表走査、索引検索、インデックスの効く条件
方言別
- ページング:LIMIT・OFFSET … FETCH・TOP・ROWNUM LIMIT / OFFSET、OFFSET … FETCH、TOP、ROWNUM、キーセットページング
- upsert:行を挿入する、すでにあれば更新する ON CONFLICT DO UPDATE / DO NOTHING、ON DUPLICATE KEY UPDATE、MERGE、INSERT OR REPLACE
- 文字列と日付、エンジンごとの書き方 連結、日付の書式、日付の差、COALESCE / IFNULL / ISNULL / NVL
- 2つのテーブルにまたがるUPDATEとDELETE サブクエリとEXISTSの形、UPDATE … JOIN、UPDATE … FROM、DELETE … USING、更新可能な結合ビュー