資料庫管理 database management 建立 銀行資料庫及查詢 範例

29
資資資資資 Database Management 建建建建建建建建建建建建 建建 建建建 建建49814201 建建 建建建 建建建建 建建建 建建 1

Upload: tevin

Post on 05-Jan-2016

108 views

Category:

Documents


14 download

DESCRIPTION

資料庫管理 Database Management 建立 銀行資料庫及查詢 範例. 系級:物理四 學號: 49814201 姓名:吳嘉峰 授課老師: 楊維邦 教授. 主題 說明. 利用 phpMyAdmin 在 M ySQL 中建立簡單的銀行資料庫。 依照 範例情境,練習對銀行資料庫作查詢。. 目錄. 檢視銀行資料庫. Banking Database. Example: Banking Database. 1. branch. 2. customer. 3. depositor. 客戶(存款 戶, 貸款 戶). 分公司. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

1

資料庫管理Database Management

建立銀行資料庫及查詢範例

系級:物理四學號: 49814201

姓名:吳嘉峰授課老師:楊維邦 教授

Page 2: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

2

主題說明

利用 phpMyAdmin 在 MySQL中建立簡單的銀行資料庫。

依照範例情境,練習對銀行資料庫作查詢。

Page 3: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

3

目錄檢視銀行資料庫• Primary Key• Foreign Key• Schema

Diagram

建立銀行資料庫• 建立 Banking

Database• 建立 Table• 輸入資料

查詢範例練習• 手動解題• SQL 操作演列

心得感想• 實做練習心得

Page 4: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

4

檢視銀行資料庫Banking Database

Page 5: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

5

Example: Banking Database

1. branch 2. customer

客戶 ( 存款戶 , 貸款戶 )

5. account

存款帳

3. depositor

存款戶

6. loan

貸款帳 4. borrower

貸款戶

分公司

※ 資料來源: Database System Concepts, Silberschatz etc. 2006 (Fifth Ed.)

Page 6: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

6

Primary Key & Foregin Key

Primary Key :該欄位不得為空值且為唯一。

Foregin Key :該欄位的值需參考其他表格中的欄位,當被參考表格中不存在該值時便不可輸入該筆資料,被參考的資料也不可任意的更新 (UPDATE) 或刪除(DELETE) 。

Page 7: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

7

Schema Diagram

Schema Diagram for the Banking Enterprise

Primary Key and foreign key can be depicted by schema diagram

箭號方向: Primary Key Foreign Key

※ 資料來源: Database System Concepts, Silberschatz etc. 2006 (Fifth Ed.)

Page 8: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

8

建立銀行資料庫建立 Database 及 Table 並輸

入資料

Page 9: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

9

建立 Banking Database 資料庫

新增一個名為“ Banking_Database” 的資料庫指令格式:CREATE DATABASE 資料庫名稱

CREATE DATABASE Banking_Database;

Page 10: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

10

建立及輸入 Table 內資料1. branch 2.

customer 3. account 4. loan 5. depositor

6. borrower

指令格式:CREATE TABLE 表格名稱(

欄位名稱 1 資料型別 ( 資料長度 ), 欄位名稱 2 資料型別 ( 資料長度 ),PRIMARY KEY( 欄位名稱 ),FOREIGN KEY( 本 table 欄位名稱 ) REFERENCES 參照 table 名

稱 ( 參照欄位 ));新增多筆資料指令格式:INSERT INTO ` 表格名稱 ` (` 欄位 1`, ` 欄位 2`)VALUES( 資料 1, 資料 2),( 資料 3, 資料 4);

設為 PRIMARY KEY表示該欄位不得為空值且為唯一 ( 選用 )

設為 FOREIGN KEY表示該欄位的值需參考其他表格中的欄位,當被參考表格中不存在該值時便不可輸入該筆資料 ( 選用 )

Page 11: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

11

1. branch ( 分公司 )branch-name branch-city assets

Brighton Brooklyn7100000

Downtown Brooklyn9000000

Mianus Horseneck 400000

North Town Rye3700000

Perryridge Horseneck1700000

Pownal Bennington 300000

Redwood Palo Alto2100000

Round Hill Horseneck8000000

CREATE TABLE branch(

branch_name char(16), branch_city char(16),assets int(10),PRIMARY

KEY(branch_name));

INSERT INTO `branch` (`branch_name`, `branch_city`, `assets`) VALUES('Brighton', 'Brooklyn', 7100000),('Downtown', 'Brooklyn', 9000000),('Mianus', 'Horseneck', 400000),('North Town', 'Rye', 3700000),('Perryridge', 'Horseneck', 1700000),('Pownal', 'Bennington', 300000),('Redwood', 'Palo Alto', 2100000),('Round Hill', 'Horseneck', 8000000);

back

Page 12: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

12

2. customer ( 客戶:存款戶、貸款戶 )customer-

namecustomer-street

customer-city

Adams Spring Pittsfield

Brooks Senator Brooklyn

Curry North Rye

Glenn Walnut Stamford

Hayes Main Harrison

Johnson Alma Palo Alto

Jones Main Harrison

Lindsay Park Pittsfield

Smith North Rye

Turner Putuam Stamford

Williams Nassau Princeton

CREATE TABLE customer(

customer_name char(16), customer_street char(16),customer_city char(16),PRIMARY

KEY(customer_name));

INSERT INTO `customer` (`customer_name`, `customer_street`, `customer_city`) VALUES('Adams', 'Spring', 'Pittsfield' ),('Brooks', 'Senator', 'Brooklyn'),('Curry', 'North', 'Rye'),('Glenn', 'Sand Hill', 'Woodside'),('Green', 'Walnut', 'Stamford'),('Hayes', 'Main', 'Harrison'),('Johnson', 'Alma', 'Palo Alto'),('Jones', 'MAin', 'Harrison'),('Lindsay', 'Park', 'Pittsfield'),('Smith', 'North', 'Rye'),('Turner', 'Putnam', 'Stamford'),('Williams', 'Nassau', 'Princeton'),('Jackson', NULL, NULL); #特別注意!

