先月までは大寒波到来などというニュースが流れていたりしておりましたが、
最近は段々暖かくなり、過ごしやすくなりましたね!
さて、前回に引き続き今回もデータベース対話言語、SQLについてお話しさせて頂きたいと思います。
今回は主に様々なデータ取得方法についてお話ししていきます。
データのグループ化 (GROUP BY)
データによって、グループごとに集計(グループ化)を行いたい場合にはGROUP BY句を使用します。
name列でグループ化し、quantityの合計を表示させてみたものがこちらになります。
実行結果をみていただくとわかりますが、「りんご」と「みかん」は2つあったデータがまとまって合計値が表示されているかと思います。
データの並び替え (ORDER BY)
データの並び替えがしたい場合にはORDER BY句を使用します。
quantity列の昇順に並び替えてみたものがこちらになります。
デフォルトが昇順のため、降順にしたい場合はORDER BY 列名 DESC
とすればOKです。
ここまでデータ取得でいくつか方法をご説明させて頂きましたが、各句の順番も決まっておりますので、ここで整理したいと思います。
それぞれの句の記述順はこのようになっております。しっかり覚えておきましょう!
複数テーブルからデータ取得
基本的なデータの取得に関することについて説明してきましたので、複数テーブルからの取得についても説明していきたいと思います。
※今回はカートフルーツのテーブルを用意しました。それぞれのテーブルの内容はこのようになっております。
両方のデータを取得するから、FROM句に各テーブルを指定して…というように行なってみたのが下の図になります。
あれ?なんだか結果がすごく多い…と感じるのではないでしょうか?
これは直積やクロス結合と呼ばれ、先に書かれたカートテーブルを元にフルーツテーブルの全てを取得してしまうため、「カートテーブル1データ×フルーツテーブルの全部のデータ」という結果になってしまいます。
各テーブル1データずつにしたい場合は、UNIONを使用してこのようにします。
cartテーブルを見て既にお気付きかもしれませんが、fruit_idという列があるかと思います。
これは、このcartデータにはどのfruitデータが紐づいているということを指定した列になります。実際に紐づいたデータを取得したのがこちらです。
もう少しカートテーブルっぽく、Aさんのカートのみを取得して見たのがこちらになります。
最後に
GROUP BY句やORDER BY句、複数テーブルのデータ取得など少し理解頂けましたでしょうか?
次回その3では、1・2の内容をもう少し掘り下げていきたいと思います!