kumak1’s blog

kumak1のイラストや技術ログ

Webディレクター向けSQL講座を開いたので資料共有

所属チーム内で数値を扱うことが増えてきた。エンジニアがいい感じに抽出してたのだけど「皆つかえればサイキョーね?」と思ったので勉強会を開くことに。 なんやかんやあってチーム外にも波及して、ディレクター・デザイナ・CSが10名以上で受ける大所帯になった。 そこそこ好評なので資料を共有します。

カリキュラム

  • 第1回 「行と列と正規化」
    • お話し
  • 第2回 「抽出行をしぼる」
    • select from where order by limit
  • 第3回 「抽出行をいっぱいしぼる」
    • and or like > < <> in
  • 第3回 「抽出行をまとめる」
    • distinct group by min max count having
  • 第4回 「表をつなげる」
    • inner join left join
  • 第5回 「抽出結果でしぼる」
    • サブクエリ
  • 第6回 「抽出結果を組み合わせる」
    • union
  • 第7回 「列表示を置換する」
    • case
  • 第8回 「エンジニアが作ったサービス分析用のSQLを眺める」
    • 実際の(複雑な)リレーションを理解する

より身につけるには

  • 飲み物を持参しよう
    • 脳は水が必要
  • 身近な例に置き換えて聞いてみよう
    • 感情移入しよう
  • 遠慮なく声を出そう
    • 聞く(input)だけじゃなく、口に出して確認(output)してみよう

第1回 「行と列と正規化」

うまく「使う」ために、製作者(RDBMS, table設計)のねらいを理解します。

f:id:kumak1:20190712192814j:plain

質問コーナー

エンジニアさんが「レコード」とか言ったりするのを聞くことがるのですが、「テーブル」と何が違うのでしょうかー?

なるほどなるほど。 初学者とエンジニアではそもそもの認識が違ってそうですね! イメージはこんな感じかな

f:id:kumak1:20190712192936p:plain

Excel や物理的に書いた表をイメージするので、テーブル = 行と列を組み合わせたデータが入ってるやつ という認識ですよね?(本日の講義でも実際にそのように説明した)

ところが、エンジニア同士が会話する場合は、もうちょっと機械に寄った会話をします。 その際テーブルは どんなデータを入られる構造か という概念を指すことが多く、レコードは テーブルに実際入れたデータ(1行) を指します。

エンジニア同士だと、日本語だけではなくプログラミング言語でもやり取りするので、双方で都合の良い意味合いで話すことが多いのです

第2回 「抽出行をしぼる」

物事を調査するにはまず「観察」をする必要があります。 自分が欲しい情報だけを見る力を手に入れましょう

前回重要項目の復習

f:id:kumak1:20190712193036p:plain

SQLってそもそもなんやねん

f:id:kumak1:20190712193109p:plain

第3回 「抽出行をいっぱいしぼる」

SQL がどういった性質をもったモノなのか、前回でわかりました。 思い通りに「質問する力」を養うために WHERE に続く言葉を知っていきましょう

f:id:kumak1:20190712193222p:plain


以降は随時(週一くらい)更新