Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
データベースシステム論
2015年度 後期 火曜 3・4時限 情14教室
担当:横山昌平
データベースシステム論 第 回2015 [ 8 ] 1p.
講義計画
• 関係データベースの歴史と基本概念
• SQLの基礎と応用(演習を含めつつ)
• データベースの設計と構成
• SQL問い合わせ処理とそれを支える技術
• 関係データモデル以外のデータベース
データベースシステム論 第 回2015 ...
データベースシステム論
演習2 WHERE句とHAVING句 の答え合わせ
データベースシステム論 第 回2015 [ 7 ] 3p.
集約&整列&リネーム演算 - 例
• 安価なワインの産地別平均価格(降順)
• 安価=ワインの価格が4000円未満=安価なワイン
• 安価=産地平均価格が4000円未満=安価な産地
データベースシステム論 第 回2015 [ 7 ] 4p.
S...
考え方の一例
• 4000円”以下”で考えてみよう
• 安価=ワインの価格が4000円以下=安価なワイン
• 安価=産地平均価格が4000円以下=安価な産地
データベースシステム論 第 回2015 [ 7 ] 5p.
SELECT did, r...
データベースシステム論
第8回 SQL応用演習 結合演算とその他
データベースシステム論 第 回2015 [ 8 ] 6p.
結合演算
• 基本的な書き方
• テーブルt1とテーブルt2の結合
• 結合条件:カラムc1とカラムc2が等しい
データベースシステム論 第 回2015 [ 8 ] 7p.
SELECT *
FROM t1 JOIN t2
ON t1.c1 =...
結合演算 - 例
• ワインの産地を表示したい
データベースシステム論 第 回2015 [ 8 ] 8p.
SELECT *
FROM wine JOIN vineyard
ON wine.did = vineyard.did;
dbsys=#...
結合演算 - 例
• ワインの産地を表示したい
データベースシステム論 第 回2015 [ 8 ] 9p.
SELECT *
FROM wine JOIN vineyard
ON wine.did = vineyard.did;
dbsys=#...
結合演算 - 例続き
• 射影演算にてカラムを整理する
データベースシステム論 第 回2015 [ 8 ] 10p.
SELECT wid, name, district, price
FROM wine JOIN vineyard
ON wi...
結合演算 - 例続き2
• didも出してみよう!
データベースシステム論 第 回2015 [ 8 ] 11p.
SELECT wid, name, did, district, price
FROM wine JOIN vineyard
ON...
自然結合 - 例
• 外部キー同士のカラム名が同じなら自然結合を
使えば楽に(結合条件無しに)SQLを書けます
データベースシステム論 第 回2015 [ 8 ] 12p.
SELECT * FROM wine NATURAL JOIN vin...
外部結合 - 試行課題2(提出無)
• 結果が違うのはどれ?そしてなぜ?
データベースシステム論 第 回2015 [ 8 ] 13p.
SELECT wid, name, district, price
FROM wine [LEFT|FULL...
外部結合 - 試行課題2
• wine LEFT JOIN vineyard
• ●にある行を全て得る
• wine FULL JOIN vineyard
• ●と●にある行を全て得る
• wine RIGHT JOIN vineyard
• ...
外部結合 - 試行課題2
• wine LEFT JOIN vineyard
• ●にある行を全て得る
• wine FULL JOIN vineyard
• ●と●にある行を全て得る
• wine RIGHT JOIN vineyard
• ...
外部結合の意味を考えよう
データベースシステム論 第 回2015 [ 8 ] 16p.
wid | name | district | price
-----+------------------------+----------------+...
SELECT wid, name, district, price
FROM wine RIGHT JOIN vineyard
ON wine.did = vineyard.did
WHERE wid = NULL; 上手くいった?
外部結合 ...
外部結合 - 例2
• 持っていないもののみを出そう!
データベースシステム論 第 回2015 [ 8 ] 18p.
wid | name | district | price
-----+------------------------+--...
アンチ結合 - 例
• 「何をもっていないか」を出すもう1つの方法
としてアンチ結合があります。ただし、SQLの
JOIN句としてサポートされていないので少々
複雑な書き方となります。
データベースシステム論 第 回2015 [ 8 ] 19p...
アンチ結合 - 例
• 「何をもっていないか」を出すもう1つの方法
としてアンチ結合があります。ただし、SQLの
JOIN句としてサポートされていないので少々
複雑な書き方となります。
データベースシステム論 第 回2015 [ 8 ] 20p...
副問い合わせ (Sub query)
• ある問い合わせの中で定義される問い合わせ。
• ネストされた問い合わせにおける主・副関係
• 副問い合わせが定義できる箇所
• 単一の値を与える所 (スカラー副問い合わせ)
• 単一の表を与える所←さっ...
スカラー副問い合わせ - 例
• 価格の一番安いワイン
データベースシステム論 第 回2015 [ 8 ] 22p.
SELECT * FROM wine
WHERE price= (
SELECT min(price) FROM wine);...
試行課題3 考えてみよう!
• 一番安いワインは次の問い合わせでもOKでは?
データベースシステム論 第 回2015 [ 8 ] 23p.
SELECT * FROM wine ORDER BY price LIMIT 1;
最初のn件を出す
...
試行課題3 考えてみよう!
• 一番安いワインは次の問い合わせでもOKでは?
データベースシステム論 第 回2015 [ 8 ] 24p.
SELECT * FROM wine ORDER BY price LIMIT 1;
最初のn件を出す
...
相関副問い合わせ - 例
• 産地毎の一番安いワイン
データベースシステム論 第 回2015 [ 8 ] 25p.
SELECT * FROM wine AS x
WHERE price = (
SELECT min(price)
FROM w...
IN句、NOT IN句
• 右辺は括弧で括られた副問い合わせ
• 一列のみを返す式でないとならない
• 左辺が右辺副問い合わせの結果行のどれかと等
しい場合「真」となる。(NOT INはその逆)
データベースシステム論 第 回2015 [ 8 ...
EXISTS句、NOT EXISTS句
• 引数は副問い合わせ文
• IN句と似ているが、実行順が異なる
• IN句:副問い合わせが先に実行される
• 副問い合わせの結果行毎ループで主問い合わせが評価
• EXISTS句:主問い合わせが先に実行...
アンチ結合の例に戻りましょう
• EXISTS句:主問い合わせが先に実行される
データベースシステム論 第 回2015 [ 8 ] 28p.
SELECT *
FROM vineyard
WHERE NOT EXISTS (
SELECT NU...
アンチ結合をNOT IN句で書く
• IN句:副問い合わせが先に実行される
データベースシステム論 第 回2015 [ 8 ] 29p.
SELECT *
FROM vineyard
WHERE did NOT IN(
SELECT DISTI...
和演算
• UNION句、UNION ALL句
• スキーマが同一のテーブルを縦方向につなげる
• やってみよう!違いは何?
データベースシステム論 第 回2015 [ 8 ] 30p.
SELECT * FROMテーブル名1
UNION [A...
結果の一部表示
• LIMIT句、OFFSET句
• 結果中m番目からn行表示する
• ORDER BY句と一緒に使用する
データベースシステム論 第 回2015 [ 8 ] 31p.
SELECT * FROMテーブル名
ORDER BYソー...
小休止・・・
• SQLの役割
• データ定義言語
• テーブルの作成 (CREATE TABLE)前々回
• ビューの作成 (CREATE VIEW)
• データ操作言語
• タプルの挿入・削除・変更 (INSERT, DELETE, UPD...
データベースシステム論
演習3 課題+コメントペーパー
データベースシステム論 第 回2015 [ 8 ] 33p.
提出課題3 IN句・EXISTS句
• 以下の問い合わせのSQL文を作成せよ。
• ただし以下の3通りのクエリを作れ
• IN句を使って表す
• EXISTS句を使って表す
• スカラー副問い合わせを使って表す
• 提出物
• 各SQLとその出...
コメントペーパー
• この講義に関する感想や要望を自由に書いて提
出してください。
• 書かれた内容は成績には一切影響させませんの
で、率直に書いてください。
• もらった意見のうち、以降の講義に活かせるも
のに関しては極力対応していきますし、...
次回予告
第9回 SQL応用演習2 ビューとトリガ、アクセス権
データベースシステム論 第 回2015 [ 8 ] 36p.
第9回 SQL応用演習2
• SQL演習の最後にビュー作成し、それを更新可
能にしましょう。またGRANT文とビューを使い、
データへのアクセス権の概念を学びます。
• 来週学ぶこと
• ビューの作成
• 更新可能ビュー
• アクセス権
• 予...
Upcoming SlideShare
Loading in …5
×

データベースシステム論08 - SQL応用演習 結合演算とその他

3,176 views

Published on

静岡大学情報学部「データベースシステム論」講義スライド
第8回:SQL応用演習 結合演算とその他

Published in: Education
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

データベースシステム論08 - SQL応用演習 結合演算とその他

  1. 1. データベースシステム論 2015年度 後期 火曜 3・4時限 情14教室 担当:横山昌平 データベースシステム論 第 回2015 [ 8 ] 1p.
  2. 2. 講義計画 • 関係データベースの歴史と基本概念 • SQLの基礎と応用(演習を含めつつ) • データベースの設計と構成 • SQL問い合わせ処理とそれを支える技術 • 関係データモデル以外のデータベース データベースシステム論 第 回2015 [ 8 ] 2p. ※現時点での予定です。進捗に応じて変更します。 27Oct. 20Oct. 13Oct. 24Nov. 17Nov. 10Nov. 1Dec. 8Dec. 5Jan. 15Dec. 26Jan. 19Jan. 12Jan. 2Feb.
  3. 3. データベースシステム論 演習2 WHERE句とHAVING句 の答え合わせ データベースシステム論 第 回2015 [ 7 ] 3p.
  4. 4. 集約&整列&リネーム演算 - 例 • 安価なワインの産地別平均価格(降順) • 安価=ワインの価格が4000円未満=安価なワイン • 安価=産地平均価格が4000円未満=安価な産地 データベースシステム論 第 回2015 [ 7 ] 4p. SELECT did, round(avg(price)) FROM wine WHERE price < 4000 GROUP BY did ORDER BY round DESC; SELECT did, round(avg(price)) FROM wine GROUP BY did HAVING avg(price) < 4000 ORDER BY round DESC; did | round -----+------- C | 2800 A | 2700 B | 2200 did | round -----+------- C | 2800 A | 2700
  5. 5. 考え方の一例 • 4000円”以下”で考えてみよう • 安価=ワインの価格が4000円以下=安価なワイン • 安価=産地平均価格が4000円以下=安価な産地 データベースシステム論 第 回2015 [ 7 ] 5p. SELECT did, round(avg(price)) FROM wine WHERE price <= 4000 GROUP BY did ORDER BY round DESC; SELECT did, round(avg(price)) FROM wine GROUP BY did HAVING avg(price) <= 4000 ORDER BY round DESC; did | round -----+------- D | 4000 C | 2800 A | 2700 B | 2200 did | round -----+------- B | 4000 D | 4000 C | 2800 A | 2700 wID name dID price 3 サンテミリオン B 5800 4 オーメドック B 2200
  6. 6. データベースシステム論 第8回 SQL応用演習 結合演算とその他 データベースシステム論 第 回2015 [ 8 ] 6p.
  7. 7. 結合演算 • 基本的な書き方 • テーブルt1とテーブルt2の結合 • 結合条件:カラムc1とカラムc2が等しい データベースシステム論 第 回2015 [ 8 ] 7p. SELECT * FROM t1 JOIN t2 ON t1.c1 = t2.c2; SELECT * FROM テーブル名 [結合方法] テーブル名 ON [結合条件];
  8. 8. 結合演算 - 例 • ワインの産地を表示したい データベースシステム論 第 回2015 [ 8 ] 8p. SELECT * FROM wine JOIN vineyard ON wine.did = vineyard.did; dbsys=# select * from wine join vineyard on wine.did = vineyard.did; wid | name | did | price | did | district -----+------------------------+-----+-------+-----+---------------- 1 | シャブリ | A | 2400 | A | ブルゴーニュ 2 | ジュヴレシャンベルタン | A | 3000 | A | ブルゴーニュ 3 | サンテミリオン | B | 5800 | B | ボルドー 4 | オーメドック | B | 2200 | B | ボルドー 5 | サンセール | C | 2800 | C | ロワール 6 | シャンパン | D | 4000 | D | シャンパーニュ (6 行) wineテーブル vineyardテーブル
  9. 9. 結合演算 - 例 • ワインの産地を表示したい データベースシステム論 第 回2015 [ 8 ] 9p. SELECT * FROM wine JOIN vineyard ON wine.did = vineyard.did; dbsys=# select * from wine join vineyard on wine.did = vineyard.did; wid | name | did | price | did | district -----+------------------------+-----+-------+-----+---------------- 1 | シャブリ | A | 2400 | A | ブルゴーニュ 2 | ジュヴレシャンベルタン | A | 3000 | A | ブルゴーニュ 3 | サンテミリオン | B | 5800 | B | ボルドー 4 | オーメドック | B | 2200 | B | ボルドー 5 | サンセール | C | 2800 | C | ロワール 6 | シャンパン | D | 4000 | D | シャンパーニュ (6 行) wineテーブル vineyardテーブル 何結合? 内部結合 INNER JOIN
  10. 10. 結合演算 - 例続き • 射影演算にてカラムを整理する データベースシステム論 第 回2015 [ 8 ] 10p. SELECT wid, name, district, price FROM wine JOIN vineyard ON wine.did = vineyard.did; dbsys=# SELECT wid, name, district, price dbsys-# FROM wine JOIN vineyard dbsys-# ON wine.did = vineyard.did; wid | name | district | price -----+------------------------+----------------+------- 1 | シャブリ | ブルゴーニュ | 2400 2 | ジュヴレシャンベルタン | ブルゴーニュ | 3000 3 | サンテミリオン | ボルドー | 5800 4 | オーメドック | ボルドー | 2200 5 | サンセール | ロワール | 2800 6 | シャンパン | シャンパーニュ | 4000 (6 行)
  11. 11. 結合演算 - 例続き2 • didも出してみよう! データベースシステム論 第 回2015 [ 8 ] 11p. SELECT wid, name, did, district, price FROM wine JOIN vineyard ON wine.did = vineyard.did; dbsys=# SELECT wid, name, did, district, price dbsys-# FROM wine JOIN vineyard dbsys-# ON wine.did = vineyard.did; ERROR: 列参照"did"は曖昧です 行 1: SELECT wid, name, did, district, price 結合するテーブル双方に存在するカラ ムを含める場合、どちらのテーブルの カラムの事かを明示的に示さなければ ならない。※今回の場合はどちらのテーブルでも同じ事ですが… FAIL!! SELECT wid, name, wine.did, district, price …
  12. 12. 自然結合 - 例 • 外部キー同士のカラム名が同じなら自然結合を 使えば楽に(結合条件無しに)SQLを書けます データベースシステム論 第 回2015 [ 8 ] 12p. SELECT * FROM wine NATURAL JOIN vineyard; did | wid | name | price | district -----+-----+------------------------+-------+---------------- A | 1 | シャブリ | 2400 | ブルゴーニュ A | 2 | ジュヴレシャンベルタン | 3000 | ブルゴーニュ B | 3 | サンテミリオン | 5800 | ボルドー B | 4 | オーメドック | 2200 | ボルドー C | 5 | サンセール | 2800 | ロワール D | 6 | シャンパン | 4000 | シャンパーニュ (6 行)
  13. 13. 外部結合 - 試行課題2(提出無) • 結果が違うのはどれ?そしてなぜ? データベースシステム論 第 回2015 [ 8 ] 13p. SELECT wid, name, district, price FROM wine [LEFT|FULL|RIGHT] JOIN vineyard ON wine.did = vineyard.did; wID name dID price 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 dID district A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ wine vineyard
  14. 14. 外部結合 - 試行課題2 • wine LEFT JOIN vineyard • ●にある行を全て得る • wine FULL JOIN vineyard • ●と●にある行を全て得る • wine RIGHT JOIN vineyard • ●にある行を全て得る データベースシステム論 第 回2015 [ 8 ] 14p. wID name dID price 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 dID district A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ wine vineyard A B C D E 右左 • 対応する行がwineに無い • NULLで埋まる
  15. 15. 外部結合 - 試行課題2 • wine LEFT JOIN vineyard • ●にある行を全て得る • wine FULL JOIN vineyard • ●と●にある行を全て得る • wine RIGHT JOIN vineyard • ●にある行を全て得る データベースシステム論 第 回2015 [ 8 ] 15p. wID name dID price 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 dID district A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ wine vineyard A B C D E 右左 • 対応する行がwineに無い • NULLで埋まる wid | name | district | price -----+------------------------+----------------+------- 1 | シャブリ | ブルゴーニュ | 2400 2 | ジュヴレシャンベルタン | ブルゴーニュ | 3000 3 | サンテミリオン | ボルドー | 5800 4 | オーメドック | ボルドー | 2200 5 | サンセール | ロワール | 2800 6 | シャンパン | シャンパーニュ | 4000 | | チリ | (7 行)
  16. 16. 外部結合の意味を考えよう データベースシステム論 第 回2015 [ 8 ] 16p. wid | name | district | price -----+------------------------+----------------+------- 1 | シャブリ | ブルゴーニュ | 2400 2 | ジュヴレシャンベルタン | ブルゴーニュ | 3000 3 | サンテミリオン | ボルドー | 5800 4 | オーメドック | ボルドー | 2200 5 | サンセール | ロワール | 2800 6 | シャンパン | シャンパーニュ | 4000 | | チリ | (7 行) 内部結合の場合、「何を持っているか」 は分かるが、「何を持っていないか」が 分からない。外部結合の場合は持ってい ないモノも結果に表れる。
  17. 17. SELECT wid, name, district, price FROM wine RIGHT JOIN vineyard ON wine.did = vineyard.did WHERE wid = NULL; 上手くいった? 外部結合 - 例2 • 持っていないもののみを出そう! データベースシステム論 第 回2015 [ 8 ] 17p. wid | name | district | price -----+------------------------+----------------+------- <<<<<省略>>>>> 6 | シャンパン | シャンパーニュ | 4000 | | チリ | (7 行) SELECT wid, name, district, price FROM wine RIGHT JOIN vineyard ON wine.did = vineyard.did WHERE wid IS NULL; wid | name | district | price -----+------+----------+------- | | チリ | NULL NULL NULL NULLの検証にはIS NULL、IS NOT NULLを使います。
  18. 18. 外部結合 - 例2 • 持っていないもののみを出そう! データベースシステム論 第 回2015 [ 8 ] 18p. wid | name | district | price -----+------------------------+----------------+------- <<<<<省略>>>>> 6 | シャンパン | シャンパーニュ | 4000 | | チリ | (7 行) SELECT wid, name, district, price FROM wine RIGHT JOIN vineyard ON wine.did = vineyard.did WHERE wid IS NULL; wid | name | district | price -----+------+----------+------- | | チリ | NULL NULL NULL NULLの検証にはIS NULL、IS NOT NULLを使います。 •余談 • 何故 wid = NULL がダメ? • NULLは不明値 「不明値=不明値」が成り 立つかどうか自体が不明 不謹慎な例ですが、AさんとBさんが行方不明だとして、Aさんと Bさんが同じ所にいる可能性は「不明」ですよね??
  19. 19. アンチ結合 - 例 • 「何をもっていないか」を出すもう1つの方法 としてアンチ結合があります。ただし、SQLの JOIN句としてサポートされていないので少々 複雑な書き方となります。 データベースシステム論 第 回2015 [ 8 ] 19p. SELECT * FROM vineyard WHERE NOT EXISTS ( SELECT NULL FROM wine WHERE vineyard.did = wine.did); did | district -----+---------- E | チリ (1 行)
  20. 20. アンチ結合 - 例 • 「何をもっていないか」を出すもう1つの方法 としてアンチ結合があります。ただし、SQLの JOIN句としてサポートされていないので少々 複雑な書き方となります。 データベースシステム論 第 回2015 [ 8 ] 20p. SELECT * FROM vineyard WHERE NOT EXISTS ( SELECT NULL FROM wine WHERE vineyard.did = wine.did); did | district -----+---------- E | チリ (1 行) ? ? ?
  21. 21. 副問い合わせ (Sub query) • ある問い合わせの中で定義される問い合わせ。 • ネストされた問い合わせにおける主・副関係 • 副問い合わせが定義できる箇所 • 単一の値を与える所 (スカラー副問い合わせ) • 単一の表を与える所←さっきの例 • 副問い合わせの種類 • 主問い合わせを参照しない副問い合わせ • 主問い合わせを参照する副問い合わせ (相関副問い合わせ) データベースシステム論 第 回2015 [ 8 ] 21p.
  22. 22. スカラー副問い合わせ - 例 • 価格の一番安いワイン データベースシステム論 第 回2015 [ 8 ] 22p. SELECT * FROM wine WHERE price= ( SELECT min(price) FROM wine); dbsys=# SELECT * FROM wine dbsys-# WHERE wid = ( dbsys(# SELECT min(wid) FROM wine); wid | name | did | price -----+--------------+-----+------- 4 | オーメドック | B | 2200(1 行)
  23. 23. 試行課題3 考えてみよう! • 一番安いワインは次の問い合わせでもOKでは? データベースシステム論 第 回2015 [ 8 ] 23p. SELECT * FROM wine ORDER BY price LIMIT 1; 最初のn件を出す SELECT * FROM wine WHERE price= ( SELECT min(price) FROM wine); 例のテーブルでは同じ結果を得ますが。これはたまたまです。 さて、この二つの問い合わせは何が異なっているでしょうか。 考えてみましょう。
  24. 24. 試行課題3 考えてみよう! • 一番安いワインは次の問い合わせでもOKでは? データベースシステム論 第 回2015 [ 8 ] 24p. SELECT * FROM wine ORDER BY price LIMIT 1; 最初のn件を出す SELECT * FROM wine WHERE price= ( SELECT min(price) FROM wine); 答えのヒント! もし最安値で二種類以上のワインがあったら?
  25. 25. 相関副問い合わせ - 例 • 産地毎の一番安いワイン データベースシステム論 第 回2015 [ 8 ] 25p. SELECT * FROM wine AS x WHERE price = ( SELECT min(price) FROM wine AS y GROUP BY did HAVING x.did = y.did); 主問い合わせを参照する副問い合わせ min ------ 4000 2200 2800 2400 D B C A did オーメドック シャンパン サンセール シャブリ wid | name | did | price -----+--------------+-----+------- 1 | シャブリ | A | 2400 4 | オーメドック | B | 2200 5 | サンセール | C | 2800 6 | シャンパン | D | 4000
  26. 26. IN句、NOT IN句 • 右辺は括弧で括られた副問い合わせ • 一列のみを返す式でないとならない • 左辺が右辺副問い合わせの結果行のどれかと等 しい場合「真」となる。(NOT INはその逆) データベースシステム論 第 回2015 [ 8 ] 26p. mainquery WHERE 左辺 [NOT] IN subquery SELECT * FROM vineyard WHERE did NOT IN (SELECT DISTINCT did FROM wine); IN句と似たような使い方の句とし てSOME(ANY)句、ALL句があります。 これらは教科書を見てください。
  27. 27. EXISTS句、NOT EXISTS句 • 引数は副問い合わせ文 • IN句と似ているが、実行順が異なる • IN句:副問い合わせが先に実行される • 副問い合わせの結果行毎ループで主問い合わせが評価 • EXISTS句:主問い合わせが先に実行される • 主問い合わせのループ毎にサブクエリが評価 ※ただし”実際の”実行順はDBMSが決定するため最適化機構が働い て、効率の良い実行プランが選択される。 データベースシステム論 第 回2015 [ 8 ] 27p. mainquery WHERE [NOT] EXISTS (subquery)
  28. 28. アンチ結合の例に戻りましょう • EXISTS句:主問い合わせが先に実行される データベースシステム論 第 回2015 [ 8 ] 28p. SELECT * FROM vineyard WHERE NOT EXISTS ( SELECT NULL FROM wine WHERE vineyard.did = wine.did); • vineyardを副問い合わせで参照している • →相関副問い合わせ dID district A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ vineyard 「wineテーブルにありますか?」「EXISTS!」 「wineテーブルにありますか?」「EXISTS!」 「wineテーブルにありますか?」「EXISTS!」 「wineテーブルにありますか?」「EXISTS!」 「wineテーブルにありますか?」「NOT EXISTS!」 did | district -----+---------- E | チリ (1 行)
  29. 29. アンチ結合をNOT IN句で書く • IN句:副問い合わせが先に実行される データベースシステム論 第 回2015 [ 8 ] 29p. SELECT * FROM vineyard WHERE did NOT IN( SELECT DISTINCT did FROM wine); did | district -----+---------- E | チリ (1 行) wID name dID price 1 シャブリ A 2400 2 ジュヴレシャンベルタン A 3000 3 サンテミリオン B 5800 4 オーメドック B 2200 5 サンセール C 2800 6 シャンパン D 4000 wine dID A B C D subquery dID district A ブルゴーニュ B ボルドー C ロワール D シャンパーニュ E チリ vineyard 無いっ!
  30. 30. 和演算 • UNION句、UNION ALL句 • スキーマが同一のテーブルを縦方向につなげる • やってみよう!違いは何? データベースシステム論 第 回2015 [ 8 ] 30p. SELECT * FROMテーブル名1 UNION [ALL] SELECT * FROMテーブル名2 SELECT * FROM wine UNION SELECT * FROM wine; SELECT * FROM wine UNION ALL SELECT * FROM wine;
  31. 31. 結果の一部表示 • LIMIT句、OFFSET句 • 結果中m番目からn行表示する • ORDER BY句と一緒に使用する データベースシステム論 第 回2015 [ 8 ] 31p. SELECT * FROMテーブル名 ORDER BYソートの基準列 [並び方],… LIMIT n OFFSET m; SELECT * FROM wine ORDER BY price desc LIMIT 2 OFFSET 3;
  32. 32. 小休止・・・ • SQLの役割 • データ定義言語 • テーブルの作成 (CREATE TABLE)前々回 • ビューの作成 (CREATE VIEW) • データ操作言語 • タプルの挿入・削除・変更 (INSERT, DELETE, UPDATE)前々回 • 問い合わせ (SELECT)前回・今回 • データ制御言語 • トランザクション管理 (BEGIN, ROLLBACK)あとで • ユーザ管理とセキュリティ (GRANT, REVOKE) データベースシステム論 第 回2015 [ 8 ] 32p.
  33. 33. データベースシステム論 演習3 課題+コメントペーパー データベースシステム論 第 回2015 [ 8 ] 33p.
  34. 34. 提出課題3 IN句・EXISTS句 • 以下の問い合わせのSQL文を作成せよ。 • ただし以下の3通りのクエリを作れ • IN句を使って表す • EXISTS句を使って表す • スカラー副問い合わせを使って表す • 提出物 • 各SQLとその出力結果 • 出力結果は当然全て同じものでなければならない データベースシステム論 第 回2015 [ 8 ] 34p. (全ワインの)平均価格未満のワインを1つで も持つ産地のdidと産地名(distinct)を表示せよ
  35. 35. コメントペーパー • この講義に関する感想や要望を自由に書いて提 出してください。 • 書かれた内容は成績には一切影響させませんの で、率直に書いてください。 • もらった意見のうち、以降の講義に活かせるも のに関しては極力対応していきますし、また来 年度以降の講義内容のブラッシュアップに活用 します。 • 提出方法 • 学務情報システムを通して回答 データベースシステム論 第 回2015 [ 8 ] 35p.
  36. 36. 次回予告 第9回 SQL応用演習2 ビューとトリガ、アクセス権 データベースシステム論 第 回2015 [ 8 ] 36p.
  37. 37. 第9回 SQL応用演習2 • SQL演習の最後にビュー作成し、それを更新可 能にしましょう。またGRANT文とビューを使い、 データへのアクセス権の概念を学びます。 • 来週学ぶこと • ビューの作成 • 更新可能ビュー • アクセス権 • 予習 • 対応箇所:SQL関連の章 • 関連個所:SQL全般 データベースシステム論 第 回2015 [ 8 ] 37p.

×