Slide 1

Slide 1 text

Database Introduction Frank Yang

Slide 2

Slide 2 text

Outline ▸ 什什麼是 Database? ▸ 怎麼操作 Database?

Slide 3

Slide 3 text

什什麼是 Database?

Slide 4

Slide 4 text

認識 Database 之前
 先瞭解有哪幾種資料

Slide 5

Slide 5 text

• 結構(Structured) • 半結構(Semi-Structured) • 非結構(Unstructured) 資料類別

Slide 6

Slide 6 text

什什麼是有結構的資料?

Slide 7

Slide 7 text

想想看我們平常拿來來存資料的軟體 Excel Google Sheets Open Office

Slide 8

Slide 8 text

使⽤用這些軟體通常會有: 欄欄位名稱(head)以及資料(value) head value

Slide 9

Slide 9 text

定義好的資料型別(data type)

Slide 10

Slide 10 text

資料之間是有關係的(Relational)

Slide 11

Slide 11 text

資料之間是有關係的(Relational)

Slide 12

Slide 12 text

什什麼是半結構的資料?

Slide 13

Slide 13 text

半結構資料

Slide 14

Slide 14 text

半結構資料 { "title": "json", "type": "unstructured", ... } json

Slide 15

Slide 15 text

半結構資料 { "title": "json", "type": "unstructured", ... } json id,name,email
 1,Tom,[email protected]
 2,Harry,[email protected] csv

Slide 16

Slide 16 text

半結構資料 { "title": "json", "type": "unstructured", ... } json id,name,email
 1,Tom,[email protected]
 2,Harry,[email protected] csv 資料型別(data type)有限

Slide 17

Slide 17 text

什什麼是非結構的資料?

Slide 18

Slide 18 text

非結構資料 Mail Message Image Music

Slide 19

Slide 19 text

資料類別比較 結構 半結構 非結構 欄欄位名稱 有 有 無 資料型別 多 少 無 關係 有 無 無

Slide 20

Slide 20 text

資料類別比較 結構 半結構 非結構 欄欄位名稱 有 有 無 資料型別 多 少 無 關係 有 無 無 Database 儲存的資料

Slide 21

Slide 21 text

結構 半結構 Database 比較

Slide 22

Slide 22 text

結構 半結構 資料庫類型 關聯聯式資料庫 (Relational) 非關聯聯式資料庫 (Non-Relational) Database 比較

Slide 23

Slide 23 text

結構 半結構 資料庫類型 關聯聯式資料庫 (Relational) 非關聯聯式資料庫 (Non-Relational) 語⾔言 SQL NoSQL Database 比較

Slide 24

Slide 24 text

關聯聯式資料庫 非關聯聯式資料庫 PostgreSQL MySQL SQLite3 mongoDB 更更多 Relational DB 與 Non-Relational DB 的比較! 推薦的 Database

Slide 25

Slide 25 text

關聯聯式資料庫的特性 ▸ A (Atomicity) - 不可部分完成性 ▸ C (Consistency) - ⼀一致性 ▸ I (Isolation) - 隔離性 ▸ D (Durability) - 耐久性

Slide 26

Slide 26 text

Atomicity - 不可部分完成性 Product Price iPhone X 999 MacBook Pro 1299

Slide 27

Slide 27 text

Atomicity - 不可部分完成性 Product Price iPhone X 999 MacBook Pro 1299 刪除 MacBook Pro

Slide 28

Slide 28 text

Atomicity - 不可部分完成性 Product Price iPhone X 999 MacBook Pro 1299 Product Price iPhone X 999 刪除 MacBook Pro A

Slide 29

Slide 29 text

Atomicity - 不可部分完成性 Product Price iPhone X 999 MacBook Pro 1299 Product Price iPhone X 999 Product Price iPhone X 999 MacBook Pro 刪除 MacBook Pro B A

Slide 30

Slide 30 text

Atomicity - 不可部分完成性 Product Price iPhone X 999 MacBook Pro 1299 Product Price iPhone X 999 Product Price iPhone X 999 MacBook Pro 刪除 MacBook Pro B A

Slide 31

Slide 31 text

Atomicity - 不可部分完成性 Product Price iPhone X 999 MacBook Pro 1299 Product Price iPhone X 999 Product Price iPhone X 999 MacBook Pro 刪除 MacBook Pro 全部做完或者不做,沒有做⼀一半的 B A

Slide 32

Slide 32 text

Consistency - ⼀一致性 Product Price iPhone X 999 MacBook Pro 1299

Slide 33

Slide 33 text

