皆さん初めまして。合同会社StudioData代表のRyumaと申します。
今回はデータサイエンティストである私が実際の業務でたくさん触れるSQLについて解説していきます。
データベース(DB)とは?
SQLが何かを解説する前に、「データベース(DB)」とはどのようなものなのかを解説します。
データベースとは、集められた情報が表のようにまとまっている下記画像のようなものです。
画像の例だと、列ごとに見ると名前や身長などの情報がわかり、行ごとで見るとそのデータ1つごとの特徴が見れます。
(以下列のことをカラム、行のことをレコードと呼びます。)
ここに「身長159cm, スコア75点のCarlyさん(女性)」がデータとして追加されると、下のようになります。
id7としてレコードが追加されました!
このような感じでデータがたくさん集まっている表がデータベース(DB)です。
DBにもいくつか種類があり、有名なものだとOracle、MySQL、PostgreSQL、SQLiteなどがあります。
SQLとは?
ではSQLとは何なのかというと、データベースを操作するための言語です。
言語というと「プログラミング言語」を想起されると思いますが正確にはSQLは「データベース言語」といい、別のものです。
(ここは正直ふうん、という感じで流していただいて大丈夫です)
データベースのなかには、数百万件ものデータが保存されているケースが多く、それらの中から指定した条件を満たすデータだけを取得する際などにSQLを使用します。
SQLではデータベースに対し、検索/データの追加・削除/更新など様々な操作を行えますが、データアナリストが行うのは主に検索です。
そのため以降の文章では、検索の意図で使われるSQLを前提として解説させていただきます。
実際にSQL(クエリ)を書いてみよう
データベースからデータを抽出したり操作したりといった処理を行うための命令文のことをクエリと呼びます。
クエリの書き方にはいくつか種類があり、接続しようとするDBの種類によって若干異なります。
そのため下記ではMySQLからデータを取得する際の文法と使って解説させていただきます。
上記の画像のテーブルの名前を「students」として試しにクエリを書いてみます。
SELECT id,name
FROM students
WHERE tall > 170
AND Gender = 'Male'
上記のような書き方です。どのようなことを意味しているのかを順に解説していきます。
クエリの実行順番
上記のクエリでは「FROM」→「WHERE/AND」→「SELECT」の順番に実行されます。
最初は4,5行目の「FROM students」という箇所が認識されるため、「studentsというテーブルをまず見てね」という命令文を書きます。
ついで6,7行目の「WHER tall > 170」という箇所が実行され、「studentsテーブルにいるデータのうちtallが170より大きいもの」という条件が追加されます。
そして8,9行目の「AND Gender = 'Male'」で条件が追加され、「studentsテーブルにいるデータのうちtallが170より大きく、Genderが"Male"のもの」となります。
最後に1~3行目の「SELECT id,name」が実行され、「studentsテーブルにいるデータのうちtallが170より大きく、Genderが"Male"なレコードのidとnameカラムを取得」という命令文が完成します。
その結果取得されるのは以下のようなデータです。
ちゃんと身長が170より大きく、性別が男性な3人のidとnameが取得されました。このような形でデータを取得することができるのです。
SQLの解説まとめ
今回は基礎的なクエリを例として用いながら「SQLとは?」「DBとは?」といったことを解説させていただきました。
今後はもっと複雑なクエリについて解説していく予定ですのでSQLを勉強されたいという方はぜひ参考にしてみてください!
この記事が何かの参考になればこの上ない幸せです。最後まで読んでいただきありがとうございました!