目前演示的幾個UPDATE語句都是一次性更新所有行的數據,這無法滿足只更新符合特定條件的行的需求,比如“將Tom 的年齡修改為12 歲”。要實現這樣的功能只要使用WHERE 子句就可以了,在WHERE 語句中我們設定適當的過濾條件,這樣UPDATE 語句只會更新符合WHERE子句中過濾條件的行,而其他行的數據則不被修改。
執行下邊的UPDATE語句:
UPDATE T_Person SET FAge = 12 WHERE FNAME="Tom"
執行完此SQL語句后執行SELECT * FROM T_Person來查看表中的數據的變化:
可以看到只有第一行中的FAGE 被更新了。WHERE子句“WHERE FNAME="Tom"”表示我們只更新FNAME字段等於"Tom"的行。由於FNAME 字段等於"Tom"的只有一行,所以僅有一行記錄被更新,但是如果有多個符合條件的行的話將會有多行被更新,比如下面UPDATE 語句將所有年齡為25 的人員的備注信息修改為“BlaBla”:
UPDATE T_Person SET FRemark = "BlaBla" WHERE FAge =25
執行完此SQL語句后執行SELECT * FROM T_Person來查看表中的數據的變化。
目前為止我們演示的都是非常簡單的WHERE 子句,我們可以使用復雜的WHERE 語句來滿足更加復雜的需求,比如下面的UPDATE 語句就用來將FNAME 等於’Jim’或者’LXF’的行的FAge字段更新為22:
UPDATE T_Person SET FAge = 22 WHERE FName ="jim" OR FName="LXF"
執行完此SQL語句后執行SELECT * FROM T_Person來查看表中的數據的變化。
這里我們使用OR邏輯運算符來組合兩個條件來實現復雜的過濾邏輯,我們還可以使用OR、NOT等運算符實現更加復雜的邏輯,甚至能夠使用模糊查詢、子查詢等實現高級的數據過濾。