Consistency - ⼀一致性 Product Price iPhone X 999 MacBook Pro 1299 刪除 MacBook Pro

Slide 34

Slide 34 text

Consistency - ⼀一致性 Product Price iPhone X 999 MacBook Pro 1299 Product Price iPhone X 999 刪除 MacBook Pro A

Slide 35

Slide 35 text

Consistency - ⼀一致性 Product Price iPhone X 999 MacBook Pro 1299 Product Price iPhone X 999 Product Price iPhone X 1000 刪除 MacBook Pro B A

Slide 36

Slide 36 text

Consistency - ⼀一致性 Product Price iPhone X 999 MacBook Pro 1299 Product Price iPhone X 999 Product Price iPhone X 1000 刪除 MacBook Pro B A

Slide 37

Slide 37 text

Consistency - ⼀一致性 Product Price iPhone X 999 MacBook Pro 1299 Product Price iPhone X 999 Product Price iPhone X 1000 刪除 MacBook Pro 只有受到操作的資料會更更動,其他資料或設定應該維持⼀一致 B A

Slide 38

Slide 38 text

Isolation - 隔離性 Product Price iPhone X 999 MacBook Pro 1299

Slide 39

Slide 39 text

Isolation - 隔離性 Product Price iPhone X 999 MacBook Pro 1299 User A 更更新 MacBook Pro 售價為 1499 User B 更更新 MacBook Pro 售價為 1699

Slide 40

Slide 40 text

Isolation - 隔離性 Product Price iPhone X 999 MacBook Pro 1299 User A 更更新 MacBook Pro 售價為 1499 A User B 更更新 MacBook Pro 售價為 1699 Product Price iPhone X 999 MacBook Pro 1499

Slide 41

Slide 41 text

Isolation - 隔離性 Product Price iPhone X 999 MacBook Pro 1299 User A 更更新 MacBook Pro 售價為 1499 B A User B 更更新 MacBook Pro 售價為 1699 Product Price iPhone X 999 MacBook Pro 1499 Product Price iPhone X 999 MacBook Pro 1699

Slide 42

Slide 42 text

Isolation - 隔離性 Product Price iPhone X 999 MacBook Pro 1299 User A 更更新 MacBook Pro 售價為 1499 B A User B 更更新 MacBook Pro 售價為 1699 Product Price iPhone X 999 MacBook Pro 1499 多個指令同時操作同⼀一筆資料,後⾯面的指令要等前⾯面的先完成 Product Price iPhone X 999 MacBook Pro 1699

Slide 43

Slide 43 text

Durability - 持久性 Product Price iPhone X 999 MacBook Pro 1299

Slide 44

Slide 44 text

Durability - 持久性 Product Price iPhone X 999 MacBook Pro 1299 更更新 MacBook Pro 售價為 1499 完成 停電造成系統無預警關機

Slide 45

Slide 45 text

Durability - 持久性 Product Price iPhone X 999 MacBook Pro 1299 更更新 MacBook Pro 售價為 1499 完成 A 停電造成系統無預警關機 Product Price iPhone X 999 MacBook Pro 1499

Slide 46

Slide 46 text

Durability - 持久性 Product Price iPhone X 999 MacBook Pro 1299 更更新 MacBook Pro 售價為 1499 完成 B A 停電造成系統無預警關機 Product Price iPhone X 999 MacBook Pro 1499 Product Price iPhone X 999 MacBook Pro 1699

Slide 47

Slide 47 text

Durability - 持久性 Product Price iPhone X 999 MacBook Pro 1299 更更新 MacBook Pro 售價為 1499 完成 B A 停電造成系統無預警關機 Product Price iPhone X 999 MacBook Pro 1499 Product Price iPhone X 999 MacBook Pro 1699

Slide 48

Slide 48 text

Durability - 持久性 Product Price iPhone X 999 MacBook Pro 1299 更更新 MacBook Pro 售價為 1499 完成 B A 停電造成系統無預警關機 Product Price iPhone X 999 MacBook Pro 1499 只要指令完成,即使系統關閉,資料依然還在 Product Price iPhone X 999 MacBook Pro 1699

Slide 49

Slide 49 text

Database 究竟如何存資料?

Slide 50

Slide 50 text

假設我們想建置⼀一個銷售系統 分別要存入產品資訊、客⼾戶資料、銷售資料

Slide 51

Slide 51 text

銷售系統資料庫 Database 架構

Slide 52

Slide 52 text

銷售系統資料庫 產品資料 客⼾戶資料 銷售資料 Database 架構

Slide 53

Slide 53 text

銷售系統資料庫 產品資料 客⼾戶資料 銷售資料 產品編號 客⼾戶編號 Database 架構

