こんにちは!
本日はいつもお世話になっているサポーターズさんが行っている技育CAMPの勉強会に参加してきました。
今回の勉強会のテーマは【初心者向け】基礎から分析までのSQLです。
講師は日本で一番データベースに詳しいちゅらデータの菱沼さんです。(すごい)
自分自身SQLは全くの初心者というわけではありませんが復習という意味では大変ためになる勉強会だったと感じています。
今回はそのまとめをしようと思います。
長かったり、Qiitaの記述に慣れてなくレイアウトが崩れてお見苦しい場面もあると思いますがご了承していただけると幸いです。
目次
- SQLとは
- SQLの種類
- なぜSQLを使うのか
- テーブル、行、列
- 実際にデータを取り出してみよう
- 比較演算子について
- 菱沼さんのおすすめの書籍
- まとめ
SQLとは
データベースにおいて、データを操作するための言語
・呼び方:えすきゅーえる、しーくえる
歴史
・1974年にIBMの研究所で、SEQUEL(A Structured English Query Language)という名前で誕生したが、商標の関係でSEQUELが使えなかった
・そのためSQLになった。Structured Query Languageの略
・各DBごとに方言があったため、ANSIという団体による標準化が行われました
・SQL-86,89,92,1999,2003,2006,2008,2011,2016,2019
・プログラミング言語のカテゴリ
・集合指向言語、宣言型言語(手続き型言語)と言われている
pythonやほかのプログラム言語と違いfor文,while文を用いない。
SQLの種類
・DDL データベース内の表、ビューやインデックスなどの各種オブジェクトの作成や変更をするために用いられる。
・DML データベースにおいてデータの検索・新規登録・更新・削除を行うために用いられる。
・DCL 権限管理にかかわる。
なぜSQLを使う必要があるのか
でかいデータを扱いたいのに容量が足りない!
最新のMacM2でもメモリ32GB。
そんな時にSQLは大変役に立つ。
分散コンピューティング(BigQueryなら2000台で処理される)でデカいサイズのデータを扱う=1台のPCでは動かないもの。
分散処理を行うときのインターフェースとしてSQLが用いられる。そのためSQLは広く使われている。そのためSQLを学ぶと大きなデータを扱う職業に就きやすい。pythonでもデータ処理はできることはできる。しかしpythonで書くよりスパーク(分散コンピューティングエンジンの一種)でSQLに起こす方が効率がいい。1TBなど小規模なデータなら検討する価値がありそう。
テーブル、行、列
実際にデータを取り出してみよう
SELECT (抽出しなさい)
* (すべての列を)
FROM (下のテーブルから)
"customers" (customerテーブル)
; (コードの終了をあらわす)
一般的なRDB,MySQLやPostgreSQL呼ばれるデータベースがインデックススキャンや統計量などのテクニックを使って列を指定することで処理速度が向上する場合があるが近頃の開発状況をみるとasterとprimary keyのカウントは同じ速度で出せる。もしIDと指定しているがprimary keyに指定されていないカラムを叩いた場合には差が出ることになる。
例その2↓
SELECT (抽出しなさい)
"customer_name" (customer_nameと呼ばれるデータだけを)
FROM (下のテーブルから)
"customers" (customerテーブル)
; (コードの終了をあらわす)
例その3
SELECT (抽出しなさい)
"customer_name" AS "名前"(変数の名前変更のようなもの)
FROM (下のテーブルから)
"customers" (customerテーブル)
WHERE (条件付け)
"customer_age">=20 (この条件のみ)
; (コードの終了をあらわす)
比較演算子について
もともと「<>」は「>=<」だった。
※SQL標準の演算子を使わないと移植性が下がってしまう。
一回使ったものをずっと使う特性がある。
SQLでデータ分析してみよう
第一問
年ごとの注文数はいくつですか?
DATE_PART 式から日付部分の値を抽出する
GROUP BY 要素をグループ化する
ORDER BY SELECT文において特定の列の値に応じて行の並べ替えを行う
補足:大文字でも小文字で入力されてもどちらでもよい
第二問
補足:ダブルクォーテーションは識別子を扱う。シングルクォーテーションは値を扱う。
SELECT文をWITHで囲む書き方が変化した。
まずはSQLと会話できるようにする。
菱沼さんのおすすめの書籍
webエンジニア志望は「ポスグレで学ぶ~」などwebアプリと一緒に学べる本がおすすめ!
データエンジニアとして成長したい人におすすめの書籍
まとめ
スクリーンショットは本人様に許可をもらっているので大丈夫(なはず)
これからもSQLを学習して実務レベルまでもっていきたいと思います!