7. 結合

263 Views

January 12, 22

スライド概要

(リレーショナルデータベースの基本)(全15回)
URL: https://www.kkaneko.jp/cc/ds/index.html

profile-image

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

シェア

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

各ページのテキスト
1.

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

2.

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

3.

リレーショナルデータベースでの結合 米国成人調査データ 次のテーブルと結合. 結合条件も付ける 結合の結果は1つの テーブル.日本と インドについてのみ 3

4.

今日の内容 • 結合と結合条件について知る • SQL を用いた結合の方法を知る from のところに複数のテーブル名を書く. where のところに結合条件を書くことができる. 4

5.

7-1. 結合 5

6.

結合の例 コマンド SELECT * FROM 商品, 購入; 商品 ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 購入 購入者 商品番号 X X 1 3 Y 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 結果 6

7.

結合のバリエーション コマンド SELECT * FROM 商品, 購入 商品 ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 WHERE ID = 商品番号; 購入 購入者 商品番号 X X 1 3 Y 2 商品名 ID 結合 結合条件 単価 購入者 商品番号 1 みかん 50 X 1 2 りんご 100 Y 2 3 メロン 500 X 3 結果 7

8.

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

9.

7-2. SQL での結合 9

10.

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

11.

結合は 1.2つのテーブルの行(レコード)のすべてのペアを作る 結合とは 2.結合条件があるときは、選択が行われる SELECT * FROM 商品, 購入 商品 ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 WHERE ID = 商品番号; 購入 購入者 商品番号 X X 1 3 Y 2 商品名 ID 結合 結合条件 単価 購入者 商品番号 1 みかん 50 X 1 2 りんご 100 Y 2 3 メロン 500 X 3 結果 11

12.

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

13.

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

14.

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

15.

「商品」と「購入」の結合 商品 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 15

16.

「商品」と「購入」の結合 商品 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 = 商品番号; 16

17.

SQL での結合の書き方 select ○, ○, ○ from <結合したいテーブル名> where 結合条件 その他の条件などを付け加えることもある 17

18.

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

19.

7-3. Access を用いた結合の実 演・実習 19

20.

実演・実習で使うデータベース 米国成人調査データ (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 (米国) 20

21.

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

22.

米国成人調査データ 22

23.

SELECT * FROM 米国成人調査データ WHERE 母国 = '日本'; ・空白文字や *は半角 ・「;」は最後にだけ 選択 23

24.

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

25.

次のテーブルを使う テーブル名:対象国 25

26.

SELECT * FROM 米国成人調査データ, 対象国 WHERE 母国 = 名前; ・空白文字や *は半角 ・「;」は最後にだけ 結合(結果は 162行) 前との違いは「名前」の列が増えただけ 26

27.

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

28.

7-4. 結合に関する演習 28

29.

次の2つのテーブルがある テーブル T テーブル S 次の SQL の結果は何か? SELECT * FROM T, S; 29

30.

次の2つのテーブルがある テーブル T テーブル S 次の SQL の結果は何か? SELECT a FROM T, S; 30

31.

次の2つのテーブルがある テーブル T テーブル S 次の SQL の結果は何か? SELECT * FROM T, S WHERE a = b; 31

32.

関連資料 • リレーショナルデータベース序論(全4回) 全体を知る. https://www.kkaneko.jp/cc/di/index.html • リレーショナルデータベースの基本(全15回) 基礎を学ぶ. https://www.kkaneko.jp/cc/ds/index.html • リレーショナルデータベース演習(全15回) 演習により修得する. https://www.kkaneko.jp/cc/de/index.html 32