7. 結合

628 Views

January 12, 22

スライド概要

リレーショナルデータベースの基本(スライド資料とプログラム例)
https://www.kkaneko.jp/de/ds/index.html


ds-1. データベースとは,データベースシステムとは,情報とデータ
ds-2. SQL,SQL のデータ型,テーブル定義,問い合わせ(クエリ)
ds-3. ER 図,関連,異状, テーブル分解
ds-4. 問い合わせ(クエリ)
ds-5. 集計・集約
ds-6. 並べ替え(ソート)
ds-7. 結合
ds-8. データベースの異状,分解と結合
ds-9. 主キー,参照整合性制約,従属
ds-10. 中間まとめ,データベースの応用,データベースの種類
ds-11. SQL のIN,副問い合わせ
ds-12. データベースの AND,OR,NOT
ds-13. データベース操作,トランザクション,リカバリ,ロック,同時実行制御
ds-14. 従属,正規形,正規化
ds-15. さまざまなデータベース

YouTube 再生リスト「リレーショナルデータベースの基本」
https://youtube.com/playlist?list=PLwoDcGBEg9WGKPP6dExr8DcUf9nV2kYGD

金子邦彦研究室ホームページ:
https://www.kkaneko.jp/index.html

profile-image

金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

7. 結合 URL: https://www.kkaneko.jp/de/ds/index.html 金子邦彦 謝辞:この資料では「いらすとや」のイラストを使用しています 1

2.

2つのテーブルを結合し1つに 2

3.

リレーショナルデータベースシステム データベースシステムの一種 コンピュータ 記憶 装置 リレーショナル リレーショナル データベース データベース 管理システム たくさんのテーブルが格納される あわせて リレーショナルデータベースシステム 3

4.

問い合わせ(クエリ)の仕組み 問い合わせ(クエリ) の結果は,テーブル形式の データ 問い合わせ (クエリ) のコマンド リレーショナル データベースシステム データの種類ごとに分かれ た、たくさんのテーブル 4

5.

Access で SQLビューを開く. ①「作成」タブで、 「クエリデザイン」 をクリック このような 表示が出た ときは 「閉じる」を クリック ②「デザイン」タブで、 「表示」を展開し「SQL ビュー」を選ぶ 5

6.

アウトライン 番号 項目 説明時間の 目安 7-1 結合 4分 7-2 SQL での結合の書き方 14分 7-3 結合に関する演習 4分 7-4 実データを用いた演習 13分 6

7.

全体まとめ • 結合: 2つのテーブルを1つにまとめる SELECT * FROM S, T ・・・ 結合条件なしで S と T を結合 2行のテーブル 3行のテーブル 2×3で,6行のテーブル • 結合条件 SELECT * FROM S, T WHERE a = b; ・・・ 結合条件は「a = b」 7

8.

7-1. 結合 8

9.

結合はどういう場合に役に立つのか 違うテーブルに分かれているデータを,1つにま とめたいとき • 結合は2つのテーブルを1つにまとめる • 結合を繰り返すことにより,3つ以上のテーブル を1つにまとめることも可能 データベースの異状の解決とも関係する(次回説 明) 9

10.

商品 商品 ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 10

11.

購入 購入 購入者 商品番号 X 1 X 3 Y 2 11

12.

「商品」と「購入」の関連 商品 ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 購入 購入者 商品番号 X 1 X 3 Y 2 Xさんは、1 のみかんと, 3 のメロンを買った Yさんは、 2 のりんごを買った 購入テーブルの情報 商品テーブルの情報 12

13.

「商品」と「購入」の結合 商品 ID 購入者 商品番号 購入 X 1 X 3 Y 2 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 商品名 ID ペアは9通り 結合の結果 ⇒ (結合条件が無い場合) SELECT * FROM 商品, 購入; 単価 購入者 商品番号 1 みかん 50 X 1 1 みかん 50 X 3 1 みかん 50 Y 2 2 りんご 100 X 1 2 りんご 100 X 3 2 りんご 100 Y 2 3 メロン 500 X 1 3 メロン 500 X 3 3 メロン 500 Y 2 13

14.

「商品」と「購入」の結合 商品 ID 購入者 商品番号 購入 X 1 X 3 Y 2 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 結合条件があると 選択が行われる ⇒ 商品名 ID 単価 購入者 商品番号 1 みかん 50 X 1 2 りんご 100 Y 2 3 メロン 500 X 3 SELECT * FROM 商品, 購入 WHERE ID = 商品番号; 14

15.

ペア の取り扱い A B C 1 2 リレーショナルデータベースでは A A B B C C 1 2 1 2 1 2 結合は、 この考え方を ベースにしている 15

16.

結合(結合条件なし) SQL SELECT * FROM 商品, 購入; 商品 ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 購入 購入者 商品番号 X 1 X Y 3 2 商品名 ID 結合 単価 購入者 商品番号 1 みかん 50 X 1 1 みかん 50 X 3 1 みかん 50 Y 2 2 りんご 100 X 1 2 りんご 100 X 3 2 りんご 100 Y 2 3 メロン 500 X 1 3 メロン 500 X 3 3 メロン 500 Y 2 結果 16

17.

