今天是SQL課程的第九課。
講講UPDATE 更新語句,用來修改表中的一條或多條記錄。
基本語法:
UPDATE <表名> SET <字段名=值> WHERE <篩選條件>;
1、更新單行
實(shí)例:將Students表中,學(xué)生編號(hào)Sid為1的學(xué)生姓名Sname改為:“喵寧一”

UPDATE StudentsSET Sname="喵寧一" WHERE Sid=1;

這時(shí)很可能遇到這個(gè)錯(cuò)誤:
You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
解決方案:
出現(xiàn)錯(cuò)誤是因?yàn)閃orkbench默認(rèn)開啟了Safe Updates功能,不允許隨便修改刪除記錄,我們先關(guān)閉該功能。
在
MySQLWorkbench-Preferences-SQL Editor-將Safe Updates前面的勾去掉。再重啟Workbench軟件就可以了。

SET后面還可以是數(shù)學(xué)表達(dá)式。
實(shí)例:將Students表中,學(xué)生編號(hào)Sid為1的學(xué)生姓名對(duì)應(yīng)的Tid加100。
UPDATE Students
SET Tid=Tid+100
WHERE Sid=1;

2、更新多行
讓 WHERE條件包含更多記錄,就會(huì)同時(shí)更改多條記錄了
實(shí)例:將Students表中,性別Ssex為男的學(xué)生,學(xué)生編號(hào)Sid加200
UPDATE Students
SET Sid=Sid+200
WHERE Ssex="男";

3、UPDATE + 子查詢
子查詢是查詢語句里面嵌套的查詢語句,子查詢的結(jié)果作為主查詢的查詢條件,完成更復(fù)雜數(shù)據(jù)檢索。
我們來講講UPDATE語句怎樣結(jié)合子查詢來更改語句,本質(zhì)上是將子查詢與WHERE子句結(jié)合使用。
實(shí)例:將Students學(xué)生表中,班主任為李四的記錄,學(xué)生性別Ssex更改為“女生”。
解析:因?yàn)閷W(xué)生表中只要班主任的Tid教師編號(hào),沒有姓名,所以要從教師表中查詢李四的Tid。

UPDATE StudentsSET Ssex="女生"WHERE Tid = ( SELECT Tid From Teachers WHERE Tname = "李四");

如果子查詢返回的是多個(gè)數(shù)據(jù)時(shí),就不能用等號(hào)而要用 IN 了。
作業(yè):將Students學(xué)生表中,班主任為張三和李四的記錄,學(xué)生性別Ssex更改為“男生”。
答案解析:因?yàn)樽硬樵兎祷氐腡id為(1,2),有兩個(gè),這個(gè)時(shí)候就不能用等號(hào)了,需要用Tid IN (子查詢)。
第一步:先將子查詢寫好,查出張三和李四班主任對(duì)應(yīng)的Tid。
SELECT Tid
From Teachers
WHERE Tname IN("李四","張三")

第二步,將子查詢加入到WHERE條件中,將對(duì)應(yīng)學(xué)生的學(xué)生性別更改為“男生”。
UPDATE Students
SET Ssex="男生"
WHERE Tid IN (
SELECT Tid
From Teachers
WHERE Tname IN("李四","張三")
);

下節(jié)課我們來講講怎樣從數(shù)據(jù)庫中刪除數(shù)據(jù)。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至2705686032@qq.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。原文轉(zhuǎn)載: 原文出處: