這是在講關於一名叫 Koa 的全端勇士傳說-MySQL篇-基礎篇(3)

前言

這一篇將會講到 CRUD 的 SQL 指令,所以有可能會稍微複雜一點,查詢部分在前一篇就已經寫了,所以本篇就不會再寫一次

新增資料

SQL 中將資料新增至資料表中的語法是 INSERT INTO,舉例來講我要將資料新增至 testtable 中,其中有兩種做法

新增資料:

1
INSERT INTO testtable VALUE ('Mark', 166, 50);

針對指定欄位新增資料:

1
INSERT INTO testtable (name, weight, height) VALUE ('Mark', 166, 50);

我個人是偏好於第二種新增方式

新增資料

成功之後我們就可以看到 testtable 資料表已經新增我們剛剛新增的資料

新增資料

更新資料

有新增那就會有更新,所以這邊就會使用到 UPDATE 語法,假設 jack 一夜之間的體重從 65 > 60 以及身高 156 > 180,那麼就這樣寫

1
UPDATE testtable SET weight = 60, height = 180 WHERE name = 'jack';

更新資料

那麼我們就可以看到資料 jack 的資料更新哩~

更新前

更新後

刪除資料

最後來到最危險的 SQL 指令,如果只要一個不小心沒有寫好是有可能將一整張資料表資料給刪除的,所以這邊使用這個語法的時務必寫清楚,否則刪除的資料將無法恢復

刪除語法會使用到 DELETE,舉例我今天要刪除 TOM 的資料

大寫 TOM

那麼語法就是這樣寫

1
DELETE FROM testtable WHERE name='TOM';

刪除大 TOM

語法執行之後我們就可以看到大 TOM 被刪除了,但是你也會發現很奇妙的事情,也就是通通叫 TOM 的都被刪除了

只要叫 TOM 的都被刪除

那麼這個原因出在 MySQL 在 Window 並不區分大小寫,所以就會有這個問題,我們可以嘗試輸入語法來驗證

1
SELECT * FROM testtable WHERE name = 'TOM';

我們會發現答案有兩個,也就是小 tom 以及大 TOM

大 TOM 與小 tom

只有 Linux 環境下才會區分大小寫,可以參考 這篇文章

所以通常我們再刪除的時候都會針對 ID 去做刪除,因為通常 ID 是唯一值,並不會有重複的問題,所以正確要這樣寫才對

1
SELECT * FROM testtable WHERE t_id = 3;

但是如果你真的還是要依照 name 欄位去做判定,那麼就這樣寫

1
DELETE FROM testtable BINARY name='TOM';

BINARY

此時再看資料表就會看到大 TOM 被刪除了

大 TOM 說再見

如果你是要刪除整張表的資料,那就只需要打 DELETE FROM testtable ← 請小心使用,資料刪除不可逆,這邊我就不示範了

補充

最後附上 INSERT INTOUPDATEDELETE,各別說明

INSERT INTO

新增資料:

1
INSERT INTO [指定資料表名稱] VALUE (欲新增的資料, 欲新增的資料, 欲新增的資料) /* 注意它會依照欄位順序新增 */

指定欄位新增資料:

1
INSERT INTO [指定資料表名稱] (指定新增的欄位, 指定新增的欄位, 指定新增的欄位) VALUE (欲新增的資料, 欲新增的資料, 欲新增的資料) /* 個人都使用這個語法 */

新增多筆資料

1
INSERT INTO [指定資料表名稱] (指定新增的欄位, 指定新增的欄位, 指定新增的欄位) VALUE (欲新增的資料, 欲新增的資料, 欲新增的資料),(欲新增的資料, 欲新增的資料, 欲新增的資料),(欲新增的資料, 欲新增的資料, 欲新增的資料)

UPDATE

1
UPDATE [指定資料表名稱] SET [指定要更新的欄位] = [欲更新的資料], [指定要更新的欄位] = [欲更新的資料] WHERE [條件欄位] = [條件資料]; /* 針對特定資料行更新特定欄位 */

DELETE

1
DELETE FROM [指定資料表名稱] WHERE [條件欄位] = [條件資料]; /* 針對特定資料刪除特定的行 */
1
DELETE FROM [指定資料表名稱]; /* 刪除整個資料表資料 */

DELETE 這個語法非常危險,請小心服用。