SqlServer:修改和刪除數據


更新數據

UPDATE 語句

修改記錄的 SQL 語句是 UPDATE,用於更新記錄中某一個字段的值。UPDATE 語句的語法格式是如下,使用 WHERE 子句指出哪些行要更新,用 SET 關鍵字指定新值,輸入值的類型必須與所定義的數據類型一致。

UPDATE 表名
SET 列名 = 表達式[,…n]
[WHERE 條件]

在一條 UPDATE 命令可以同時對幾個字段的值進行修改,如果沒有 WHERE 條件子句,所有記錄的這一列的值全部改為同一個值。如果加了 WHERE 條件,則只對符合條件的記錄修改。

更新樣例

假設 Student 和 Score 2 張表中有如下一些數據:

樣例一

把所有人的出生日期中的月份減 1,直接使用 SET 指定修改的值。

UPDATE Student
SET Sbirthday = DATEADD(MONTH, -1, Sbirthday)

樣例二

把課程號 3-105 的所有成績減 10,在上一個樣例的基礎上加上 WHERE 進行過濾。

UPDATE Score 
SET Degree -= 10 
WHERE Cno = '3-105'

樣例三

把學號 101 所有成績加 10,最大不超過 100,使用 CASE WHEN THEN 語句令 UPDATE 能多分支地更新數據。

UPDATE Score SET Degree = 
	CASE WHEN Degree < 90 THEN Degree + 10
	WHEN Degree >= 90 THEN 100
	END
WHERE Sno = 101

樣例四

把男生所有成績加 10%,女生所有成績加 10(最大不超過 100),需要連接 Score 表和 Student 表獲得性別信息。

UPDATE Score SET Degree = 
	CASE WHEN S.ssex = '男' AND Degree < 90.9 THEN Degree * 1.1
	WHEN S.ssex = '女' AND Degree < 90 THEN Degree + 10
	ELSE 100 END
FROM Score SC JOIN Student S ON SC.Sno = S.Sno
WHERE Degree != NULL

樣例五

假設 Course 表中有如下一些數據:

把課程計算機導論的所有成績加 10,使用子查詢查出“計算機導論”的課程號作為過濾條件。

UPDATE Score
SET Degree += 10 
WHERE Cno = (SELECT Cno FROM Course WHERE Cname = '計算機導論')

刪除數據

DELETE 語句

刪除記錄的 SQL 語句是 DELETE,其格式如下所示。

DELETE [FROM] 表名
[WHERE 條件]

FROM 可以省略,如果不帶條件,則刪除所有記錄。如果帶條件,則刪除符合條件的記錄,刪除后的記錄無法恢復。

刪除樣例

樣例一

刪除成為 null 的成績。

DELETE FROM Score WHERE Degree is NULL

樣例二

刪除王芳芳的操作系統成績,需要連接 Student 表和 Course 表再進行過濾。

DELETE Score
FROM Score SC
JOIN Student S ON S.Sno = SC.Sno
JOIN Course C ON SC.Cno = C.Cno
WHERE S.Sname = '王芳芳' AND C.Cname = '系統成績'

參考資料

《SqlServer 2014 數據庫技術實用教程》,胡伏湘、肖玉朝 主編,清華大學出版社


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM