前一篇我們已經學會基礎的資料表操作,那麼這一篇就會針對資料欄位的資料操作來做介紹,但是在前面我們要先了解一些觀念,而這觀念將會幫助我們理解對於後面的動作操作。
首先先來講講什麼是 CRUD,因為接下來很多的動作都脫離不了這四個單字,而這四個英文字母各別代表著一個意思 ↓
其中更新與刪除是要小心使用的,更不用說刪除,畢竟前面已經講過 N 次了,所以接下來就來講一下該如何新增資料、讀取資料、更新資料表以及最恐怖的刪除資料。
其實正確說法是插入欄位,但我自己在習慣上是講新增資料,但是這邊還是建議必須知道正確的說法是插入欄位唷~
這邊將會使用前一篇所建立的 hw_table
資料表來作範例,首先我們要新增一筆資料,是班上同學小明的身高體重,那麼就會這樣寫:
INSERT INTO hw_table (name, height, weight) VALUES ('王小明', 177.6, 70.5);
※ 指令說明: INSERT INTO [資料表名稱] (欄位名稱1,欄位名稱2,...) VALUES (值,值,...);
那麼一樣我們來將 SQL 指令貼入 phpmyadmin 執行看看吧 ↓
執行完畢後,我們可以回到資料表來看看是否插入成功 ↓
但是你會發現一件事情,也就是我們剛剛輸入的體重有小數點,但是為什麼 70.5 被四捨五入變成 71?
原因是出在我們在前一篇建立資料表時,weight
欄位是設置成 INT (整數) 導致,而整數會將小數點給四捨五入 ↓
所以我們就可以活用上一篇所學的修改資料欄位技巧來解決這個問題,只需要輸入以下指令即可:
ALTER TABLE hw_table CHANGE COLUMN weight weight float;
這樣就可以看到結構被修改成 FLOAT
(浮點數) ↓
這時候再重新新增一筆資料進去就可以知道有沒有成功囉~
INSERT INTO hw_table (name, height, weight) VALUES ('李小美', 152.6, 69.5);
基本上我們可以看到欄位可以正常輸入小數點囉 ↓
接下來讓我們講講更新欄位,假設李小美這陣子拼命的運動導致體重從 69.5 變成 45.6 (變瘦!),那麼更新的語法就可以這樣寫:
UPDATE hw_table SET weight='45.6' WHERE name='李小美';
※ 指令說明: UPDATE [資料表名稱] SET 欄位名稱1='值' WHERE [條件];
當我們執行後就可以看到李小美的體重欄位更新了~
通常 WHERE
的條件會使用獨一無二的 key
來做判斷,但是我這邊只是一個範例才會使用 name
來作範例,正常狀況下,是會發生同名同姓的人,那後面章節我也會針對 WHERE
來做介紹。
最後就是刪除資料,假設我們今天要把王小明這個同學的資料給刪除,那麼語法就這樣寫:
DELETE FROM hw_table WHERE id=2;
※ 指令說明: DELETE FROM [資料表名稱] WHERE [條件];
你可以發現我這邊特意使用了 id
來當作條件,因為假設使用 name
來刪除是有可能導致同名的人都一起掰掰唷~
那麼我們可以先來看看結果王小明是不是真的被刪除了 ↓
最後讓我們來試驗剛剛我講的問題,使用 name
來當作條件,並且試著讓我剛剛講的情況發生,首先先插入兩筆同名同姓的學生,但身高體重不一樣,順便講一下如何插入多筆資料:
INSERT INTO hw_table (name, height, weight) VALUES ('王小明', 177.6, 70.5),('王小明', 156.6, 47.5);
如果沒有問題的話,我們就可以看到兩個同名同姓的王小明,但身高體重不同的人 ↓
接下來我們來輸入刪除的語法,然後使用 name
來當作條件,然後準備來看結果吧~
DELETE FROM hw_table WHERE name='王小明';
當你輸入執行完之後,你會發現只要是叫做王小明的學生,通通都被刪除了 ↓
所以由此可知,不論是使用刪除 or 更新,在使用條件時後,請務必要使用絕對值 (key),否則會發生悲劇唷~
最後一樣讓我們來整理一下本篇所講到的 SQL 指令
操作功能 | SQL 語法 |
---|---|
插入欄位 | INSERT INTO [資料表名稱] (欄位名稱1,欄位名稱2,...) VALUES (值,值,...); |
更新欄位 | UPDATE [資料表名稱] SET 欄位名稱1='值' WHERE [條件]; |
刪除資料 | DELETE FROM [資料表名稱] WHERE [條件]; |
插入多筆欄位 | INSERT INTO [資料表名稱] (欄位名稱1,欄位名稱2,...) VALUES (值1,值1,...),(值2,值2,...); |
本文同時發表於:https://hsiangfeng.github.io/php/20190905/1275666548/