10. データベースの NULL, AND, OR

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

10. データベースの NULL, AND, OR URL: https://www.kkaneko.jp/cc/ds/index.html 金子邦彦 謝辞:この資料では「いらすとや」のイラストを使用しています 1

2.

アウトライン 番号 項目 説明時間の 目安 10-1 データベースの NULL 5分 10-2 Access , MySQL を用いた NULL の実演・ 実習 12 分 10-3 AND と OR 5分 10-4 Access, MySQL を用いた AND と OR の実 演・実習 18 分 各自、資料を読み返したり、課題に取り組んだりも行う 2

3.

今日の内容 • NULL, IS NULL, IS NOT NULL の使用 未定、未知、存在しない場合は NULL NULL であるかないかの条件で SQL 問い合わせ を行うときは IS NULL, IS NOT NULL を使う • AND, OR の使用 2つの条件を AND, OR でつなげることができる select CUST_ID, COST from ORDERS where COST >10 AND COST <100; ※ なお、「 where COST >10 AND COST <100」の代わりに BETWEEN を使うこともできる select CUST_ID, COST from ORDERS where COST BETWEEN 10 and 100; 3

4.

10-1. データベースの NULL 4

5.

データベースの NULL • データ化できないものは、NULL 未定 (将来決まるかも) 未知 (将来分かるかも) 存在しない (そもそも存在しない) 自由席の切符に座席番号は存在しない 試合をしていないとき勝率は存在しない NULL は「ヌル」あるいは「ナル」と読む 5

6.

NULL を使う例(1) • カレーライスの値段が,まだ決まっていない(未 定) 商品 かき氷 カレーライス サイダー 価格 400 NULL 200 値段は,必ず決まるはずだが, まだ決まっていない 6

7.

NULL を使う例(2) • 試合をしていないので,勝率は存在しない チーム名 試合数 勝ち数 A 10 6 B 4 3 C 0 0 勝率 0.6 0.75 NULL 試合をしていないので, 勝率は存在しない 7

8.

NULLと「0」は違う 商品 かき氷 カレーライス サイダー 価格 400 NULL 200 値段は,まだ決まっていない あるいは,知らない 商品 かき氷 カレーライス サイダー 価格 400 0 200 カレーライスは無料 NULL を使い,未定,未知,非存在であること を正しく記録 8

9.

NULLと「0」は違う • 試合をしていないので,勝率は存在しない(非存 在) チーム 試合数 勝ち 名 数 A 10 6 B 4 3 C 0 0 勝率 0.6 0.75 NULL 試合をしていないので, 勝率は存在しない チーム 試合数 勝ち 名 数 A 10 6 B 4 3 C 0 0 勝率 0.6 0.75 0 勝率が 0 であると記録 するのは,そもそもおかしい 9

10.

10-2. Access, MySQL を用いた NULL の実演・実習 10

11.

SQL で NULL についての条件を扱うとき • 「NULL である」という条件: IS NULL • 「NULL でない」という条件: IS NOT NULL 11

12.

IS NULL テーブル名: T 商品 かき氷 カレーライス サイダー 価格 400 NULL 200 paiza.IO マイクロソフト Access select * マイクロソフト Access from T では NULL が空文字で where 価格 IS NULL; 表示されるので注意 12

13.

IS NOT NULL テーブル名: T 商品 かき氷 カレーライス サイダー paiza.IO 価格 400 NULL 200 マイクロソフト Access select * from T where 価格 IS NOT NULL; 13

14.

実演・実習用のデータベースファイル • 実演・実習用の Access データベースファイル URL: https://www.kkaneko.jp/cc/ds/index.html ファイル名: d10.accdb • 「コンテンツの有効化」のメッセージが出たとき は、確認のうえ、次にすすむ • つぎのような表示が出たときは、確認のうえ、 「はい」 14

15.

実演・実習用のデータベースファイル テーブル T を使用 マイクロソフト Access では NULL が空文字で 表示されるので注意 15

16.

select * from T where 価格 IS NULL; IS NULL を使用 商品 かき氷 カレーライス サイダー 価格 400 NULL 200 16

17.

select * from T where 価格 IS NOT NULL; IS NOT NULL を使用 商品 かき氷 カレーライス サイダー 価格 400 NULL 200 17

18.

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

19.

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

20.

10-3. AND と OR 20

21.

リレーショナルデータベースシステムでの AND と OR • 用途としては、条件をつなげる場合 <条件> AND <条件> <条件> OR <条件> ※ 「<条件> OR <条件>」と書いても、「どち らかを選んでください」という意味は全くないので、 いまから説明 21