Slide 54

Slide 54 text

⼀一個資料庫可以有多個資料表(Table) 每個資料表之間可以有關聯聯(Relational)

Slide 55

Slide 55 text

怎麼操作 Database? 以 SQLite3 為範例例 安裝 SQLite Browser !

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

SQL

Slide 58

Slide 58 text

• Create (創建 Table) • Insert (輸入資料) • Select (取得資料)
 • Delete (刪除資料) SQL 指令

Slide 59

Slide 59 text

創建 Database

Slide 60

Slide 60 text

創建 Table

Slide 61

Slide 61 text

創建 Table 資料表名稱 加入資料表欄欄位

Slide 62

Slide 62 text

創建 Table 欄欄位名稱 資料型別

Slide 63

Slide 63 text

創建 Table CREATE TABLE 資料表名稱 (欄欄位1 欄欄位1資料格式, 欄欄位2 欄欄位2資料格式, ...)

Slide 64

Slide 64 text

範例 創建 Table 創建資料表 Customer,包含三個欄欄位:
 ● id ,型別為 Integer,設為 Primary Key
 ● first_Name ,型別為 Text
 ● last_Name ,型別為 Text

Slide 65

Slide 65 text

什什麼是 Primary Key? Primary key

Slide 66

Slide 66 text

唯⼀一值 Primary key

Slide 67

Slide 67 text

唯⼀一值 代表該欄欄位的所有值都是唯⼀一值 Primary key

Slide 68

Slide 68 text

Primary key

Slide 69

Slide 69 text

範例 創建 Table CREATE TABLE Customer (id INTEGER, first_Name TEXT, last_Name TEXT, PRIMARY KEY(id))

Slide 70

Slide 70 text

Exercise 1 創建 Table 創建資料表 Product,包含三個欄欄位:
 ● id ,型別為 Integer,設為 Primary Key
 ● name ,型別為 Text
 ● price ,型別為 Integer

Slide 71

Slide 71 text

Exercise 1 創建 Table 請在 Execute SQL 下指令:

Slide 72

Slide 72 text

創建 Table CREATE TABLE Product (id INTEGER, name TEXT, price INTEGER, PRIMARY KEY(id)) Exercise 1

Slide 73

Slide 73 text

創建 Table 創建資料表 Sales,包含三個欄欄位:
 ● id ,型別為 Integer,設為 Primary Key
 ● customer_id ,設為 Foreign Key 對應 Customer 的 id
 ● product_id ,設為 Foreign Key 對應 Product 的 id 範例

Slide 74

Slide 74 text

範例 Foreign key 什什麼是 Foreign Key?

Slide 75

Slide 75 text

範例 Foreign key 資料表之間的關聯聯要靠 Foreign Key FOREIGN KEY(欄欄位名稱) REFERENCES 對應的資料表(對應的欄欄位)

Slide 76

Slide 76 text

創建 Table 範例 CREATE TABLE Sales (id INTEGER, customer_id INTEGER, product_id INTEGER, PRIMARY KEY(id), FOREIGN KEY(customer_id) REFERENCES Customer(id), FOREIGN KEY(product_id) REFERENCES Product(id))

Slide 77

Slide 77 text

Insert 資料 INSERT INTO 資料表名稱(欄欄位1, 欄欄位2, …) VALUES (值1, 值2, …)

Slide 78

Slide 78 text

範例 Insert 資料 輸入下列列資料到 Product id name price 1 iPhone X 999 2 Macbook Pro 1299

Slide 79

Slide 79 text

範例 Insert 資料 INSERT INTO Product(id, name, price) VALUES (1, 'iPhone X', 999) INSERT INTO Product(id, name, price) VALUES (2, 'MacBook Pro', 1299)

Slide 80

Slide 80 text

範例 Insert 資料

Slide 81

Slide 81 text

Exercise 2 Insert 資料 輸入下列列資料到 Customer id first_name last_name 1 Steven Jobs 2 Elon Musk

Slide 82

Slide 82 text

Insert 資料 INSERT INTO Customer(id, first_name, last_name) VALUES (1, 'Steven', 'Jobs') INSERT INTO Customer(id, first_name, last_name) VALUES (2, 'Elon', 'Musk') Exercise 2

Slide 83

Slide 83 text

Insert 資料 Exercise 2

Slide 84

Slide 84 text

範例 Insert 資料 輸入下列列資料到 Sales id customer_id product_id 1 1 1 2 1 2 3 2 1

Slide 85

Slide 85 text

範例 Insert 資料 ⼀一次存⼀一筆資料好⿇麻煩,可以⼀一次存多筆嗎?

