katsuyukikun’s diary

とある天パーエンジニアのblog

データベース入門②

もうすぐ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前までには終わりそうですね、、よかった。

 

終わり。