11. SQL の IN,副問い合わせ

>100 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.

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

2.

アウトライン 番号 項目 説明時間の 目安 11-1 SQL の IN 4分 11-2 Access, MySQL を用いた IN の実演・実習 8分 11-3 SQL の副問い合わせ 5分 11-4 Access, MySQL を用いた副問い合わせの 実演・実習 8分 2

3.

11-1. SQL の IN 3

4.

SQL での条件 • 比較 (= など) SELECT * FROM 授業 WHERE 教室名 = '一階'; • パターンマッチ (LIKE) SELECT * FROM 授業 WHERE 教室名 LIKE '%階'; Access では % でなく * • 複数の値との比較(IN) SELECT * FROM 授業 WHERE 教室名 IN ('一階', '二階'); • 条件は、複数を AND や OR でつなげることができる SELECT * FROM 授業 WHERE 教室名 = '一階' OR 教室名 = '二階'; 4

5.

SQL の IN 複数の値と比較. そのうち1つの値でも一致すれば、条件に合致 SELECT * FROM 授業 WHERE 教室名 IN ('一階', '二階'); 半角丸かっこ で囲む 半角の カンマ 半角丸かっこ で囲む 5

6.

11-2. Access, MySQL を用いた IN の実 演・実習 6

7.

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

8.

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

9.

米国成人調査データ 「購入記録」はあとで使う 9

10.

SELECT * FROM 米国成人調査データ WHERE 教育 IN ('10th', '11th'); 選択 10

11.

SELECT * FROM 米国成人調査データ WHERE 母国 IN ('インド', 'メキシコ'); 選択 11

12.

Paiza.IO を用いた実演・実習 ① URL は https://paiza.io/ja ② 「コード作成を試してみる」をクリック ③ 「MySQL」を選ぶ 次ページへ続く 12

13.

• 次の SQL を入れ,実行結果を確認 13

14.

11-3. SQL の副問い合わせ 14

15.

副問い合わせ 問い合わせの結果を、別の問い合わせで使う 成績テーブル 科目名 データベース 数学 101 の受講科目 SELECT 科目名 FROM 成績 WHERE 学生番号 = 101; 学生番号 101 102 103 データベース、数学 のどちらかでも受講 しているのは? SELECT DISTINCT 学生番号 FROM 成績 WHERE 科目名 IN (SELECT 科目名 FROM 成績 WHERE 学生番号 = 101); 15

16.

11-4. Access, MySQL を用いた副問い合 わせの実演・実習 16

17.

成績テーブル 学生番号 101 101 102 102 103 201 202 科目名 データベース 数学 データベース プログラミング データベース 歴史 地理 得点 90 80 85 100 95 90 90 17

18.

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

19.

SELECT 科目名 FROM 成績 WHERE 学生番号 = 101; 単純な問い合わせ 19

20.

SELECT DISTINCT 学生番号 FROM 成績 WHERE 科目名 IN (SELECT 科目名 FROM 成績 WHERE 学生番号 = 101); 副問い合わせ 20

21.

SELECT DISTINCT 学生番号 FROM 成績 WHERE 科目名 IN ('データベース', '数学'); 単純な問い合わせ 21

22.

SELECT MAX (得点) FROM 成績; 単純な問い合わせ 最高点 22

23.

SELECT 学生番号 FROM 成績 WHERE 得点 IN (SELECT MAX (得点) FROM 成績); 副問い合わせ 最高点をとった学生 23

24.

副問い合わせ 副問い合わせでは、 問い合わせの結果を、別の問い合わせで使う SELECT MAX (得点) FROM 成績; SELECT 学生番号 FROM 成績 WHERE 得点 IN (SELECT MAX (得点) FROM 成績); 24

25.

副問い合わせの書き方 • 書き方1 (副問い合わせの答えが必ず1つの場合) SELECT ・・・ FROM ・・・ WHERE ・・・ = ( SELECT ・・・ FROM ・・・ WHERE ・・・); • 書き方2 (副問い合わせの答えが2つ以上になる可能性がある場合) SELECT ・・・ FROM ・・・ WHERE ・・・ IN ( SELECT ・・・ FROM ・・・ WHERE ・・・); 25

26.

Paiza.IO を用いた実演・実習 ① URL は https://paiza.io/ja ② 「コード作成を試してみる」をクリック ③ 「MySQL」を選ぶ 次ページへ続く 26

27.

• 次の SQL を入れる。次のページに続く 27

28.

• 次の SQL を入れる。次のページに続く 28

29.

• 実行結果を確認 29

30.

関連資料 • リレーショナルデータベース序論(全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 30