Slide 86

Slide 86 text

範例 Insert 資料 ⼀一次存⼀一筆資料好⿇麻煩,可以⼀一次存多筆嗎? 可以!

Slide 87

Slide 87 text

Insert 資料 INSERT INTO 資料表名稱(欄欄位1, 欄欄位2, …) VALUES (值1-1, 值1-2, …), (值2-1, 值2-2, …), …

Slide 88

Slide 88 text

範例 Insert 資料 INSERT INTO Sales(id, customer_id, product_id) VALUES (1, 1, 1), (2, 1, 2), (3, 2, 1)

Slide 89

Slide 89 text

Insert 資料 範例

Slide 90

Slide 90 text

Select 資料 SELECT 欄欄位1, 欄欄位2, ... FROM 資料表名稱

Slide 91

Slide 91 text

Select 資料 取得全部銷售數據 範例

Slide 92

Slide 92 text

Select 資料 SELECT customer_id, product_id FROM Sales 範例

Slide 93

Slide 93 text

Select 資料 只想取得部份資料,可以加入⼀一些判斷式嗎?

Slide 94

Slide 94 text

Select 資料 只想取得部份資料,可以加入⼀一些判斷式嗎? 可以!

Slide 95

Slide 95 text

Select 資料 SELECT 欄欄位1, 欄欄位2, ... FROM 資料表名稱 WHERE 條件

Slide 96

Slide 96 text

Select 資料 取得 Steven Jobs 的購買紀錄 範例

Slide 97

Slide 97 text

Select 資料 範例 SELECT product_id FROM Sales WHERE customer_id = 1

Slide 98

Slide 98 text

Select 資料 ⽬目前只看得到產品編號,可以把多張表聯聯合起來來⼀一 起查詢顯⽰示更更多詳細資料嗎?

Slide 99

Slide 99 text

Select 資料 ⽬目前只看得到產品編號,可以把多張表聯聯合起來來⼀一 起查詢顯⽰示更更多詳細資料嗎? 可以!

Slide 100

Slide 100 text

Select 資料 SELECT 表1.欄欄位1, 表2.欄欄位1, ... FROM 資料表1, 資料表2 WHERE 條件

Slide 101

Slide 101 text

Select 資料 取得 Steven Jobs 的購買紀錄的詳細資料 範例

Slide 102

Slide 102 text

Select 資料 範例 SELECT Product.id, Product.name, Product.price FROM Sales, Product WHERE Sales.customer_id=1 AND Sales.product_id=Product.id

Slide 103

Slide 103 text

Select 資料 取得購買產品編號 2 的客⼾戶名稱 Exercise 3

Slide 104

Slide 104 text

Select 資料 Exercise 3 SELECT Customer.first_name, Customer.last_name FROM Sales, Customer WHERE Sales.product_id=2 AND Sales.customer_id=Customer.id

Slide 105

Slide 105 text

Select 資料 - JOIN 對於聯聯合資料表,SQL 有更更厲害的功能 - JOIN SELECT 欄欄位1, 欄欄位2, ... FROM 資料表1
 [LEFT|RIGHT|INNER] JOIN 資料表2 ON 資料表1.欄欄位 = 資料表2.欄欄 位 JOIN 詳解!

Slide 106

Slide 106 text

Delete 資料 DELETE FROM 資料表名稱 WHERE 條件

Slide 107

Slide 107 text

Delete 資料 刪除客⼾戶編號 2 的訂單 範例

Slide 108

Slide 108 text

DELETE FROM Sales WHERE customer_id=2 範例 Delete 資料

Slide 109

Slide 109 text

Delete 資料 刪除 Elon Musk Exercise 4

Slide 110

Slide 110 text

Exercise 4 Delete 資料 DELETE FROM Customer WHERE first_name='Elon' AND last_name='Musk'

Slide 111

Slide 111 text

為什什麼不⽤用 Database 存非結構資料?

Slide 112

Slide 112 text

讓我們看⼀一下圖片在 Database 裡的樣⼦子

Slide 113

Slide 113 text

讓我們看⼀一下圖片在 Database 裡的樣⼦子

Slide 114

Slide 114 text

讓我們看⼀一下圖片在 Database 裡的樣⼦子 我相信應該不會有⼈人想⽤用 0101 搜尋資料

Slide 115

Slide 115 text

那要怎麼儲存非結構資料?

Slide 116

Slide 116 text

No content

Slide 117

Slide 117 text

No content

Slide 118

Slide 118 text

⽤用 Database 存 metadata ⽤用 File System 存 非結構資料