6. プログラムとデータの分離
独自にデータを持つ場合 データベースで一元管理
Japan PostgreSQL User's Group 6
データベースによるデータ層の「抽象化」
My
Program
My Only Data
文字列 file配列
入力から
条件に合う
データを探す
計算して
(プログラム固有の処理)
画面を生成
My
Program
計算して
(プログラム固有の処理)
画面を生成
データベース
データベースに
問い合わせ
他の
プログラム
条件に合う
データを探して
返却
12. SQL:RDBを操作する共通言語
集合を扱うSQL
Japan PostgreSQL User's Group 12
利用者は欲しいもの(条件)を指定するだけ
SELECT first_name,last_name
FROM customer
WHERE last_name = ‘Kida’;
customer
Kida Kosuke Kida Kosuke
Kida Yusuke
customer
・結果が何件あってもモレなく返却
・結果が何件になるか予測して、
もっとも効率の良い方法で探索
13. RDBが得意な処理
集合に対して関数を使う 他の集合を条件にする
Japan PostgreSQL User's Group 13
RDBが得意な処理=SQLで書ける処理
SELECT last_name,avg(age)
FROM customer
WHERE last_name = ‘Kida’;
customer
SELECT last_name,club_name
FROM customer
JOIN club
ON club.id = customer.club_id
WHERE last_name = ‘Kida’
AND club_name = ‘データベース愛好会’
customer
14. (参考)ifやloopで表現する他の言語
Japan PostgreSQL User's Group 14
<全データの件数を取得>
loop <件数>
if last_name = Kida
<値を配列に代入>
end loop
Kida Kosuke
Kida Yusuke
customer
<全データの件数を取得>
loop <件数>
if last_name = Kida
<値を配列1に代入>
end loop
<club表からpostgres愛好会のidを取得>
<配列1の件数を取得>
loop <件数>
if club_id = 500
<値を配列2に代入>
end_loop
customer
全件チェック1
全件チェック2