非エンジニアがSQLを学習する際の11の心得

皆さん、はじめまして。
エウレカで分析を担当しているミニオンこと鈴木です。
あだ名の由来は、顔がミニオンに似ているからだそうです。
ちなみに映画のミニオンズは一度も見たことがありません。

 

この記事は、eureka Engineering Advent Calendar 2017 18日目の記事です。
前日、17日目の記事は同じ分析チームのスマート&ラブリーガイ、ミッキーこと小林くんの確率的プログラミングPyro入門でした!

 

みなさん、もうすぐ冬休みですね!何をしようかワクワクしている頃ではないでしょうか?
なかには「来年こそはSQLを使ってゴリゴリ仕事をしたいから冬休みに勉強したい!」
なんて方もいらっしゃるのではないでしょうか!?

 

突然ですが、少しだけ僕のSQLキャリアの話をさせて頂きます。
もともと僕はエウレカに2年前、ディレクターとしてジョインしました。
入社後からSQLの勉強を始め、半年後にエンジニアに転向し現在は分析チームで日々SQLを叩いております。

 

そんな非エンジニアからSQLを学んでいった経験をもとに、
今日は、これからSQLを勉強し日々の分析業務に活かしていきたいと考えているSQLビギナーの方向けに、入門者編と分析準備編の2つにわけて「これからSQLを勉強する人向けの学習心得」を11個ご紹介させていただきます。

 

これから学習する人の参考になれば幸いです。

 

なお、本記事ではデータベースはMySQLを前提に書いています。

 

入門編

心得1: SQLは見た目ほど難しくない

さて、下に書いてあるのは実際のSQL文です。

 

1
2
3
4
5
6
7
8
9
10
11
SELECT
  pt.id
, pt.name
, pt.price
, i.quantity
FROM product_table AS pt
JOIN inventory AS i ON pt.id = i.product_id
WHERE pt.price >= 2000
  AND i.quantity >= 150
ORDER BY i.quantity DESC
;

 

これを見て何を感じましたか?
「英語苦手、、、難しそう、、」と思った方も多いのではないでしょうか?
(少なくとも僕は最初そう思いました)
安心してください、勘違いです!
SQLの基本的な構造は非常にシンプルで英語がわからなくても大丈夫です。

 

まずは、「SQL = 難しい」という勘違いを捨てることから始めましょう。

 

心得2: 勉強のために小難しい本を買っちゃダメ

SQL学習以外にも言えることですが、
基礎ができていない段階で小難しい本を買っても続かないか、理解に時間がかかってしまうものです。
まずは簡単過ぎると感じるくらいの本を書店で見つけ出して購入することをオススメします。
(もちろんネットで学習する場合も)

 

ちなみに僕は、「SQLの絵本」という本を最初に読みました。
挿絵が多くて文字も少なめですので、凡人の僕には丁度良かったです。

 

心得3: SELECT文以外を無視する勇気

学習を進めているとUPDATE/INSERT/DELETE文など、データに変更を加える構文の章にいきあたります。
まず、初心者が業務でテーブルやデータに変更を加えるSQLを実行する機会はないので(というかやっちゃだめ)、とにかく今は勉強しなくてもいいと割り切ってデータを抽出するSELECT文の学習に専念しましょう。

 

もちろん、知っていても損はないので、
興味がある人は、学習を進め自分のローカル環境でガシガシ実行してみてください。

 

心得4: 座学よりも実際にSQLを書くことが大切

学習を進めるとSQLの基本構造が非常にシンプルなことに気がつくと思います。

 

1
2
3
4
SELECT カラム名
FROM テーブル名
WHERE 条件
;

 

これを見て理解できるレベルになったら早々と手を動かす学習に移行しましょう。
SQLへの理解はとにかく手を動かして、書いたものがどういった結果を返すか実際に経験を積むことで深まっていきます。

 

心得5: 実行環境を用意するのは心が折れやすいもの

学習者がつまづきやすいのがSQLの実行環境を用意するステップだと思います。
「学習を進め基礎は理解したつもり!でもどこで試し打ちできるんだー!」となってしまいますよね。

 

実際の僕の体験談として、MySQLをパソコンにインストールしてデータを用意するまでの心理的ハードルが高かったです。

もし、難しいと感じるようであればオンラインでSQLを実行できるサービスもあるので活用してみるのも良いかもしれません。
例えば、SQL攻略 – 実行すれば理解できる!というWebサイトでは練習問題と実行環境が用意されているので学習の手助けになりそうです。

 

周りにSQLに詳しい人がいれば、つかまえて環境を構築してもらうという手もあります。
(ご飯を奢ればやってくれるはず、少なくとも僕はやる笑)

 

もし会社に既に生きたデータベースがあるのであれば、使わせてもらうのも手です。
会社に許可をもらい注意点をヒアリングして使わせてもらえるよう交渉してみましょう。

 

参考書を利用している人は、購入者向けの実行環境が用意されている場合もあるので確認してみてください。
もちろん、参考書では実行環境を整えるまでの流れを記載しているケースが多いです。

 

