W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
修改已經(jīng)存儲(chǔ)在數(shù)據(jù)庫中的數(shù)據(jù)的行為叫做更新。你可以更新單個(gè)行,也可以更新表中所有的行,還可以更新其中的一部分行。 我們可以獨(dú)立地更新每個(gè)列,而其他的列則不受影響。
要更新現(xiàn)有的行,使用UPDATE命令。這需要提供三部分信息:
表的名字和要更新的列名
列的新值
要更新的是哪(些)行
我們在第 5 章里說過,SQL 通常并不為行提供唯一標(biāo)識(shí)符。因此我們無法總是直接指定需要更新哪一行。但是,我們可以通過指定一個(gè)被更新的行必須滿足的條件。只有在表里面存在主鍵的時(shí)候(不管你聲明它還是不聲明它),我們才能可靠地通過選擇一個(gè)匹配主鍵的條件來指定一個(gè)獨(dú)立的行。圖形化的數(shù)據(jù)庫訪問工具就靠這允許我們獨(dú)立地更新某些行。
例如,這條命令把所有價(jià)格為5的產(chǎn)品的價(jià)格更新為10:
UPDATE products SET price = 10 WHERE price = 5;
這樣做可能導(dǎo)致零行、一行或者更多行被更新。如果我們試圖做一個(gè)不匹配任何行的更新,那也不算錯(cuò)誤。
讓我們仔細(xì)看看這個(gè)命令。首先是關(guān)鍵字UPDATE
, 然后跟著表名字。和平常一樣,表名字也可以是用模式限定的, 否則會(huì)從路徑中查找它。然后是關(guān)鍵字SET
, 后面跟著列名、一個(gè)等號(hào)以及新的列值。新的列值可以是任意標(biāo)量表達(dá)式, 而不僅僅是常量。例如,如果你想把所有產(chǎn)品的價(jià)格提高 10%,你可以用:
UPDATE products SET price = price * 1.10;
如你所見,用于新值的表達(dá)式也可以引用行中現(xiàn)有的值。我們還忽略了WHERE
子句。如果我們忽略了這個(gè)子句, 那么就意味著表中的所有行都要被更新。如果出現(xiàn)了WHERE
子句, 那么只有匹配它后面的條件的行被更新。請注意在SET
子句中的等號(hào)是一個(gè)賦值, 而在WHERE
子句中的等號(hào)是比較,不過這樣并不會(huì)導(dǎo)致任何歧義。當(dāng)然WHERE
條件不一定非得是等值測試。許多其他操作符也都可以使用(參閱第 9 章)。但是表達(dá)式必須得出一個(gè)布爾結(jié)果。
你還可以在一個(gè)UPDATE
命令中更新更多的列, 方法是在SET
子句中列出更多賦值。例如:
UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0;
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: