この前SQLを勉強して、意外に知らなかったことを学んだのでその振り返り
現場では基本selectを使って、色々データを抽出するのだが、知らなかった(使わなかった)概念をここにまとめようと思います。
サブクエリ(副問い合わせ)
サブクエリ(副問い合わせ)とは。
SQLの中にSQLを書くこと。
クエリ実行(問い合わせ)を入れ子で書くと、副問い合わせになる。
※名前が、「お肉」の値段以上のデータ、を全取得するPGM
select *
from test_table
where price >= (
select price
from test_table
where name = "お肉"
)
1つ目のwhere文の()の中がサブクエリ(副問い合わせ)となる。
もしサブクエリ(副問い合わせ)を使わない場合は以下
select price
from test_table
where name = "お肉"
## ¥100と判明
select *
from test_table
where price >= 100
## ¥100以上を判定
having
havingは抽出条件を指定する命令。
基本はgroup byでグループ化した後に使用する。
nameが「お肉」のデータをグループ化し合計金額を算出。
合計金額が¥100以上のデータを抽出。
select sum(price) as 合計
from test_table
where name = "お肉"
group by price
having 合計 >= 100
グループ化し、合計を出すのはselect sum(*)で行い、
その後、where文の様に条件抽出をすることができる。
DB設計の手法
実際の入力値(実値)を想定してテーブルを設計する。
重要であると学んだことは、実際に入れる値を想像し理由づけを行うこと。
姓名のカラムを姓カラムと名カラムに分けた。
⇨なぜ分けたかの理由が必要
例) フォーム入力の際に名前を分けて入力する画面になっていたと仮定した時、データをそのまま入れ込むことが可能。
番号も0埋めするなら、なぜ0埋めするのかの理由づけが重要となってくる。
例)番号も00001なら、なぜ5桁必要になるのか理由づけが重要になります。
以上です。