back

Page 13: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

13

3. account ( 存款帳 )account-number

branch-name

balance

A-101 Downtown 500

A-102 Perryridge 400

A-201 Brighton 900

A-215 Mianus 700

A-217 Brighton 750

A-222 Redwood 700

A-305 Round Hill 350

CREATE TABLE account(

account_number char(16),branch_name char(16),balance int(10),PRIMARY KEY (account_number),FOREIGN KEY (branch_name) REFERENCES

branch(branch_name));

INSERT INTO `account` (`account_number`, `branch_name`, `balance`) VALUES('A_101', 'Downtown', 500),('A_102', 'Perryridge', 400),('A_201', 'Brighton', 800),('A_215', 'Mianus', 700),('A_217', 'Brighton', 750),('A_222', 'Redwood', 700),('A_305', 'Round Hill', 350);

back

Page 14: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

14

4. loan ( 貸款帳 )

loan-numberbranch-name

amount

L-11 Round Hill 900

L-14 Downtown 1500

L-15 Perryridge 1500

L-16 Perryridge 1300

L-17 Downtown 1000

L-23 Redwood 2000

L-93 Mianus 500

CREATE TABLE loan(

loan_number char(16),branch_name char(16),amount int(10),PRIMARY KEY (loan_number),FOREIGN KEY (branch_name) REFERENCES

branch(branch_name));

INSERT INTO `loan` (`loan_number`, `branch_name`, `amount`) VALUES('L_11', 'Round Hill', 900),('L_14', 'Downtown', 1500),('L_15', 'Perryridge', 1500),('L_16', 'Perryridge', 1300),('L_17', 'Downtown', 1000),('L_23', 'Redwood', 2000),('L_93', 'Mianus', 500);

back

Page 15: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

15

5. depositor ( 存款戶 )customer-name

account-number

Hayes A-102

Johnson A-101

Johnson A-201

Jones A-217

Lindsay A-222

Smith A-215

Turner A-305

CREATE TABLE depositor(

customer_name char(16),account_number char(16),FOREIGN KEY (customer_name) REFERENCES

customer(customer_name),FOREIGN KEY (account_number) REFERENCES

account(account_number));

INSERT INTO `depositor` (`customer_name`, `account_number`) VALUES('Hayes', 'A_102'),('Johnson', 'A_101'),('Johnson', 'A_201'),('Jones', 'A_217'),('Lindsay', 'A_222'),('Smith', 'A_215'),('Turner', 'A_305');

back

Page 16: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

16

6. borrower ( 貸款戶 )customer-name loan-number

Adams L-36

Curry L-93

Hayes L-15

Jackson L-14

Jones L-17

Smith L-11

Smith L-23

Williams L-17

CREATE TABLE borrower(

customer_name char(16),loan_number char(16),FOREIGN KEY (customer_name) REFERENCES

customer(customer_name),FOREIGN KEY (loan_number) REFERENCES loan(loan_number)

);

INSERT INTO `borrower` (`customer_name`, `loan_number`) VALUES('Adams', 'L_16'),('Curry', 'L_93'), ('Hayes', 'L_15'),('Jackson', 'L_14'),('Jones', 'L_17'),('Smith', 'L_11'),('Smith', 'L_23'),('Williams', 'L_17');

back

Page 17: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

17

檢視各表格中的資料

Page 18: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

18

查詢範例練習範例說明及演練

Page 19: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

19

查詢範例說明

1. 找出住在 North 且有貸款的客戶。2. 查詢這些客戶的貸款金額。3. 確認貸款分公司及所在地。4. 是否有存款?5. 存款分公司所在地?6. 住在 North 同時有存款及貸款的客戶

之帳號及金額。

Page 20: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

20

手動解題 1. branch 2.

customer客戶 ( 存款戶 , 貸款戶 )

5. account

存款帳

3. depositor

存款戶

6. loan

貸款帳 4. borrower

貸款戶

分公司

1.找出住在 North 且有貸款的客戶名稱。2. 查詢這些客戶的貸款金額。3. 確認貸款分公司及所在地。4. 是否有存款?5. 存款分公司所在地?

Page 21: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

21

SQL 解題 1 :住 North 且有貸款的客戶

Page 22: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

22

SQL 解題 2 :貸款金額

Page 23: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

23

SQL 解題 3 :貸款分公司及所在地

Page 24: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

24

SQL 解題 4 :是否有存款?

Page 25: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

25

SQL 解題 5 :存款分公司所在地?

Page 26: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

26

SQL 解題 6 :住在 North 同時有存款及貸款的客戶之帳目資料

Page 27: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

心得感想實做練習心得

Page 28: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

28

心得感想 這次為了建立好銀行資料庫,必須要把它的

schema diagram 弄清楚,了解各個 key的作用,參考時需注意欄位型別及長度。

若是不參考各 key 之間的關係,銀行資料庫依然可以順利建立完成,但是這種銀行資料庫可能會在更新、刪除後出現錯誤或資料一致性問題。

資料輸入必須謹慎,需注意是否有打字錯誤。 真實的資料庫系統中,我們比較不可能使用

手動查詢的方式來解決問題,因為真實系統中的資料數量遠高於這次的範例。

解決同一問題的 SQL query ,通常不只一種。

Page 29: 資料庫管理 Database  Management 建立 銀行資料庫及查詢 範例

29

The End.Thank you!