こんにちは。Chimaです。
今回は、未経験からSQLの学習方法について私の体験・経験を紹介します。
未経験からデータサイエンティストを目指しているみなさん、以下に当てはまっていませんか?
- Pythonの勉強だけに躍起になっている
- 独学でのSQLの学習方法に行き詰まっている
もちろんデータ分析を行う際にPythonを使うシーンはたくさんあるので、Pythonが不要ということではありません。
しかし、実務ではデータがcsvファイルで簡単に読み込むことができるような状況ばかりではありません。
会社が持つ大きなデータをデータサーバーで保管し、適宜SQL文を使ってアウトプットしてくるというケースも多くあります。
そのため、転職の際の面接で「SQLの経験」について質問されるケースが多かったです。
とは言え、未経験者の場合は実務で使うレベルのSQL文を書く技術までを求められることは少なく、SQLの基本構文を理解しており、適切に使用できるかどうかを確認しているという印象でした。
ですから、SQLに関しては基本を抑えかつ自分でデータサーバーからデータを引っ張ってきて分析をしてみたり、趣味の範囲でできる部分を伸ばしていくのが良いと思います。
私は、2022年7月に未経験からデータサイエンティストに転職して働き始めました。
今回の記事を書いている2022年10月25日現在、転職して約5ヶ月となるわけですが、業務におけるSQLの重要さを身にしみて感じている最中であります。
転職前にSQLの勉強をしようと思ったのですが、勉強方法が今一つわからずTwitterで多くの方の意見を頂戴しました。
このツイートのリプライや引用RTの部分にも多くの方からのアドバイスがありますので是非参考にしてみてください。
今回は、「SQLについて、独学でこのような勉強をしておくべきだった」と自分が感じたことについて紹介します。
SQLをこれから勉強しようと思っている方、SQLに勉強方法に悩んでいるかたは、是非参考にしていただければ幸いです。
Pythonの学習も大切ですが、それと同等以上にSQLは大切です!!
なぜSQLはそんなに大切なのか?
まず始めに「なぜSQLはそんなに大切なのか?」という点について解説します。
大量のデータ
データにはいろいろな種類があることは皆さんご存知かと思います。
テキストデータ、画像データ、音データetc….
その中でも、特にテキストデータはどの企業にでも様々な分野の様々な形式で蓄積されています。
例えば、売上記録や機械の稼動ログ、Webサイトのアクセス記録、在庫管理記録などなど、様々ありますよね。
ある機械単体の稼動ログが数分に1回記録されているというような規模であれば、毎日csvファイルで吐き出してを1週間~1ヶ月分溜めておけば分析ができるでしょう。
しかし、例えば飲食チェーン店の材料在庫データや販売記録だったらどうでしょう。
1分間に全国何千店舗の売上が一気に記録されます。〇〇店△△店□□店…キリがないですね笑
そのようなデータをcsvファイルで吐き出して保存するには限度がありますし、毎回毎回csvデータを読み込んでから必要なデータを抽出すると時間も労力もひどいものになるでしょう。
そこで企業は、大量のデータを保存できるデータサーバーを立て、一括してデータをデータベースに蓄積しているのです。
そして、分析する人間は、データベースから分析するために必要な情報だけを抜き出して作業を行います。
このようにすれば、余計なデータを抽出する必要もないですし、ファイルがごちゃごちゃすることもありません。
また、新しく、必要なデータだけを抽出して作ったデータベースを作ることも可能です。
個人で分析するレベルから企業でデータの分析をするレベルになると一気に規模が変わるため、実務においてはSQLが重要になってくるというわけです。
SQLは他のプログラミング言語と違う?
SQLは他のプログラミング言語と少々異なる点があります。
プログラミングと違って、環境構築をして始めようとしてもデータがないと何もできません。まず何のデータを準備したら良いかというところで迷ってしまう。
また、SQLの基本的な学習をしても、その後、どのようにしてスキルアップしていけばよいのかが見えにくい。
そして、個人の学習で習得できるレベルにある程度限界があり、実務レベルのSQLを使うには実務で身につけるしかなくなってしまう点。
これらの点で、SQLは他のプログラミング言語と違って学習しにくいという障壁があります。
SQLはどのように学習すれば良い?
では、独学でのSQLはどのように勉強すればよいのでしょうか。
ここでは私の実際に行った(行っている)学習と教材・学習方法を紹介します。
順に解説します。
SQL入門本を一通り実施する
まずは、SQLの基礎知識、基本的な文法を学習する必要があります。
入門の本については、以下の2冊から好きな方or両方を使用すると良いと思います。
スッキリわかるSQL入門
こちらは超有名な入門書です。「SQLって何?」というレベルの方から文法を学びたいという方まで、この1冊があれば基本的な知識を抑えることができます。
この本の大きな特徴は2点あります。
- ブラウザ上で練習可能
- ドリルによる演習問題が豊富
SQLサーバーを立てて環境構築を行うというハードルがなく、いきなりデータベース操作について学習することができます。まずはじめに学習を開始するにはうってつけです。
また、練習問題が大量についています。難易度も簡単なものからちょっと考える必要がある問題まで、数種類の題材を使って演習できるので、非常に勉強になります。
私もこのドリルを数周やって基本的な文法を身に着けていきました。
SQL ゼロから始めるデータベース操作
こちらも入門書の定番でおすすめです。
前述のスッキリわかるSQLよりは硬い印象がありますが、こちらも非常に丁寧に解説をしてくれているのでとても理解しやすいです。
こちらの特徴も2点
- SQLサーバー(PostgreSQL)を立てるところから解説が載っている
- SQLとプログラミング、アプリケーションとの連携についても解説されている
個人的にはドリルでSQLを文をたくさん書いて覚えたいという方には「スッキリわかるSQL入門」、環境構築から実際の開発での連携なども学びたい方には「SQLゼロから始めるデータベース操作」が良いのではないかと思います。
両方使えるのであればそれがおすすめです。笑
100本ノックのような問題をすべて簡単にできるまで練習する
SQLはたくさん書いて覚えていくのが一番カンタンで手っ取り早いと思っています。
そして、たくさん書いていくうちに挙動やルールを体が覚えていき、どんどん複雑な文が書けるようになっていきます。
日本データサイエンティスト協会が無料で公開している「データサイエンス100本ノック」というものがあります。
こちらを使って、SQL文をたくさん書いていく練習をすることと良いと思います。
もともとはPythonのPandasの練習で使用できるようなデータとなっているのですが、このデータを使ってSQLでも同じ出力結果になるように練習するとSQLとPythonのPandasの違いや共通点が見えてくるのではないかと思います。
せっかく無料でできるので挑戦してみてはいかがでしょうか。
SQLコンテストに挑戦してみる
競技プログラミングやデータ分析コンペと同じようにSQLコンテストというものも存在します。
「TOPSIC SQL CONTEST」というサービスがあり、まだ新しいサービスですが月1回程度の頻度でコンテストが開催されています。
解けた問題数や誤答数、解答時間によってランキングも表示されるので、モチベーションの維持にも繋がります。
過去の問題を解いてみることもできるし、他の参加者の解答SQL文も参照できるので、かなり勉強になると思います。
先程の入門書や100本ノックの問題からはレベルがアップしますが、入門書と実務レベルの橋渡しになるレベルの問題も多くありますので、おすすめです。
実際にSQLサーバーを立てて操作してみる
こちらは少しハードルが高いですが、自分で分析してみたいデータがあったときにやってみるというくらいで良いかもしれません。
具体例はちょっと上げにくいのですが、私の場合は、趣味で行っている個人の機械学習開発で必要となるデータをPostgreSQLサーバーを立ててデータを流しこみ、Pandasで適宜データを抽出していました。
SQL系の資格を取得してみる
資格の取得も体系的に学習ができる方法です。
Oracle系試験
例えばベンダー試験では「Oracle Database SQL Silver」という試験があります。
数あるデータベースの種類の中のOracleの試験となるので、少々特殊ではあるのですが、基本的なSQL文は同じですし考え方も同じです。
SQLiteやMySQL、PostgreSQLは無料で使えるので個人でも使うのですが、Oracleは有償のDBであるため企業で使われることが多いです。
そのため、Oracle系の資格を持っているということで採用へのアピールになる事も考えられます。
Oracleの試験には、データベース管理も含めた資格の「Oracle Database DBA」とSQLに特化した「Oracle Database SQL」とがあります。
最初のうちは「Oracle Database SQL」で良いのかなと思いますが、必要に応じて取得を検討して見てはいかがでしょうか。
※現在私は、「Oracle Database SQL」の学習中です。笑
IPA試験「データベーススペシャリスト」
また、IPAが主催している「データベーススペシャリスト」という試験もあります。
こちらはデータベースの運用管理などの項目が中心になっていますので、SQLを勉強したいというニーズからは少し外れてきますが、将来的にデータベース管理などの業務が必要になった際に学習すると良いかもしれませんね。
私はこの資格は取得していませんが、将来的に必要になったときには検討しようと思っています。
まとめ
以上が未経験から独学でSQLを勉強する方法の紹介でした。
最後に今回の記事を簡単にまとめておきます。
また、先日この記事がITフリーランス向け案件紹介サイト「freelance hub」にて紹介されました。
他の方のSQLの勉強についてもまとめられていますので、ご興味があればぜひご覧ください。
最後までご覧いただきありがとうございました。
なにか質問があればChima(@chima_happy5)までご連絡頂けますと幸いです。
コメント