SQLって何?を知る


1.目的

この4月から転職して上司から言われた言葉

「とりあえずSQL使えるようになってね」

・・・SQLって何?
ちょっと調べたけど、データベースってそもそも何?そこからデータを取ってくるって何?手元のエクセルを皆どっかに保存してるの?etc・・・・

本当の初心者というか何も知らない自分は全くわからず、1週間程度がっつりSQLの基礎を学習しました。

そこで、①「何も知らない人」向けに、SQLとは何かをまとめておく②実務で簡単なSQLを使い始めて、書けるのに時間を要した構文をまとめておくことが今回の記事の目的です。

2.SQLとは

エスキューエルと読む。

ざっくり言うと、"データベースに保管している"データを集計したり加工する"技術"のことを指します。

◆データって?

イメージは、csvやエクセルです。
但し、自分が好き勝手に作ったcsvやエクセルをSQLで操作できるわけではなく。「SQLとして操作できる形に整えた」データを用意する必要があります。

→いくつか種類がありますが、昨今はリレーショナルデータベースという、表形式のデータベースが主流のようです。

表形式というと少し難しく感じるかもしれないですが、こんなデータです。

◆データベースって?

データを保管する場所です。
様々なデータベースがサービスとして用意されていて、主なデータベースは下記です。
ここに企業や個人はアカウント作成や契約をして、データを安全に保管しているのです。

メインどころはOracle、MySQLとかがあるようです。
MySQLは無償なので、私はSQLの練習はMySQLでやっています。

※出典:https://db-engines.com/en/ranking

◆SQLを使うことのメリットって何?

データベースを使っていない企業がほとんどなくて、このデータベースに入っているデータを使って様々な開発や分析が行われるので、
メリットというよりは、SQLを使えないとそもそもできないことが多すぎるぞ!というイメージで問題ないのではと思います。

いわゆるデータサイエンティストや、エンジニアの方には必須のスキルといってもいいのではないのでしょうか。

3.SQLを使うにはどうしたらいい?

手元で勉強する分には、MySQLがちょうどいいのではと思います。
※もちろん、お好みのデータベースを利用してください。

この記事ではMySQLの画面をお見せします。

このように、左側の「mydb」の下にTablesがあり、たくさんデータが格納されていると思います。
これが、私がMySQL上に取り込んでいるデータたちです。
(手元のデータをMySQL上に取り込むイメージです)

この中から例えば「orders」というデータを一旦どんなデータだったか見てみよう、という場合は下記のキャプチャのようにコードを書いて実行すると、画面下部にデータが表示されます。
※お見せしているデータは、とあるudemyの講座のデモデータなので、もちろん架空のデータです。

4.自分が困ったSQL構文

ここからは、約1週間程SQLを学習した私が実務で使う際にすんなり書けず、Google検索にお世話になりながら書いたクエリを紹介していきます。

(1)前提データ

こんなデータベースがあるとします(テーブル名はplayerとします)。
左から、選手のID,名前,年齢,身長,体重,所属チーム,1回の試合のゴール数とします。

(2)チームごとの平均ゴール数合計を多い順に表示したい

select avg(goal) as number
from player
group by team
order by number desc

(3)チームごとの選手の人数を調べたい

同じ選手が何行も表示されているので、結局選手って何人いるのか調べたい場合。

select team, count(distict(id)) as uid
from player
group by team

5.結び

まだSQLを学習し始めたばかりなので4.自分が困ったSQL構文は知っている方からすると学びはないと思いますが、
特に前段のデータベースってなんなの?というあたりは、意外に説明されている記事が少なく、SQL文は書けたとしても結局自分が何をしているのかよくわからなかったので、初学者の方の理解の深化の一助になりますと幸いです。