心得6: エラー文はあなたの味方!

いざSQLを実行したらエラーが返ってきた!何故だ!
なんてことがあると思います。(実際、毎日SQLを叩いている自分でもしょっちゅうです)

 

そんなときは、しっかりとエラー文を読みましょう。エラー箇所がどこか書いてる場合がほとんどです。
英語だからわかない!という方はエラー文をコピペしてグーグル先生で検索しましょう、皆同じエラーを経験しています笑。

 

分析準備編

SQLの基礎を理解したら、実際に分析を行うことを前提に学習を進めましょう!

 

心得7: 関数を色々いじってみるべし

SQLの基礎を理解したらSQLの関数を実際に色々試していきましょう。
SQLではExcelでおなじみのSUM()やCOUNT()といった定番のものから、Excelにはない便利な関数が沢山用意されています。
実際に色々な関数を使用して、どういった結果が返ってくるのか試してみることが上達への近道です。

 

MySQLのリファレンスを参照すると、MySQLで使用できる関数とその実行例が紹介されているので、説明を読みながら使いそうなものは一通り実際に実行してみましょう。

 

MySQL 5.6 リファレンスマニュアル / 関数と演算子

 

心得8: NULLに惑わされるな

テーブルの中に格納されている値にはNULLという何も示さないことを意味する値があります。
SQL入門者には数字の0や空文字と同義で捉えられがちですが、
関数や条件文で扱う際にまったく違った挙動をするので、
NULLの扱いを理解することが誤ったデータを抽出しないために大切です。

 

NULLについてはまとめているブログ等が沢山あるので参考にしてみてください。
(もちろん参考書の中でも取り上げられているはずなので探してみてください)

 

心得9: JOINを制するものがSQLを制する

JOINの正しい理解なしに、正しいSQLは書けないというくらいJOINの理解は大切です。
JOINを使いこなせないと欲しいデータが抽出できないだけではなく、
結合を間違った結果、誤ったデータが抽出されたなんてことも起こりえます。

 

テーブルをJOINした結果、データがどういった構成になるのか実際にデータを見ながら理解していきましょう。
実際に分析を行う際、ひとつのテーブルだけで完結するケースはそこまで多くないのでしっかりJOINを理解して分析に臨みましょう。

 

JOINについてもまとめているブログ等が多いので是非参考にしてみてください。

 

心得10: レビューが劇的にあなたを成長させる

もし、周りにSQLに詳しい人がいれば自分が書いたSQLのレビューをお願いしてみましょう。
間違いを指摘してくれたり、Tipsをもらえたり、意外な発見や学びがあります。
SQLは構造がシンプルで書き方の自由度が高いため、考え方・書き方が書き手によって様々です。
他の人が書いたSQLをレビューするのも学習には効果的です。

 

心得11: テーブルの構造を理解すべし

テーブルにどういったデータが用意されているのか理解しないと分析で使うような複雑なSQLは書けません。
また、理解が乏しいと間違ったデータを抽出してしまうこともあるのでしっかりテーブルの構造は理解しましょう。
会社であればテーブルを作成した人や普段から使っている人に指南をお願いしましょう。

 

また、下記SQLを実行するとどうったカラムがあるのか確認できるので参照しながら書くと理解が早まると思います。

1
SHOW FULL COLUMNS FROM テーブル名;

 

もちろん実際にデータを取り出して確認する方法もあります。

1
SELECT * FROM テーブル名 LIMIT 100; -- 全ての列データを100行分抽出する

ただし、上記方法はデータベースに負荷がかかる場合もあるので、詳しい人に確認してから実行しましょう。

 

最後に

以上、これからSQLを勉強する人向けに学習心得を11個紹介しました。

 

年々、SQLを使いこなせるマーケターやディレクターの需要は高まっているように感じます。
こういったデータを実際に扱う非エンジニアの人間がデータの抽出から分析まで一貫して行えることで、より迅速な事業判断に貢献できると僕自身、信じております。
(もちろん、SQLを書かなくても分析を行える基盤の構築も大切ですが)

 

この記事が、こうした非エンジニアがSQLを学習するきっかけになれば最高です。

 

SQLの学習が一通り終わったら、ぜひ以下の記事も参考にしてみてください。
SQL中級者になるためのTipsがたくさん紹介されています。

 

SQLで分析を始めた人に贈る、中級者に上がるための10のTips – 前編 –
SQLで分析を始めた人に贈る、中級者に上がるための10のTips – 後編 –

 

明日、19日目は最近ジェダイのような格好で社内をうろついているタコチューこと高橋さんがGoでgraphQLを使った話を書く予定です!


エウレカでは、一緒に働いていただける方を絶賛募集中です。募集中の職種はこちらからご確認ください!皆様のエントリーをお待ちしております!

Recommend

Go+App Engine+Cloud SQLで始めるGo言語Webアプリケーション開発

ClojureScript & Golangでチャットアプリを作ってみた