SlideShare a Scribd company logo
データベースシステム論
2016年度 後期 水曜 1・2時限 情24教室
担当:横山昌平
データベースシステム論 第 回2016 [ 4 ] 1p.
講義計画
• 関係データベースの歴史と基本概念
• SQLの基礎と応用(演習を含めつつ)
• データベースの設計と構成
• SQL問い合わせ処理とそれを支える技術
• 関係データモデル以外のデータベース
データベースシステム論 第 回2016 [ 4 ] 2p.
※現時点での予定です。進捗に応じて変更します。
27Apr.
20Apr.
13Apr.
25May
18May
11May
1June
8June
29June
22June
20July
13July
6July
27July
データベースシステム論
第4回 関係代数(後半-結合演算・集約演算)
+SQL基礎
データベースシステム論 第 回2016 [ 4 ] 3p.
先週やった関係演算のまとめ
• 選択 σ条件式(R)
• 射影 π属性リスト(R)
• 集合和 R∪S
• 集合差 R-S
• 集合積 R∩S
• 直積 R×S
• 商 R÷S
• リネーム ρ(label←名前)R
データベースシステム論 第 回2016 [ 4 ] 4p.
結合律と可換律
集合和、集合積、直積は以下の結合律と
可換律を満たす演算である。
• 結合律:A●(B●C)=(A●B)●C
• 可換律:A●B=B ●A
※●は演算子(∪,∩, ×)
結合演算
• クロス結合(cross join) = 直積
• Θ結合, 等結合(Θ-join, equijoin)
• 自然結合(natural join)
• 準結合(半結合,semijoin)
• アンチ結合(antijoin)
• 外部結合
• 左外部結合, 右外部結合, 完全外部結合
• (left outer join, right outer join, full outer join)
• 加えて結合条件として等価・不等化をとりうる
データベースシステム論 第 回2016 [ 4 ] 5p.
二つのテーブルを横方向にガチャンとくっつける演算
↑外部結合に対して内部結合と呼ばれる
Θ結合, 等結合
• リレーションRとSの属性rとsを演算子Θにて評
価して結合する演算子
• R ⨝rΘsS
• Θは[<,≤,=, ≥,>]のどれか
• Θが「=」の場合等結合、それ以外は不等結合
データベースシステム論 第 回2016 [ 4 ] 6p.
等結合 - 例
• 両リレーションを産地IDで等結合
• wine ⨝産地ID=産地ID vineyard
• SELECT * FROM
wine INNER JOIN vineyard
ON wine.産地ID = vineyard.産地ID;
データベースシステム論 第 回2016 [ 4 ] 7p.
ワインID 名前 産地ID 価格
1 シャブリ A 2400
2 ジュヴレシャンベルタン A 3000
3 サンテミリオン B 5800
4 オーメドック B 2200
5 サンセール C 2800
6 シャンパン D 4000
7 十勝 F 2000
産地ID 産地
A ブルゴーニュ
B ボルドー
C ロワール
D シャンパーニュ
E チリ
wine vineyard
等結合 - 例
データベースシステム論 第 回2016 [ 4 ] 8p.
ワインID 名前 産地ID 価格
1 シャブリ A 2400
2 ジュヴレシャンベルタン A 3000
3 サンテミリオン B 5800
4 オーメドック B 2200
5 サンセール C 2800
6 シャンパン D 4000
7 十勝 F 2000
産地ID 産地
A ブルゴーニュ
B ボルドー
C ロワール
D シャンパーニュ
E チリ
wine vineyard
ワインID 名前 産地ID 価格 産地
1 シャブリ A 2400 ブルゴーニュ
2 ジュヴレシャンベルタン A 3000 ブルゴーニュ
3 サンテミリオン B 5800 ボルドー
4 オーメドック B 2200 ボルドー
5 サンセール C 2800 ロワール
6 シャンパン D 4000 シャンパーニュ
• 両リレーションを産地IDで等結合
不等結合 - 例
• 各ユーザが買えるワインのリストを表示
• ワイン⨝価格≤金額 財布
• SELECT * FROM
wine INNER JOIN vineyard ON 価格 <= 金額;
データベースシステム論 第 回2016 [ 4 ] 9p.
ワインID 名前 産地ID 価格
1 シャブリ A 2400
2 ジュヴレシャンベルタン A 3000
3 サンテミリオン B 5800
4 オーメドック B 2200
5 サンセール C 2800
6 シャンパン D 4000
7 十勝 F 2000
ユーザID 金額
山田 2300
横山 3000
ワイン 財布
不等結合 - 例
• 各ユーザが買えるワインのリストを表示
データベースシステム論 第 回2016 [ 4 ] 10p.
ワインID 名前 産地ID 価格
1 シャブリ A 2400
2 ジュヴレシャンベルタン A 3000
3 サンテミリオン B 5800
4 オーメドック B 2200
5 サンセール C 2800
6 シャンパン D 4000
7 十勝 F 2000
ユーザID 金額
山田 2300
横山 3000
ワイン 財布
ワインID 名前 産地ID 価格 ユーザID 金額
1 シャブリ A 2400 横山 3000
2 ジュヴレシャンベルタン A 3000 横山 3000
4 オーメドック B 2200 山田 2300
4 オーメドック B 2200 横山 3000
5 サンセール C 2800 横山 3000
7 十勝 F 2000 横山 2000
7 十勝 F 2000 山田 2000
自然結合
• 自然結合とはリレーションRとSに対して等結
合した結果から重複を除去したものである。
• R ⨝S
• R NATURAL JOIN S
• 等結合結果に行の重複が無い場合は自然結合で
あるといえる。
データベースシステム論 第 回2016 [ 4 ] 11p.
ワインID 名前 産地ID 価格 産地
1 シャブリ A 2400 ブルゴーニュ
2 ジュヴレシャンベルタン A 3000 ブルゴーニュ
3 サンテミリオン B 5800 ボルドー
4 オーメドック B 2200 ボルドー
5 サンセール C 2800 ロワール
6 シャンパン D 4000 シャンパーニュ
準結合
• 準結合とはリレーションRとSの自然結合結果
から、Sにのみ存在する属性を射影演算にて除
去する演算である。
• R⋉S
• SQLは結合と射影の組み合わせで表現する
データベースシステム論 第 回2016 [ 4 ] 12p.
ワインID 名前 産地ID 価格 産地
1 シャブリ A 2400 ブルゴーニュ
2 ジュヴレシャンベルタン A 3000 ブルゴーニュ
3 サンテミリオン B 5800 ボルドー
4 オーメドック B 2200 ボルドー
5 サンセール C 2800 ロワール
6 シャンパン D 4000 シャンパーニュ
ワインID 名前 産地ID 価格 産地ID 産地⋉
アンチ結合
• アンチ結合はリレーションRからSに存在する
行を除去したものである。
• R ▷ S
• NOT EXISTS句, NOT IN句等で実現
• 「R」と「RとSを準結合した結果」の集合差に
等しい。
• (R-(R⋉S))
データベースシステム論 第 回2016 [ 4 ] 13p.
ワインID 名前 産地ID 価格
7 十勝 F 2000
外部結合
• 左外部結合 R⟕条件式S
• 右外部結合 R⟖条件式S
• 完全外部結合 R⟗条件式S
• 条件により対応付けられた行のみを対象とする
これまでの結合に対して、対応付けられない行
も含めて返す結合演算。存在しない属性値は
NULLという値で表現される。
• 行数は両リレーションの内部結合で得られる行
数に加えて、条件が対応しない行(右,左,or両方)
を足したものになる。
データベースシステム論 第 回2016 [ 4 ] 14p.
左外部結合 - 例
• wineとvineyardを産地IDで(等価)左外部結合
• wine⟕産地ID=産地IDvineyard
• SELECT * FROM
wine LEFT OUTER JOIN vineyard
ON wine.産地ID = vineyard.産地ID;
データベースシステム論 第 回2016 [ 4 ] 15p.
ワインID 名前 産地ID 価格
1 シャブリ A 2400
2 ジュヴレシャンベルタン A 3000
3 サンテミリオン B 5800
4 オーメドック B 2200
5 サンセール C 2800
6 シャンパン D 4000
7 十勝 F 2000
産地ID 産地
A ブルゴーニュ
B ボルドー
C ロワール
D シャンパーニュ
E チリ
wine vineyard
左外部結合 - 例
• wineとvineyardを産地IDで外部結合
• wine⟕産地ID=産地IDvineyard
• SELECT * FROM
wine INNER JOIN vineyard
ON wine.産地ID = vineyard.産地ID;
データベースシステム論 第 回2016 [ 4 ] 16p.
ワインID 名前 産地ID 価格
1 シャブリ A 2400
2 ジュヴレシャンベルタン A 3000
3 サンテミリオン B 5800
4 オーメドック B 2200
5 サンセール C 2800
6 シャンパン D 4000
7 十勝 F 2000
産地ID 産地
A ブルゴーニュ
B ボルドー
C ロワール
D シャンパーニュ
E チリ
wine vineyard
ワインID 名前 産地ID 価格 産地ID 産地
1 シャブリ A 2400 A ブルゴーニュ
2 ジュヴレシャンベルタン A 3000 A ブルゴーニュ
3 サンテミリオン B 5800 B ボルドー
4 オーメドック B 2200 B ボルドー
5 サンセール C 2800 C ロワール
6 シャンパン D 4000 D シャンパーニュ
7 十勝 F 2000 NULL NULL
右外部結合 - 例
• wineとvineyardを産地IDで(等価)右外部結合
• wine ⟖産地ID=産地IDvineyard
• SELECT * FROM
wine RIGHT OUTER JOIN vineyard
ON wine.産地ID = vineyard.産地ID;
データベースシステム論 第 回2016 [ 4 ] 17p.
ワインID 名前 産地ID 価格
1 シャブリ A 2400
2 ジュヴレシャンベルタン A 3000
3 サンテミリオン B 5800
4 オーメドック B 2200
5 サンセール C 2800
6 シャンパン D 4000
7 十勝 F 2000
産地ID 産地
A ブルゴーニュ
B ボルドー
C ロワール
D シャンパーニュ
E チリ
wine vineyard
右外部結合 - 例
• wineとvineyardを産地IDで(等価)右外部結合
• wine⟕産地ID=産地IDvineyard
• SELECT * FROM
wine INNER JOIN vineyard
ON wine.産地ID = vineyard.産地ID;
データベースシステム論 第 回2016 [ 4 ] 18p.
ワインID 名前 産地ID 価格
1 シャブリ A 2400
2 ジュヴレシャンベルタン A 3000
3 サンテミリオン B 5800
4 オーメドック B 2200
5 サンセール C 2800
6 シャンパン D 4000
7 十勝 F 2000
産地ID 産地
A ブルゴーニュ
B ボルドー
C ロワール
D シャンパーニュ
E チリ
wine vineyard
ワインID 名前 産地ID 価格 産地ID 産地
1 シャブリ A 2400 A ブルゴーニュ
2 ジュヴレシャンベルタン A 3000 A ブルゴーニュ
3 サンテミリオン B 5800 B ボルドー
4 オーメドック B 2200 B ボルドー
5 サンセール C 2800 C ロワール
6 シャンパン D 4000 D シャンパーニュ
NULL NULL NULL NULL E チリ
完全外部結合 - 例
• wineとvineyardを産地IDで(等価)右外部結合
• wine ⟗産地ID=産地IDvineyard
• SELECT * FROM
wine FULL OUTER JOIN vineyard
ON wine.産地ID = vineyard.産地ID;
データベースシステム論 第 回2016 [ 4 ] 19p.
ワインID 名前 産地ID 価格
1 シャブリ A 2400
2 ジュヴレシャンベルタン A 3000
3 サンテミリオン B 5800
4 オーメドック B 2200
5 サンセール C 2800
6 シャンパン D 4000
7 十勝 F 2000
産地ID 産地
A ブルゴーニュ
B ボルドー
C ロワール
D シャンパーニュ
E チリ
wine vineyard
完全外部結合 - 例
• wineとvineyardを産地IDで外部結合
• wine⟕産地ID=産地IDvineyard
• SELECT * FROM
wine INNER JOIN vineyard
ON wine.産地ID = vineyard.産地ID;
データベースシステム論 第 回2016 [ 4 ] 20p.
ワインID 名前 産地ID 価格
1 シャブリ A 2400
2 ジュヴレシャンベルタン A 3000
3 サンテミリオン B 5800
4 オーメドック B 2200
5 サンセール C 2800
6 シャンパン D 4000
7 十勝 F 2000
産地ID 産地
A ブルゴーニュ
B ボルドー
C ロワール
D シャンパーニュ
E チリ
wine vineyard
ワインID 名前 産地ID 価格 産地ID 産地
1 シャブリ A 2400 A ブルゴーニュ
2 ジュヴレシャンベルタン A 3000 A ブルゴーニュ
3 サンテミリオン B 5800 B ボルドー
4 オーメドック B 2200 B ボルドー
5 サンセール C 2800 C ロワール
6 シャンパン D 4000 D シャンパーニュ
NULL NULL NULL NULL E チリ
7 十勝 F 2000 NULL NULL
自己結合
• 同じリレーション同士を結合する事
• 推薦ワインの名前を出すには自己結合をする。
• (ρAwine) ⨝推薦ワインID=ワインID (ρBwine)
• SELECT * FROM
wine as A INNER JOIN wine as B
ON A.推薦ワインID = B.ワインID;
データベースシステム論 第 回2016 [ 4 ] 21p.
ワインID 名前 推薦ワインID
1 シャブリ 5
2 ジュヴレシャンベルタン 3
3 サンテミリオン 2
4 オーメドック 3
5 サンセール 1
6 シャンパン NULL
あるワインを好きな人に推
薦できるワインを「推薦ワ
インID」として付記したリ
レ ー シ ョ ン を 考 え て み ま
しょう。
wine
別名にリネーム
した後で結合
集約演算
• 集約演算は指定された属性の値に対して集約関
数(COUNT, SUM, MIN, MAX, AVG等)を適用し,
属性値と関数値からなるタプルを結果とする。
以下のような式で記述する。
• グルーピング属性 ΑF
関数リスト(R)
• γL (R)
• これまでに説明した演算はタプル間は独立で
あったが、集約関数はタプルを跨いで値の処理
を行う。例えば価格カラムの全てのタプルを跨
いだ平均値を算出する等も目的で利用される。
データベースシステム論 第 回2016 [ 4 ] 22p.
ガンマ
集約演算 - 例
• ワイン価格の平均値が知りたい
• γAVG(価格) (wine)
• SELECT AVG(価格) FROM wine;
データベースシステム論 第 回2016 [ 4 ] 23p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
AVG
3366.666666
…
グルーピング
• 集約演算と同時に使われる事が殆どである。
• 集約演算のみを適用した場合、リレーション全
体の集約を行うが、属性値毎に集約したい場合
はグルーピング属性を指定する。
• γL (R)
• ここでLの取りうる値
• 集約関数(属性名) 例:AVG(価格), MIN(ビンテージ)
• 属性名 例:色
• 例:γ色, MIN(ビンテージ) (wine)
データベースシステム論 第 回2016 [ 4 ] 24p.
色でグルーピングされる。
ビンテージは集約され最小値が得られる
集約演算 - 例2
• 各色のワインの一番古いビンテージは?
• γ色, MIN(ビンテージ) (wine)
• SELECT 色,MIN(ビンテージ) FROM wine GROP BY 色;
データベースシステム論 第 回2016 [ 4 ] 25p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
色 MIN
赤 1997
白 1999
集約関数
色カラムの値が全種類現れる=色毎にグループ(タプル)を形成
ビンテージの値の最小値が現れる
グルーピング
集約関数
• 基本的な関数
• Avg(属性) 平均値
• Count(*) 行数
• max(属性) ,min(属性) 最大最小値
• sum(属性) 合計
• 統計処理用
• corr(属性1, 属性2) 相関係数
• stddev_samp(属性) 標本標準偏差 etc…
• 文字列用
• string_agg(属性) 文字列連結 etc…
データベースシステム論 第 回2016 [ 4 ] 26p.
これ以外にも沢山あります。
DBMSによっては名前が違う場合もあります。
ここではPostgreSQLの例を示しています
整列演算
• 整列演算とはリレーションRについて,それに
属する属性rに基づいて整列(sort)する演算。一
般系は以下のように表される。
• τr(R)
• 複数の属性を指定する事もできる。
• τr1,r2,r3(R)
• この演算子が唯一、演算結果がセットでも
バッグでもなくリストとなる。
データベースシステム論 第 回2016 [ 4 ] 27p.
※SQLと具体例は後で・・・
タウ
セット・バッグ・リスト
• とりあえず以下の三点をおさえましょう
• 関係代数はセット(集合)を扱う理論体系として生ま
れました。
• しかしながら現実のRDBとSQLはバッグを扱う事に
最適化しています。
• そして整列演算のみがバッグをリストに変換する。
データベースシステム論 第 回2016 [ 4 ] 28p.
な に が 違 う ?
考えてみよう!
セット・バッグ・リストの違い
• セット:値の重複を許さない
• {1,3,4,5}
• バッグ:値の重複が許される
• {1,1,3,3,4,4,5,5}
• セットもバッグの一種である
• リスト:値に順番がある
• [1→5 →2 →1]
• バッグに対して順序を与えたものである
• つまり値の重複が許される
• SQLでは整列演算結果のみリスト(順序付)となる
データベースシステム論 第 回2016 [ 4 ] 29p.
= {1,3,5,4}
= {1,3,4,5,1,3,4,5}
≠ [5→1 →1 →2]
重複除去演算
• バッグであるリレーションRから重複するタプ
ルを取り除いて結果をセットにする演算。一般
系は以下のようになる。
• δ(R)
• この演算はリレーションがバッグを取りうる時
のみ意味を持つ。
• ただし、現実のRDBは殆ど(全て?)がリレー
ションがバッグである事を前提としている。
• とはいえ、現実のニーズとして重複除去をする
ニーズはそれほどないかもしれない?
データベースシステム論 第 回2016 [ 4 ] 30p.
デルタ
重複除去演算 - 例
• δ(π産地(wine))
• SELECT DISTINCT 産地 FROM wine;
データベースシステム論 第 回2016 [ 4 ] 31p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
産地
ブルゴーニュ
ボルドー
ロワール
シャンパーニュ
wine
問い合わせ Query
• 複数の関係演算を組み合わせて、リレーション
から目的の情報を抽出する事。
• 問い合わせは関係代数式で表される。
• 関係代数式は以下の二つのうちのどれかである。
• リレーション
• 関係代数式に対する関係演算
• 上記定義は再帰的な定義であることに注意。
データベースシステム論 第 回2016 [ 4 ] 32p.
問い合わせ - 例 (代数式)
• π名前, 産地, ビンテージ, 価格(σ 色=’白’ AND 種類= ’スティ-ル’(wine))
データベースシステム論 第 回2016 [ 4 ] 33p.
選択演算
射影演算
リレーションwineから、色が白で、種類
がスティールの-ワインを全て抜き出す。
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
名前 産地 ビンテージ 価格
シャブリ ブルゴーニュ 2001 2400
サンセール ロワール 2001 2800
名前・産地・ビンテージ・価格属性のみ
を抜き出す。
問い合わせ - 例 (SQL)
データベースシステム論 第 回2016 [ 4 ] 34p.
• π名前, 産地, ビンテージ, 価格(σ 色=’白’ AND 種類= ’スティ-ル’(wine))
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
SELECT 名前, 産地, ビンテージ, 価格
FROM wine
WHERE 色=‘白’ AND 種類=‘スティール’;
SELECT文
FROM句
WHERE句
では、やっと・・・ですが
データベースシステム論 第 回2016 [ 4 ] 35p.
S Q L を
学ぼう
SQLとは
• 関係データベースに対するコマンド
• 宣言型のプログラミング言語
• その主な役割から問い合わせ言語とも呼ばれる
• 現在ではISOが標準化を担当している
• SQL86, SQL89, SQL92, SQL:1999, SQL:2003, SQL:2006,
SQL:2008, SQL:2011
• ただし実製品への採用はベンダー毎にバラバラ
• また新機能がなかなか標準に反映されない
• 非互換性は「方言」などと呼ばれる
• 標準と方言の二種類の書き方が許されている事も
データベースシステム論 第 回2016 [ 4 ] 36p.
SQLの歴史
• もともとIBMのデータベース研究(SYSTEM R)
の中で、問い合わせ言語SEQUEL(Structured
English Query Language)として開発された。
• その歴史的な経緯もあり、SQLは『エス・
キュー・エル』ではなく、『シークェル』と読
まれる事もある。
• その後に国際標準となりSQL87, SQL92, SQL99
と続きさらに現在でも進化を続けている。
データベースシステム論 第 回2016 [ 4 ] 37p.
SQLの歴史
• もともとIBMのデータベース研究(SYSTEM R)
の中で、問い合わせ言語SEQUEL(Structured
English Query Language)として開発された。
• その歴史的な経緯もあり、SQLは『エス・
キュー・エル』ではなく、『シークェル』と読
まれる事もある。
• その後に国際標準となりSQL87, SQL92, SQL99
と続きさらに現在でも進化を続けている。
データベースシステム論 第 回2016 [ 4 ] 38p.
SQLの役割と主なコマンド
• データ定義言語
• テーブルの作成 (CREATE TABLE)
• ビューの作成 (CREATE VIEW)
• データ操作言語
• タプルの挿入・削除・変更 (INSERT, DELETE, UPDATE)
• 問い合わせ (SELECT)
• データ制御言語
• トランザクション管理 (BEGIN, ROLLBACK)
• ユーザ管理とセキュリティ (GRANT, REVOKE)
データベースシステム論 第 回2016 [ 4 ] 39p.
SQLの機能
• トリガと高度な完全性制約: トリガはデータベースが更新される
ときに、指定された条件を満たせば必ず起動されるアクションで
ある。さらに複数のテーブルにまたがるような複雑な完全性制約
も指定できる。
• 埋め込みSQL・動的SQL: SQLを親言語の中に埋め込んで利用で
きる機能と実行時にSQL問い合わせを動的に作り出して実行する
機能である。
• トランザクション管理: データベースの回復に関する基本単位で
あるトランザクション機能のことである。
• コネクション: SQLサーバとSQLクライアントの接続のことであ
る.利用者(クライアント)はデータベースにアクセスするため
にはサーバとの間でコネクションを確立しなければならない。
• セッション: 一人の利用者が単一のコネクションにおいて実行す
る一連のSQL文からなる。
• セキュリティ管理: データベースを不正なアクセスから守るアク
セス権限を操作する機能である。
データベースシステム論 第 回2016 [ 4 ] 40p.
REINDEX インデックスを再構築する
RELEASE SAVEPOINT -- 設定済みのセーブポイントを破棄する
RESET -- 実行時パラメータの値をデフォルト値に戻す
REVOKE -- アクセス権限を取り消す
ROLLBACK -- 現在のトランザクションをアボートする
ROLLBACK PREPARED -- 事前に二相コミット用に準備されたトランザクショ
ROLLBACK TO SAVEPOINT -- セーブポイントまでロールバックする
SAVEPOINT -- 現在のトランザクション内に新規にセーブポイントを定義する
SECURITY LABEL -- オブジェクトに適用するセキュリティラベルを定義また
SELECT -- テーブルもしくはビューから行を検索する
SELECT INTO -- 問い合わせの結果からの新しいテーブルを定義する
SET -- 実行時パラメータを変更する
SET CONSTRAINTS -- 現在のトランザクションの制約検査のタイミングを設定
SET ROLE -- 現在のセッションにおける現在のユーザ識別子を設定する
SET SESSION AUTHORIZATION -- セッションのユーザ識別子、現在のセッシ
SET TRANSACTION -- 現在のトランザクションの特性を設定する
SHOW -- 実行時パラメータの値を表示する
START TRANSACTION -- トランザクションブロックを開始する
TRUNCATE -- 1テーブルまたはテーブル群を空にする
UNLISTEN -- 通知の監視を停止する
UPDATE -- テーブルの行を更新する
VACUUM -- データベースの不要領域の回収とデータベースの解析(オプション
VALUES -- 行セットを計算します
SQLコマンド一覧(PostgreSQL)
データベースシステム論 第 回2016 [ 4 ] 41p.
この講義で特に扱うのは…
•SELECT
•DELETE
•UPDATE
•CREATE TABLE/VIEW
•BEGIN/COMMIT/ROLLBACK
データベースシステム論 第 回2016 [ 4 ] 42p.
※今日は頭出しという事でSELECTを勉強します。
SELECT文の仕様(PostgreSQL)
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
* | expression [ [ AS ] output_name ] [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ WINDOW window_name AS ( window_definition ) [, ...] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
[ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
[ LIMIT { count | ALL } ]
[ OFFSET start [ ROW | ROWS ] ]
[ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
[ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]
データベースシステム論 第 回2016 [ 4 ] 43p.
結合条件の定義はここに入る。
集約演算はここで定義
問題:3000円未満のワイン
SELECT * FROM wine
WHERE 価格 < 3000;
データベースシステム論 第 回2016 [ 4 ] 44p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
問題:3000円未満のワイン(値段順)
SELECT * FROM wine
WHERE 価格 < 3000
ORDER BY 価格 ASC;
データベースシステム論 第 回2016 [ 4 ] 45p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
ORDER BY 価格 DESC;
降順昇順 省略可
次回予告
第5回 PostgreSQLのインストール
データベースシステム論 第 回2016 [ 4 ] 46p.
第5回 PostgreSQLのインストール
• 以後演習として講義中に使用するPostgreSQL
をダウンロードしインストールとテストを行い
ます。
• 必ず学内ネットワークに接続できるPCを準備
してください。
• 予習
• 対応箇所:無し
• 関連個所:無し
データベースシステム論 第 回2016 [ 4 ] 47p.
ノートPC持参必須!

More Related Content

What's hot

数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
 
Newman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリングNewman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリング
Atsushi KOMIYA
 
LBFGSの実装
LBFGSの実装LBFGSの実装
LBFGSの実装
Kotaro Tanahashi
 
技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底
Hiromi Ishii
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)Takao Yamanaka
 
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習
Deep Learning JP
 
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
Shiga University, RIKEN
 
潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法
y-uti
 
画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量takaya imai
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
 
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
昌桓 李
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
KnowledgeGraph
 
DSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめDSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめ
sleepy_yoshi
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
Megagon Labs
 
推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから
cyberagent
 
High-impact Papers in Computer Vision: 歴史を変えた/トレンドを創る論文
High-impact Papers in Computer Vision: 歴史を変えた/トレンドを創る論文High-impact Papers in Computer Vision: 歴史を変えた/トレンドを創る論文
High-impact Papers in Computer Vision: 歴史を変えた/トレンドを創る論文
cvpaper. challenge
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxpsMITSUNARI Shigeo
 

What's hot (20)

数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
Newman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリングNewman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリング
 
LBFGSの実装
LBFGSの実装LBFGSの実装
LBFGSの実装
 
技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
 
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習
 
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
 
潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法
 
画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
 
DSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめDSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめ
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
 
推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから
 
High-impact Papers in Computer Vision: 歴史を変えた/トレンドを創る論文
High-impact Papers in Computer Vision: 歴史を変えた/トレンドを創る論文High-impact Papers in Computer Vision: 歴史を変えた/トレンドを創る論文
High-impact Papers in Computer Vision: 歴史を変えた/トレンドを創る論文
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
 

More from Shohei Yokoyama

データベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベースデータベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベース
Shohei Yokoyama
 
データベースシステム論14 - 総復習!
データベースシステム論14 - 総復習!データベースシステム論14 - 総復習!
データベースシステム論14 - 総復習!
Shohei Yokoyama
 
データベースシステム論13 - データベースの運用
データベースシステム論13 - データベースの運用データベースシステム論13 - データベースの運用
データベースシステム論13 - データベースの運用
Shohei Yokoyama
 
データベースシステム論12 - 問い合わせ処理と最適化
データベースシステム論12 - 問い合わせ処理と最適化データベースシステム論12 - 問い合わせ処理と最適化
データベースシステム論12 - 問い合わせ処理と最適化
Shohei Yokoyama
 
データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成
Shohei Yokoyama
 
データベースシステム論10 - データベースの設計
データベースシステム論10 - データベースの設計データベースシステム論10 - データベースの設計
データベースシステム論10 - データベースの設計
Shohei Yokoyama
 
データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権
データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権
データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権
Shohei Yokoyama
 
データベースシステム論08 - SQL応用演習 結合演算とその他
データベースシステム論08 - SQL応用演習 結合演算とその他データベースシステム論08 - SQL応用演習 結合演算とその他
データベースシステム論08 - SQL応用演習 結合演算とその他
Shohei Yokoyama
 
データベースシステム論07 - SQL基礎演習2 データの問い合わせ
データベースシステム論07 - SQL基礎演習2 データの問い合わせデータベースシステム論07 - SQL基礎演習2 データの問い合わせ
データベースシステム論07 - SQL基礎演習2 データの問い合わせ
Shohei Yokoyama
 
データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作
Shohei Yokoyama
 
データベースシステム論05 - PostgreSQLのインストール
データベースシステム論05 - PostgreSQLのインストールデータベースシステム論05 - PostgreSQLのインストール
データベースシステム論05 - PostgreSQLのインストール
Shohei Yokoyama
 
データベースシステム論02 - データベースの歴史と今
データベースシステム論02 - データベースの歴史と今データベースシステム論02 - データベースの歴史と今
データベースシステム論02 - データベースの歴史と今
Shohei Yokoyama
 
データベースシステム論01 - ガイダンス
データベースシステム論01 - ガイダンスデータベースシステム論01 - ガイダンス
データベースシステム論01 - ガイダンス
Shohei Yokoyama
 
静大情報学部オープンキャンパス ミニ講義CS系
静大情報学部オープンキャンパス ミニ講義CS系静大情報学部オープンキャンパス ミニ講義CS系
静大情報学部オープンキャンパス ミニ講義CS系
Shohei Yokoyama
 

More from Shohei Yokoyama (14)

データベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベースデータベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベース
 
データベースシステム論14 - 総復習!
データベースシステム論14 - 総復習!データベースシステム論14 - 総復習!
データベースシステム論14 - 総復習!
 
データベースシステム論13 - データベースの運用
データベースシステム論13 - データベースの運用データベースシステム論13 - データベースの運用
データベースシステム論13 - データベースの運用
 
データベースシステム論12 - 問い合わせ処理と最適化
データベースシステム論12 - 問い合わせ処理と最適化データベースシステム論12 - 問い合わせ処理と最適化
データベースシステム論12 - 問い合わせ処理と最適化
 
データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成
 
データベースシステム論10 - データベースの設計
データベースシステム論10 - データベースの設計データベースシステム論10 - データベースの設計
データベースシステム論10 - データベースの設計
 
データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権
データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権
データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権
 
データベースシステム論08 - SQL応用演習 結合演算とその他
データベースシステム論08 - SQL応用演習 結合演算とその他データベースシステム論08 - SQL応用演習 結合演算とその他
データベースシステム論08 - SQL応用演習 結合演算とその他
 
データベースシステム論07 - SQL基礎演習2 データの問い合わせ
データベースシステム論07 - SQL基礎演習2 データの問い合わせデータベースシステム論07 - SQL基礎演習2 データの問い合わせ
データベースシステム論07 - SQL基礎演習2 データの問い合わせ
 
データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作
 
データベースシステム論05 - PostgreSQLのインストール
データベースシステム論05 - PostgreSQLのインストールデータベースシステム論05 - PostgreSQLのインストール
データベースシステム論05 - PostgreSQLのインストール
 
データベースシステム論02 - データベースの歴史と今
データベースシステム論02 - データベースの歴史と今データベースシステム論02 - データベースの歴史と今
データベースシステム論02 - データベースの歴史と今
 
データベースシステム論01 - ガイダンス
データベースシステム論01 - ガイダンスデータベースシステム論01 - ガイダンス
データベースシステム論01 - ガイダンス
 
静大情報学部オープンキャンパス ミニ講義CS系
静大情報学部オープンキャンパス ミニ講義CS系静大情報学部オープンキャンパス ミニ講義CS系
静大情報学部オープンキャンパス ミニ講義CS系
 

データベースシステム論04 - 関係代数(後半)

  • 1. データベースシステム論 2016年度 後期 水曜 1・2時限 情24教室 担当:横山昌平 データベースシステム論 第 回2016 [ 4 ] 1p.
  • 2. 講義計画 • 関係データベースの歴史と基本概念 • SQLの基礎と応用(演習を含めつつ) • データベースの設計と構成 • SQL問い合わせ処理とそれを支える技術 • 関係データモデル以外のデータベース データベースシステム論 第 回2016 [ 4 ] 2p. ※現時点での予定です。進捗に応じて変更します。 27Apr. 20Apr. 13Apr. 25May 18May 11May 1June 8June 29June 22June 20July 13July 6July 27July
  • 4. 先週やった関係演算のまとめ • 選択 σ条件式(R) • 射影 π属性リスト(R) • 集合和 R∪S • 集合差 R-S • 集合積 R∩S • 直積 R×S • 商 R÷S • リネーム ρ(label←名前)R データベースシステム論 第 回2016 [ 4 ] 4p. 結合律と可換律 集合和、集合積、直積は以下の結合律と 可換律を満たす演算である。 • 結合律:A●(B●C)=(A●B)●C • 可換律:A●B=B ●A ※●は演算子(∪,∩, ×)
  • 5. 結合演算 • クロス結合(cross join) = 直積 • Θ結合, 等結合(Θ-join, equijoin) • 自然結合(natural join) • 準結合(半結合,semijoin) • アンチ結合(antijoin) • 外部結合 • 左外部結合, 右外部結合, 完全外部結合 • (left outer join, right outer join, full outer join) • 加えて結合条件として等価・不等化をとりうる データベースシステム論 第 回2016 [ 4 ] 5p. 二つのテーブルを横方向にガチャンとくっつける演算 ↑外部結合に対して内部結合と呼ばれる
  • 6. Θ結合, 等結合 • リレーションRとSの属性rとsを演算子Θにて評 価して結合する演算子 • R ⨝rΘsS • Θは[<,≤,=, ≥,>]のどれか • Θが「=」の場合等結合、それ以外は不等結合 データベースシステム論 第 回2016 [ 4 ] 6p.
  • 7. 等結合 - 例 • 両リレーションを産地IDで等結合 • wine ⨝産地ID=産地ID vineyard • SELECT * FROM wine INNER JOIN vineyard ON wine.産地ID = vineyard.産地ID; データベースシステム論 第 回2016 [ 4 ] 7p. ワインID 名前 産地ID 価格 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 7 十勝 F 2000 産地ID 産地 A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ wine vineyard
  • 8. 等結合 - 例 データベースシステム論 第 回2016 [ 4 ] 8p. ワインID 名前 産地ID 価格 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 7 十勝 F 2000 産地ID 産地 A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ wine vineyard ワインID 名前 産地ID 価格 産地 1 シャブリ A 2400 ブルゴーニュ 2 ジュヴレシャンベルタン A 3000 ブルゴーニュ 3 サンテミリオン B 5800 ボルドー 4 オーメドック B 2200 ボルドー 5 サンセール C 2800 ロワール 6 シャンパン D 4000 シャンパーニュ • 両リレーションを産地IDで等結合
  • 9. 不等結合 - 例 • 各ユーザが買えるワインのリストを表示 • ワイン⨝価格≤金額 財布 • SELECT * FROM wine INNER JOIN vineyard ON 価格 <= 金額; データベースシステム論 第 回2016 [ 4 ] 9p. ワインID 名前 産地ID 価格 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 7 十勝 F 2000 ユーザID 金額 山田 2300 横山 3000 ワイン 財布
  • 10. 不等結合 - 例 • 各ユーザが買えるワインのリストを表示 データベースシステム論 第 回2016 [ 4 ] 10p. ワインID 名前 産地ID 価格 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 7 十勝 F 2000 ユーザID 金額 山田 2300 横山 3000 ワイン 財布 ワインID 名前 産地ID 価格 ユーザID 金額 1 シャブリ A 2400 横山 3000 2 ジュヴレシャンベルタン A 3000 横山 3000 4 オーメドック B 2200 山田 2300 4 オーメドック B 2200 横山 3000 5 サンセール C 2800 横山 3000 7 十勝 F 2000 横山 2000 7 十勝 F 2000 山田 2000
  • 11. 自然結合 • 自然結合とはリレーションRとSに対して等結 合した結果から重複を除去したものである。 • R ⨝S • R NATURAL JOIN S • 等結合結果に行の重複が無い場合は自然結合で あるといえる。 データベースシステム論 第 回2016 [ 4 ] 11p. ワインID 名前 産地ID 価格 産地 1 シャブリ A 2400 ブルゴーニュ 2 ジュヴレシャンベルタン A 3000 ブルゴーニュ 3 サンテミリオン B 5800 ボルドー 4 オーメドック B 2200 ボルドー 5 サンセール C 2800 ロワール 6 シャンパン D 4000 シャンパーニュ
  • 12. 準結合 • 準結合とはリレーションRとSの自然結合結果 から、Sにのみ存在する属性を射影演算にて除 去する演算である。 • R⋉S • SQLは結合と射影の組み合わせで表現する データベースシステム論 第 回2016 [ 4 ] 12p. ワインID 名前 産地ID 価格 産地 1 シャブリ A 2400 ブルゴーニュ 2 ジュヴレシャンベルタン A 3000 ブルゴーニュ 3 サンテミリオン B 5800 ボルドー 4 オーメドック B 2200 ボルドー 5 サンセール C 2800 ロワール 6 シャンパン D 4000 シャンパーニュ ワインID 名前 産地ID 価格 産地ID 産地⋉
  • 13. アンチ結合 • アンチ結合はリレーションRからSに存在する 行を除去したものである。 • R ▷ S • NOT EXISTS句, NOT IN句等で実現 • 「R」と「RとSを準結合した結果」の集合差に 等しい。 • (R-(R⋉S)) データベースシステム論 第 回2016 [ 4 ] 13p. ワインID 名前 産地ID 価格 7 十勝 F 2000
  • 14. 外部結合 • 左外部結合 R⟕条件式S • 右外部結合 R⟖条件式S • 完全外部結合 R⟗条件式S • 条件により対応付けられた行のみを対象とする これまでの結合に対して、対応付けられない行 も含めて返す結合演算。存在しない属性値は NULLという値で表現される。 • 行数は両リレーションの内部結合で得られる行 数に加えて、条件が対応しない行(右,左,or両方) を足したものになる。 データベースシステム論 第 回2016 [ 4 ] 14p.
  • 15. 左外部結合 - 例 • wineとvineyardを産地IDで(等価)左外部結合 • wine⟕産地ID=産地IDvineyard • SELECT * FROM wine LEFT OUTER JOIN vineyard ON wine.産地ID = vineyard.産地ID; データベースシステム論 第 回2016 [ 4 ] 15p. ワインID 名前 産地ID 価格 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 7 十勝 F 2000 産地ID 産地 A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ wine vineyard
  • 16. 左外部結合 - 例 • wineとvineyardを産地IDで外部結合 • wine⟕産地ID=産地IDvineyard • SELECT * FROM wine INNER JOIN vineyard ON wine.産地ID = vineyard.産地ID; データベースシステム論 第 回2016 [ 4 ] 16p. ワインID 名前 産地ID 価格 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 7 十勝 F 2000 産地ID 産地 A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ wine vineyard ワインID 名前 産地ID 価格 産地ID 産地 1 シャブリ A 2400 A ブルゴーニュ 2 ジュヴレシャンベルタン A 3000 A ブルゴーニュ 3 サンテミリオン B 5800 B ボルドー 4 オーメドック B 2200 B ボルドー 5 サンセール C 2800 C ロワール 6 シャンパン D 4000 D シャンパーニュ 7 十勝 F 2000 NULL NULL
  • 17. 右外部結合 - 例 • wineとvineyardを産地IDで(等価)右外部結合 • wine ⟖産地ID=産地IDvineyard • SELECT * FROM wine RIGHT OUTER JOIN vineyard ON wine.産地ID = vineyard.産地ID; データベースシステム論 第 回2016 [ 4 ] 17p. ワインID 名前 産地ID 価格 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 7 十勝 F 2000 産地ID 産地 A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ wine vineyard
  • 18. 右外部結合 - 例 • wineとvineyardを産地IDで(等価)右外部結合 • wine⟕産地ID=産地IDvineyard • SELECT * FROM wine INNER JOIN vineyard ON wine.産地ID = vineyard.産地ID; データベースシステム論 第 回2016 [ 4 ] 18p. ワインID 名前 産地ID 価格 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 7 十勝 F 2000 産地ID 産地 A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ wine vineyard ワインID 名前 産地ID 価格 産地ID 産地 1 シャブリ A 2400 A ブルゴーニュ 2 ジュヴレシャンベルタン A 3000 A ブルゴーニュ 3 サンテミリオン B 5800 B ボルドー 4 オーメドック B 2200 B ボルドー 5 サンセール C 2800 C ロワール 6 シャンパン D 4000 D シャンパーニュ NULL NULL NULL NULL E チリ
  • 19. 完全外部結合 - 例 • wineとvineyardを産地IDで(等価)右外部結合 • wine ⟗産地ID=産地IDvineyard • SELECT * FROM wine FULL OUTER JOIN vineyard ON wine.産地ID = vineyard.産地ID; データベースシステム論 第 回2016 [ 4 ] 19p. ワインID 名前 産地ID 価格 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 7 十勝 F 2000 産地ID 産地 A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ wine vineyard
  • 20. 完全外部結合 - 例 • wineとvineyardを産地IDで外部結合 • wine⟕産地ID=産地IDvineyard • SELECT * FROM wine INNER JOIN vineyard ON wine.産地ID = vineyard.産地ID; データベースシステム論 第 回2016 [ 4 ] 20p. ワインID 名前 産地ID 価格 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 7 十勝 F 2000 産地ID 産地 A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ wine vineyard ワインID 名前 産地ID 価格 産地ID 産地 1 シャブリ A 2400 A ブルゴーニュ 2 ジュヴレシャンベルタン A 3000 A ブルゴーニュ 3 サンテミリオン B 5800 B ボルドー 4 オーメドック B 2200 B ボルドー 5 サンセール C 2800 C ロワール 6 シャンパン D 4000 D シャンパーニュ NULL NULL NULL NULL E チリ 7 十勝 F 2000 NULL NULL
  • 21. 自己結合 • 同じリレーション同士を結合する事 • 推薦ワインの名前を出すには自己結合をする。 • (ρAwine) ⨝推薦ワインID=ワインID (ρBwine) • SELECT * FROM wine as A INNER JOIN wine as B ON A.推薦ワインID = B.ワインID; データベースシステム論 第 回2016 [ 4 ] 21p. ワインID 名前 推薦ワインID 1 シャブリ 5 2 ジュヴレシャンベルタン 3 3 サンテミリオン 2 4 オーメドック 3 5 サンセール 1 6 シャンパン NULL あるワインを好きな人に推 薦できるワインを「推薦ワ インID」として付記したリ レ ー シ ョ ン を 考 え て み ま しょう。 wine 別名にリネーム した後で結合
  • 22. 集約演算 • 集約演算は指定された属性の値に対して集約関 数(COUNT, SUM, MIN, MAX, AVG等)を適用し, 属性値と関数値からなるタプルを結果とする。 以下のような式で記述する。 • グルーピング属性 ΑF 関数リスト(R) • γL (R) • これまでに説明した演算はタプル間は独立で あったが、集約関数はタプルを跨いで値の処理 を行う。例えば価格カラムの全てのタプルを跨 いだ平均値を算出する等も目的で利用される。 データベースシステム論 第 回2016 [ 4 ] 22p. ガンマ
  • 23. 集約演算 - 例 • ワイン価格の平均値が知りたい • γAVG(価格) (wine) • SELECT AVG(価格) FROM wine; データベースシステム論 第 回2016 [ 4 ] 23p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 AVG 3366.666666 …
  • 24. グルーピング • 集約演算と同時に使われる事が殆どである。 • 集約演算のみを適用した場合、リレーション全 体の集約を行うが、属性値毎に集約したい場合 はグルーピング属性を指定する。 • γL (R) • ここでLの取りうる値 • 集約関数(属性名) 例:AVG(価格), MIN(ビンテージ) • 属性名 例:色 • 例:γ色, MIN(ビンテージ) (wine) データベースシステム論 第 回2016 [ 4 ] 24p. 色でグルーピングされる。 ビンテージは集約され最小値が得られる
  • 25. 集約演算 - 例2 • 各色のワインの一番古いビンテージは? • γ色, MIN(ビンテージ) (wine) • SELECT 色,MIN(ビンテージ) FROM wine GROP BY 色; データベースシステム論 第 回2016 [ 4 ] 25p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 色 MIN 赤 1997 白 1999 集約関数 色カラムの値が全種類現れる=色毎にグループ(タプル)を形成 ビンテージの値の最小値が現れる グルーピング
  • 26. 集約関数 • 基本的な関数 • Avg(属性) 平均値 • Count(*) 行数 • max(属性) ,min(属性) 最大最小値 • sum(属性) 合計 • 統計処理用 • corr(属性1, 属性2) 相関係数 • stddev_samp(属性) 標本標準偏差 etc… • 文字列用 • string_agg(属性) 文字列連結 etc… データベースシステム論 第 回2016 [ 4 ] 26p. これ以外にも沢山あります。 DBMSによっては名前が違う場合もあります。 ここではPostgreSQLの例を示しています
  • 27. 整列演算 • 整列演算とはリレーションRについて,それに 属する属性rに基づいて整列(sort)する演算。一 般系は以下のように表される。 • τr(R) • 複数の属性を指定する事もできる。 • τr1,r2,r3(R) • この演算子が唯一、演算結果がセットでも バッグでもなくリストとなる。 データベースシステム論 第 回2016 [ 4 ] 27p. ※SQLと具体例は後で・・・ タウ
  • 28. セット・バッグ・リスト • とりあえず以下の三点をおさえましょう • 関係代数はセット(集合)を扱う理論体系として生ま れました。 • しかしながら現実のRDBとSQLはバッグを扱う事に 最適化しています。 • そして整列演算のみがバッグをリストに変換する。 データベースシステム論 第 回2016 [ 4 ] 28p. な に が 違 う ? 考えてみよう!
  • 29. セット・バッグ・リストの違い • セット:値の重複を許さない • {1,3,4,5} • バッグ:値の重複が許される • {1,1,3,3,4,4,5,5} • セットもバッグの一種である • リスト:値に順番がある • [1→5 →2 →1] • バッグに対して順序を与えたものである • つまり値の重複が許される • SQLでは整列演算結果のみリスト(順序付)となる データベースシステム論 第 回2016 [ 4 ] 29p. = {1,3,5,4} = {1,3,4,5,1,3,4,5} ≠ [5→1 →1 →2]
  • 30. 重複除去演算 • バッグであるリレーションRから重複するタプ ルを取り除いて結果をセットにする演算。一般 系は以下のようになる。 • δ(R) • この演算はリレーションがバッグを取りうる時 のみ意味を持つ。 • ただし、現実のRDBは殆ど(全て?)がリレー ションがバッグである事を前提としている。 • とはいえ、現実のニーズとして重複除去をする ニーズはそれほどないかもしれない? データベースシステム論 第 回2016 [ 4 ] 30p. デルタ
  • 31. 重複除去演算 - 例 • δ(π産地(wine)) • SELECT DISTINCT 産地 FROM wine; データベースシステム論 第 回2016 [ 4 ] 31p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 産地 ブルゴーニュ ボルドー ロワール シャンパーニュ wine
  • 32. 問い合わせ Query • 複数の関係演算を組み合わせて、リレーション から目的の情報を抽出する事。 • 問い合わせは関係代数式で表される。 • 関係代数式は以下の二つのうちのどれかである。 • リレーション • 関係代数式に対する関係演算 • 上記定義は再帰的な定義であることに注意。 データベースシステム論 第 回2016 [ 4 ] 32p.
  • 33. 問い合わせ - 例 (代数式) • π名前, 産地, ビンテージ, 価格(σ 色=’白’ AND 種類= ’スティ-ル’(wine)) データベースシステム論 第 回2016 [ 4 ] 33p. 選択演算 射影演算 リレーションwineから、色が白で、種類 がスティールの-ワインを全て抜き出す。 ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 名前 産地 ビンテージ 価格 シャブリ ブルゴーニュ 2001 2400 サンセール ロワール 2001 2800 名前・産地・ビンテージ・価格属性のみ を抜き出す。
  • 34. 問い合わせ - 例 (SQL) データベースシステム論 第 回2016 [ 4 ] 34p. • π名前, 産地, ビンテージ, 価格(σ 色=’白’ AND 種類= ’スティ-ル’(wine)) ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 SELECT 名前, 産地, ビンテージ, 価格 FROM wine WHERE 色=‘白’ AND 種類=‘スティール’; SELECT文 FROM句 WHERE句
  • 36. SQLとは • 関係データベースに対するコマンド • 宣言型のプログラミング言語 • その主な役割から問い合わせ言語とも呼ばれる • 現在ではISOが標準化を担当している • SQL86, SQL89, SQL92, SQL:1999, SQL:2003, SQL:2006, SQL:2008, SQL:2011 • ただし実製品への採用はベンダー毎にバラバラ • また新機能がなかなか標準に反映されない • 非互換性は「方言」などと呼ばれる • 標準と方言の二種類の書き方が許されている事も データベースシステム論 第 回2016 [ 4 ] 36p.
  • 37. SQLの歴史 • もともとIBMのデータベース研究(SYSTEM R) の中で、問い合わせ言語SEQUEL(Structured English Query Language)として開発された。 • その歴史的な経緯もあり、SQLは『エス・ キュー・エル』ではなく、『シークェル』と読 まれる事もある。 • その後に国際標準となりSQL87, SQL92, SQL99 と続きさらに現在でも進化を続けている。 データベースシステム論 第 回2016 [ 4 ] 37p.
  • 38. SQLの歴史 • もともとIBMのデータベース研究(SYSTEM R) の中で、問い合わせ言語SEQUEL(Structured English Query Language)として開発された。 • その歴史的な経緯もあり、SQLは『エス・ キュー・エル』ではなく、『シークェル』と読 まれる事もある。 • その後に国際標準となりSQL87, SQL92, SQL99 と続きさらに現在でも進化を続けている。 データベースシステム論 第 回2016 [ 4 ] 38p.
  • 39. SQLの役割と主なコマンド • データ定義言語 • テーブルの作成 (CREATE TABLE) • ビューの作成 (CREATE VIEW) • データ操作言語 • タプルの挿入・削除・変更 (INSERT, DELETE, UPDATE) • 問い合わせ (SELECT) • データ制御言語 • トランザクション管理 (BEGIN, ROLLBACK) • ユーザ管理とセキュリティ (GRANT, REVOKE) データベースシステム論 第 回2016 [ 4 ] 39p.
  • 40. SQLの機能 • トリガと高度な完全性制約: トリガはデータベースが更新される ときに、指定された条件を満たせば必ず起動されるアクションで ある。さらに複数のテーブルにまたがるような複雑な完全性制約 も指定できる。 • 埋め込みSQL・動的SQL: SQLを親言語の中に埋め込んで利用で きる機能と実行時にSQL問い合わせを動的に作り出して実行する 機能である。 • トランザクション管理: データベースの回復に関する基本単位で あるトランザクション機能のことである。 • コネクション: SQLサーバとSQLクライアントの接続のことであ る.利用者(クライアント)はデータベースにアクセスするため にはサーバとの間でコネクションを確立しなければならない。 • セッション: 一人の利用者が単一のコネクションにおいて実行す る一連のSQL文からなる。 • セキュリティ管理: データベースを不正なアクセスから守るアク セス権限を操作する機能である。 データベースシステム論 第 回2016 [ 4 ] 40p.
  • 41. REINDEX インデックスを再構築する RELEASE SAVEPOINT -- 設定済みのセーブポイントを破棄する RESET -- 実行時パラメータの値をデフォルト値に戻す REVOKE -- アクセス権限を取り消す ROLLBACK -- 現在のトランザクションをアボートする ROLLBACK PREPARED -- 事前に二相コミット用に準備されたトランザクショ ROLLBACK TO SAVEPOINT -- セーブポイントまでロールバックする SAVEPOINT -- 現在のトランザクション内に新規にセーブポイントを定義する SECURITY LABEL -- オブジェクトに適用するセキュリティラベルを定義また SELECT -- テーブルもしくはビューから行を検索する SELECT INTO -- 問い合わせの結果からの新しいテーブルを定義する SET -- 実行時パラメータを変更する SET CONSTRAINTS -- 現在のトランザクションの制約検査のタイミングを設定 SET ROLE -- 現在のセッションにおける現在のユーザ識別子を設定する SET SESSION AUTHORIZATION -- セッションのユーザ識別子、現在のセッシ SET TRANSACTION -- 現在のトランザクションの特性を設定する SHOW -- 実行時パラメータの値を表示する START TRANSACTION -- トランザクションブロックを開始する TRUNCATE -- 1テーブルまたはテーブル群を空にする UNLISTEN -- 通知の監視を停止する UPDATE -- テーブルの行を更新する VACUUM -- データベースの不要領域の回収とデータベースの解析(オプション VALUES -- 行セットを計算します SQLコマンド一覧(PostgreSQL) データベースシステム論 第 回2016 [ 4 ] 41p.
  • 43. SELECT文の仕様(PostgreSQL) SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ [ AS ] output_name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ WINDOW window_name AS ( window_definition ) [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ] [ LIMIT { count | ALL } ] [ OFFSET start [ ROW | ROWS ] ] [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ] データベースシステム論 第 回2016 [ 4 ] 43p. 結合条件の定義はここに入る。 集約演算はここで定義
  • 44. 問題:3000円未満のワイン SELECT * FROM wine WHERE 価格 < 3000; データベースシステム論 第 回2016 [ 4 ] 44p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
  • 45. 問題:3000円未満のワイン(値段順) SELECT * FROM wine WHERE 価格 < 3000 ORDER BY 価格 ASC; データベースシステム論 第 回2016 [ 4 ] 45p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 ORDER BY 価格 DESC; 降順昇順 省略可
  • 47. 第5回 PostgreSQLのインストール • 以後演習として講義中に使用するPostgreSQL をダウンロードしインストールとテストを行い ます。 • 必ず学内ネットワークに接続できるPCを準備 してください。 • 予習 • 対応箇所:無し • 関連個所:無し データベースシステム論 第 回2016 [ 4 ] 47p. ノートPC持参必須!