結合(結合条件あり) SQL 商品 ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 SELECT * FROM 商品, 購入 WHERE ID = 商品番号; 購入 購入者 商品番号 X 1 X Y 3 2 商品名 ID 結合 結合条件 単価 購入者 商品番号 1 みかん 50 X 1 2 りんご 100 Y 2 3 メロン 500 X 3 結果 17

18.

まとめ 結合は、2つのテーブルを、1つにまとめる. 結合条件が付く場合がある. 商品 ID テーブル 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 新しい テーブル 購入 購入者 テーブル 商品番号 X 1 X Y 3 2 結合 18

19.

7-2. SQL での結合の書き方 19

20.

SQL での結合の書き方 ■ 結合条件なし SELECT ○, ○, ○ FROM <結合したいテーブル名>; ■ 結合条件あり SELECT ○, ○, ○ FROM <結合したいテーブル名> WHERE 結合条件; その他付け加えることもある 20

21.

結合(結合条件なし) 結合は,2つのテーブルの行(レコード)の すべてのペアを作る SQL SELECT * FROM 商品, 購入; 商品 ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 購入 購入者 商品番号 X 1 X Y 3 2 商品名 ID 結合 単価 購入者 商品番号 1 みかん 50 X 1 1 みかん 50 X 3 1 みかん 50 Y 2 2 りんご 100 X 1 2 りんご 100 X 3 2 りんご 100 Y 2 3 メロン 500 X 1 3 メロン 500 X 3 3 メロン 500 Y 2 結果 21

22.

結合(結合条件あり) 結合条件があるときは、選択が行われる SQL 商品 ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 SELECT * FROM 商品, 購入 WHERE ID = 商品番号; 購入 購入者 商品番号 X X 1 3 Y 2 商品名 ID 結合 結合条件 単価 購入者 商品番号 1 みかん 50 X 1 2 りんご 100 Y 2 3 メロン 500 X 3 結果 22

23.

SQL での結合条件の書き方 • 結合したいテーブル(複数)で、同じ属性名があ る場合の書き方 SELECT 名前, 購入者 FROM 商品, 購入 WHERE 商品.ID = 購入.商品ID; ← この部分を結合条件という 結合条件の書き方 <テーブル名>.<属性名> = <テーブル名>.<属性名> ※ 他のテーブルに同じ属性名が無いときは、「テーブル名」を省略可 ※ 「=」のところは: =, <>, <, <=, >, >= が可能 23

24.

全体まとめ • 結合: 2つのテーブルを1つにまとめる SELECT * FROM S, T ・・・ 結合条件なしで S と T を結合 2行のテーブル 3行のテーブル 2×3で,6行のテーブル • 結合条件 SELECT * FROM S, T WHERE a = b; ・・・ 結合条件は「a = b」 24

25.

7-3. 結合に関する演習 25

26.

演習用のデータベースファイル • 演習用の Access データベースファイル セレッソの利用者は,セレッソからもダウンロード可能 ファイル名: db7-3.accdb • 「コンテンツの有効化」のメッセージが出たときは、確認 のうえ、次にすすむ • つぎのような表示が出たときは、確認のうえ、「はい」 26

27.

• 次の2つのテーブルの関する演習 テーブル T テーブル S 上の2つのテーブルはすでに作成済みである。 27

28.

① 次の SQL の結果を実行し,結果を確認 SELECT * FROM T, S; テーブル T テーブル S 28

29.

② 次の SQL の結果を実行し,結果を確認 SELECT a FROM T, S; 29

30.

③ 次の SQL の結果を実行し,結果を確認 SELECT * FROM T, S WHERE a = b; 30

31.

7-4. 実データを用いた演習 31

32.

演習で行うこと 前の演習と同じデータベースを使用 ①,② 選択を行う SQL (復習) ③,④ 結合条件有りの結合 ③,④では,次の2つのテーブルを結合する テーブル名: 米国成人調査データ テーブル名:対象国 32

33.

実演・実習で使うデータベース 米国成人調査データ (1994年、米国における統計調査データのうち 32561 人分) ※ このデータを使います (演習では、特定の職業、学歴、性別、母国を差別的に見ないようにしてください) データの出典:Lichman, M. (2013). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science (米国) 33

34.

米国成人調査データ 34

35.

① 選択 (まだ結合しない) SELECT * FROM 米国成人調査データ WHERE 母国 = '日本'; ・空白文字や *は半角 ・「;」は最後にだけ 35

36.

② 選択 (まだ結合しない) SELECT * FROM 米国成人調査データ WHERE 母国 = '日本' or 母国 = 'インド'; ・空白文字や *は半角 ・「;」は最後にだけ 選択(結果は 162行) 36

37.

③ 結合条件ありの結合 SELECT * FROM 米国成人調査データ, 対象国 WHERE 母国 = 名前; ・空白文字や *は半角 ・「;」は最後にだけ (結果は 162行) 37

38.

④ 結合条件ありの結合 • 「対象国」のテーブルを次のように書き換え • 前のページと同じ SQL を再度実行 SELECT * FROM 米国成人調査データ, 対象国 WHERE 母国 = 名前; • 結果は,どのように変わるか,各自で確認 38

39.

全体まとめ • 結合: 2つのテーブルを1つにまとめる SELECT * FROM S, T ・・・ 結合条件なしで S と T を結合 2行のテーブル 3行のテーブル 2×3で,6行のテーブル • 結合条件 SELECT * FROM S, T WHERE a = b; ・・・ 結合条件は「a = b」 39