データベース入門②
もうすぐGWに突入にします。。。
結婚式の余興動画も作り終えたのでまた書いていきたいと思います。
まああとせっかくGWでまとまった時間取れるのでサイトの速度改善やら新しい技術入れたり何やらをやりたいのでね。。
とりあえずデータベース入門はとっとと読み終えて他のことしたいなと思ったので急ピッチで進めてます笑。
さて、久しぶりのデータベース入門です。
前回から読み進めましたが、8章くらいまでは論理値の説明と正規化の必要性とどうやったら正しくDB設計できるのかという説明でした。ここに関して個人的には「知っている人多いし、軽く流し読みする程度でいいかな」という感想です。それくらいで理解できる内容だと思います。
ってことで8章〜9章くらいからの内容に触れていきます。その内容とは以下です。
select文の使い方
まずはSQLの基本ですね、select文です。こいつは何をするやつなのか・・データ取得できる唯一の存在です!
書き方はこんな感じ、説明するまでもないですね。
SELECT カラムのリスト
FROM テーブルのリスト
WHERE 検索条件
これにいろいろ条件を付け加えることができます。集計結果を出したいなら
SELECT count(カラムのリスト)
FROM テーブルのリスト
WHERE 検索条件
重複省いた集計結果なら
SELECT count(distinct カラムのリスト)
FROM テーブルのリスト
WHERE 検索条件
集計結果に制限をつけたい時は
SELECT department, COUNT(*)
FROM students
GROUP BY department
HAVING COUNT(*) <= 30
とcountで取得したものに<=30といったような制限をかけることで取得することができます。今回だと30以下という制限をかけました
ここで人数少ない順にしたいときはサブクエリ使っても良いのですが、せっかくなのでorder byを使ってみます
SELECT department, COUNT(*)
FROM students
GROUP BY department
HAVING COUNT(*) <= 30
ORDER BY COUNT(*) ASC
ちなみにこれ順番大事です笑。group byしてからhavingしてorder byしないとエラリますので気をつけましょ。上から順に読んでいくので今回だと「グループに分けて、それぞれを集計した結果を制限して最後、集計結果順に並べてみる」になります。イメージはつきやすいかなと思います。
サブクエリの説明もあったのですが、結局それはこれらの組み合わせでしかないので割愛しました!
今回はここまでとします。
軽〜い内容でした笑。
データベース入門もあとは
・インデックスの説明
・リファクタの仕方
・実際にアプリケーションを扱うとき
・トランザクションについて
この4つで本は終わりにしようかなと思います。
そのあとにrailsのときのjoinとinner_joinの違いの説明を軽くやってDB周りは一旦終えようかなと思います。(アンチパターンもやるかもですが)
GW前までには終わりそうですね、、よかった。
終わり。