# 3. 使用你的MySQL資料庫 {%hackmd QnyEFBdERZebn4iQDXNPnA %} ## 本章重點:學習MySQL如何插入、刪除、更新、查詢資料(CRUD) ## 01 SQL是什麼? - Structured Query Language - 結構化查詢語言 ## 02 將資料插入資料庫 - INSERT INTO table [columns ...] VALUE (values ...) ```sql= INSERT INTO Customers VALUESl (NULL, 'Julie Smith', '25 Oak Street', 'Airport West'); ``` ## 03 取出資料 - SELECT columns FROM tables; ```sql= SELECT * FROM Order_Items; ``` ### 搭配WHERE,取出特定條件 - WHERE ```sql= SELECT * FROM Orders WHERE CustomerID = 3; ``` - WHERE 子句中實用的比較運算子 ![](https://i.imgur.com/J0h1o9T.jpg) ### 從多個資料表取出資料 - 簡單雙表連結 ```sql= SELECT Orders.OrderID, Orders.Amount, Orders.Date FROM Customers, Orders WHERE Customers.Name = 'Julie Smith' and Customer.CustomerID = Orders.CustomerID; --Customer.CustomerID = Orders.CustomerID是一個連結條件 -- 使用句點來釐清特定欄位來自哪張表格 ``` - 連結超過兩個資料表 - 使用連結條件連結每一對資料表 - 每對資料表都需要使用一個連結條件來連結,因此其連結數量會比想要連結的資料表總數**少一** - 尋找不匹配的資料列(e.g.從未下過訂單的客戶) - 左連結(LEFT JOIN...ON) - 右連結(RIGHT JOIN ...ON) - 使用其他的資料表名稱:別名 - 關鍵字:AS - 連結摘要 ![](https://i.imgur.com/N4IaHea.jpg) - 顯示的順序? - ORDER BY - DESC(逆向排列) - 分組與總匯 - 作用在Column - AVG() - COUNT() - MIN() - MAX() - STD() - 標準差 - STDDEV() - 同STD() - SUM() - 注意:若使用GROUP BY。唯一會出現在SELECT子句的東西是總匯函式與GROUP BY的欄位名稱。若想使用GROUP BY的欄位,就必須把它列在SELECT子句裡。 ```sql= SELECT CustomerID, AVG(Amount) FROM Orders GROUP BY CustomerID HAVING AVG(Amount) > 50; ``` - 使用HAVING來測試總匯的結果 - 與WHERE的差異。總匯只能用HAVING - 使用LIMIT回傳限定數量的列 - LIMIT第一個參數 => 初始的資料列 - LIMIT第一個參數 => 資料個數 - e.g. LIMIT 2, 3 (從輸出的第2列開始,回傳3列) - 使用子查詢指令 ## 04 更新資料庫內的紀錄 - Update ```sql= UPDATE tablename SET columns ``` ## 05 建立資料表後修改他 - 更改資料表的結構 ```sql= ALTER TABLE tablename ``` ## 06 卸除 v.s 刪除 - 卸除 - 刪除資料(data) - 刪除資料表(schema) - 刪除 - 刪除資料本身 ## 07 刪除資料庫的紀錄 - 刪除資料庫的資料列 ```sql= DELETE FROM table ``` ## 08 卸除資料表 - 移除資料表 ```sql= DROP TABLE table; ``` ## 09 卸除整個資料庫 - 要非常小心地使用這個函式 ```sql= DROP DATABASE database; ```