Presentation is loading. Please wait.

Presentation is loading. Please wait.

資料庫管理 Database Managent Ex.1-4 SQL指令練習

Similar presentations


Presentation on theme: "資料庫管理 Database Managent Ex.1-4 SQL指令練習"— Presentation transcript:

1 資料庫管理 Database Managent Ex.1-4 SQL指令練習
系級:物理四 學號: 姓名:吳嘉峰 授課老師:楊維邦 教授 日期:2013/04/08

2 目錄 檢視表格 Set Comparison 其它範例操作 心得感想 線上購物系統 課本P. 3-43, 3-54 課本CH3其它練習
替代性 效能

3 檢視表格 線上購物系統

4 檢視線上購物系統用表格 指令格式: CREATE TABLE 表格名稱 ( 欄位名稱1 資料型別(資料長度),
1. Customer 3. Smart_Phone 2. Order_list 4. Tabelt_Computer PRIMARY KEY(Order_Number) PRIMARY KEY(Order_Number) 指令格式: CREATE TABLE 表格名稱 ( 欄位名稱1 資料型別(資料長度), 欄位名稱2 資料型別(資料長度) PRIMARY KEY(欄位名稱) ) CREATE TABLE Customer ( Name char((16), Order_Number char(8) PRIMARY KEY(Order_Number) ) 設為PRIMARY KEY 表示該欄位不得為空值 且為唯一

5 檢視表格及資料

6 Set Comparison 課本P. 3-43, 3-54

7 Query: 排除網站中售價最高的手機 並顯示其他手機
比較操作範例 Query: 排除網站中售價最高的手機 並顯示其他手機

8 三種方法 1. Tuple Variables 2. Subqueries with ANY or SOME 3. Subquery
Using RENAME 2. Subqueries with ANY or SOME Using SOME 3. Subquery Using subquery ( 課本P )

9 1. Using RENAME 價格22030的HTC One沒有被顯示! 指令語法: SELECT `欄位名稱` FROM `資料表1`, `資料表1` as 表格變數名稱 WHERE 敘述式 # 由敘述式決定要顯示的東西,重點在於可以利用Tuple Varibles來比較相同表格內的欄位

10 2. Using SOME 指令語法: SELECT `欄位` FROM `資料表1` WHERE `比較欄位1` < SOME
將上述語法中的SOME以ANY替代 指令語法: SELECT `欄位` FROM `資料表1` WHERE `比較欄位1` < SOME (SELECT `比較欄位2` FROM `資料表2` ) #子查詢 # SOME是ANY的別名,需與比較運算子(<, >, =)連用,若欄位1小於子查詢中欄位2的任意值,則return True。換句話說,欄位1中的值,只要比欄位2的其中一個小,就會被顯示出來。 與方法一得到相同的結果 與使用SOME得到相同的結果

11 3. Using Subquery 子查詢 與方法一、二結果相同 命名為temp,也可輸入「AS temp」

12 其它範例操作 課本CH3其它練習

13 Subqueries with ALL (P. 3-46)
Query: 找出比ASUS PadFone 2 便宜的所有手機 篩選條件 指令語法: SELECT `欄位` FROM `資料表1` WHERE `比較欄位1` < ALL (SELECT `比較欄位2` FROM `資料表2` ) #子查詢 # ALL,需與比較運算子(<, >, =)連用,若欄位1小於子查詢中欄位2的所有值,則return True。換句話說,欄位1中的值,需要比欄位2的所有值小,才會被顯示出來。

14 Query: 找出最貴的手機 × The WITH Clause (P. 3-55) 替代方案1 MySQL不支援WITH 替代方案:子查詢
建立一個暫存的view,locally 替代方案1 expensive smart_phone × max_price data brand model price data MySQL不支援WITH 替代方案:子查詢 SQL語法: WITH 暫存表格(暫存欄位) AS #建立一個暫存的view SELECT `欄位名稱1` FROM `表格1` SELECT `欄位名稱` FROM `表格2`, 暫存表格 WHERE 敘述式 最高價手機:HTC ONE 價格:22030

15 Query: 找出最貴的手機 (替代方案2) × CREATE Views (P. 3-57) 指令語法:
expensive smart_phone × max_price data brand model price data 與替代方案1結果相同 指令語法: CREATE VIEW 暫存表格 AS #建立一個暫存的view定義 SELECT `欄位名稱1` FROM `表格1` SELECT `欄位名稱` FROM `表格2`, 暫存表格 WHERE 敘述式

16 DROP Views 刪除剛剛建立的VIEW定義

17 Subqueries with IN (P. 3-63)
Query: 刪除客戶資料中 已用現金付款的資料 顯示目前的客戶資料和訂單 指令語法: DELETE FROM `資料表1` WHERE `欄位1` IN (子查詢) #子查詢中出現的項目將會從資料表1中被刪除 剩下刷卡付款的資料

18 Case Statement for Updates (P. 3-69)
指令語法: UPDATE `表格1` SET `欄位名稱` = CASE WHEN 條件1 THEN 操作 ELSE 條件2 END 15600×0.9×0.8=11232 順序錯誤,商品打折兩次! Query: 調整手機售價, 若單價高於15000(含), 打9折,其餘打8折 錯誤示範! 操作順序影響結果 原價 原價 調整後價格 調整後價格 原價 錯誤價格

19 心得感想

20 心得感想 經過這麼多次的練習,我們可以發現,相 同的功能有很多方法可以完成,即使有些 指令在MySQL中不支援,我們依舊可以 用其它的指令來替代組合,達到目的。 在較小的系統中,我們或許不會發現不同 方法間的差異,但是當系統越來越龐大後, 我們就必須注意這些方法的效能差異了。 一但資料量增加,我們就必須去找出效能 最佳的方法才行。

21 The End. Thank you!


Download ppt "資料庫管理 Database Managent Ex.1-4 SQL指令練習"

Similar presentations


Ads by Google