22.

二進数は 0 または 1 右手が上がっていない 右手が上がっている 二通り 22

23.

二進数は 0 または 1 右手が上がっていない 右手が上がっている FALSE TRUE 23

24.

変数が2つ 右手と左手の 両方を考えると 4通り 24

25.

変数が2つ FALSE と FALSE TRUE と FALSE FALSE と TRUE TRUE と TRUE 25

26.

AND FALSE と FALSE TRUE と FALSE FALSE と TRUE TRUE と TRUE AND は両方とも1 26

27.

OR FALSE と FALSE TRUE と FALSE TRUE と TRUE FALSE と TRUE OR は 少なくとも 片方には 1がある 27

28.

OR は「どちらかを選びなさい」という意味ではない とんこつラーメン 食べない:FALSE 食べる:TRUE 醤油ラーメン 食べない:FALSE とんこつラーメン 食べる:TRUE どちらか食べても、両方食べても OK! (これが OR の鉄則) ※ 醤油ラーメン 「どちらかを選べ」 という意味ではない 28

29.

AND と OR の表 FALSE TRUE FALSE FALSE FALSE TRUE FALSE TRUE AND FALSE TRUE FALSE FALSE TRUE TRUE TRUE TRUE OR 29

30.

10-4 Access, MySQL を用いた AND を OR の実演・実習 30

31.

SQL での AND と OR <条件> AND <別の条件> 2つの条件が,両方とも成り立つものを選ぶ <条件> OR <別の条件> 2つの条件が,1つでも良いので成り立つものを選ぶ (両方等も成立する場合でもOK) 31

32.

ANDの例 元データ select * from 授業 where 科目 = '国語' AND 教室名 = '一階'; 32

33.

OR の例 元データ select * from 授業 where 科目 = '国語' OR 教室名 = '一階'; 33

34.

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

35.

実演・実習用のデータベースファイル テーブル 授業,成績 を使用 35

36.

ID 1 2 3 4 5 担当者 AA BB CC AA XX 科目 教室名 国語 一階 国語 二階 国語 三階 算数 一階 算数 二階 曜日 36 月 月 月 火 火

37.

select * from 授業; テーブル「授業」をそのまま表示 37

38.

select * from 授業 where 科目 = '国語'; 選択(AND, OR などはない) 38

39.

select * from 授業 where 教室名 = '一階'; 選択(AND, OR などはない) 39

40.

select * from 授業 where 科目 = '国語' AND 教室名 = '一階'; AND の例 40

41.

select * from 授業 where 科目 = '国語’ OR 教室名 = '一階'; OR の例 41

42.

ANDの例 select * from 授業 where 科目 = '国語'; select * select * from 授業 from 授業 where 科目 = '国語' AND 教室名 = '一階'; where 教室名 = '一階'; 42

43.

OR の例 select * from 授業 where 科目 = '国語'; select * select * from 授業 from 授業 where 科目 = '国語' OR 教室名 = '一階'; where 教室名 = '一階'; 43

44.

いまから行うこと select 科目, 学生番号, 得点 from 授業, 成績; from のところに2つのテーブル名. →すべてのペア select 科目, 学生番号, 得点 from 授業, 成績 結合条件あり where 授業.ID = 成績.科目番号; select 科目, 学生番号, 得点 from 授業, 成績 条件 AND 条件 where 授業.ID = 成績.科目番号 AND 学生番号 = 101; 44

45.

select 科目, 学生番号, 得点 from 授業, 成績; すべてのペア 45

46.

select 科目, 学生番号, 得点 from 授業, 成績 where 授業.ID = 成績.科目番号; 結合条件あり 46

47.

select 科目, 学生番号, 得点 from 授業, 成績 where 授業.ID = 成績.科目番号 AND 学生番号 = 101; 条件 AND 条件 47

48.

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

49.

• 次の SQL を入れる(次へ続く) 49

50.

• 次の SQL を書き加える。ここまで入れたSQLは後 で使う。(次へ続く) 50

51.

• 次の SQL を実行.結果を確認 51

52.

• 次の SQL を実行.結果を確認 52

53.

• 次の SQL を実行.結果を確認 53

54.

• 次の SQL を実行.結果を確認 54

55.

• 次の SQL を実行.結果を確認 55

56.

• 次の SQL を実行.結果を確認 56

57.

• 次の SQL を実行.結果を確認 57

58.

• 次の SQL を実行.結果を確認 58

59.

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