12. データベースの AND,OR,NOT

139 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

シェア

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

関連スライド

各ページのテキスト
1.

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

2.

NULL, AND, OR, BETWEEN • NULL ・・・ 未定、未知、存在しない場合は NULL • IS NULL, IS NOT NULL select * from T where 価格 IS NULL; select * from T where 価格 IS NOT NULL; • AND, OR ・・・ 条件をつなげる select CUST_ID, COST from ORDERS where COST >10 AND COST <100; • BETWEEN 「 where COST >10 AND COST <100」の代わりに BETWEEN を使うこともできる select CUST_ID, COST from ORDERS where COST BETWEEN 10 and 100; 2

3.

アウトライン 番号 項目 12-1 データベースの NULL 12-2 NULL の演習 12-3 AND と OR 12-4 AND と OR の演習 各自、資料を読み返したり、課題に取り組んだりも行う 3

4.

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

5.

SQL • SQL は、リレーショナルデータベースシステムの さまざまな機能を使える言語 問い合わせ(クエリ)、 テーブル定義、 その他の操作 5

6.

SQL による問い合わせ(クエリ)の例 ① SELECT * FROM 商品; ② SELECT 名前, 単価 FROM 商品; ③ SELECT 名前, 単価 FROM 商品 WHERE 単価 > 80; ④ SELECT 受講者, COUNT(*) FROM 成績 GROUP BY 受講者; ⑤ SELECT * FROM 米国成人調査データ ORDER BY 年齢; ⑥ SELECT * FROM T, S; ⑦ SELECT * FROM T, S WHERE a = b; ⑧ SELECT * FROM 授業 WHERE 教室名 IN ('一階', '二階'); ⑨ SELECT DISTINCT 学生番号 FROM 成績 WHERE 科目名 IN (SELECT 科目名 FROM 成績 WHERE 学生番号 = 101); 6

7.

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

8.

12-1. データベースの NULL 8

9.

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

10.

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

11.

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

12.

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

13.

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 であると記録 するのは,そもそもおかしい 13

14.

12-2. NULL の演習 14

15.

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

16.

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

17.

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

18.

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

19.

テーブル T を使用 マイクロソフト Access では NULL が空文字で 表示されるので注意 19

20.

select * from T where 価格 IS NULL; IS NULL を使用 商品 かき氷 カレーライス サイダー 価格 400 NULL 200 マイクロソフト Access では NULL が空文字で 表示されるので注意 20

21.

select * from T where 価格 IS NOT NULL; IS NOT NULL を使用 商品 かき氷 カレーライス サイダー 価格 400 NULL 200 マイクロソフト Access では NULL が空文字で 表示されるので注意 21

22.

12-3. AND と OR 22

23.

リレーショナルデータベースシステムでの AND と OR • SQL で,複数の条件をつなげる場合 <条件> AND <条件> <条件> OR <条件> ※ OR は,「どちらかを選んでください」という意 味ではないので、いまから説明 23

24.

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

25.

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

26.

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

27.

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

28.

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

29.

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

30.

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

31.

AND と OR の表 FALSE TRUE FALSE FALSE FALSE TRUE FALSE TRUE AND FALSE TRUE FALSE FALSE TRUE TRUE TRUE TRUE OR 31

32.

12-4 AND と OR の演習 32

33.

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

34.

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

35.

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

36.

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

37.

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

38.

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

39.

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

40.

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

41.

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

42.

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

43.

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

44.

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

45.

いまから行うこと select 科目, 学生番号, 得点 結合条件なし from 授業, 成績; select 科目, 学生番号, 得点 from 授業, 成績 結合条件あり where 授業.ID = 成績.科目番号; select 科目, 学生番号, 得点 from 授業, 成績 AND を使用 where 授業.ID = 成績.科目番号 AND 学生番号 = 101; 45

46.

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

47.

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

48.

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

49.

12-5. Paiza.IO による演習 49

50.

Paiza.IO の使い方 ① ウェブブラウザを起動する ② 次の URL を開く https://paiza.io/ ③ もし,表示が英語になっていたら,日本語に切り 替える

51.

④ 「コード作成を試してみる」をクリック ⑤ 「MySQL」を選ぶ(左上のボタンをクリックするとメニューが出る)

52.

プログラムの 編集画面 プログラムを 書き換えること ができる 実行ボタン 52

53.

編集画面を確認する。 すでに、SQL が入っているが、使わないので消す。

54.

• NULL の演習のため,次の SQL を入れ,実行結果 を確認 54

55.

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

56.

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

57.

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

58.

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

59.

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

60.

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

61.

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

62.

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

63.

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

64.

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

65.

NULL, AND, OR, BETWEEN • NULL ・・・ 未定、未知、存在しない場合は NULL • IS NULL, IS NOT NULL select * from T where 価格 IS NULL; select * from T where 価格 IS NOT NULL; • AND, OR ・・・ 条件をつなげる select CUST_ID, COST from ORDERS where COST >10 AND COST <100; • BETWEEN 「 where COST >10 AND COST <100」の代わりに BETWEEN を使うこともできる select CUST_ID, COST from ORDERS where COST BETWEEN 10 and 100; 65