修改資料庫中已存在的資料稱為更新。您可以更新個別的列、表格中所有的列,或是所有列的子集合。每個欄位都可以獨立更新;其他的欄位不會受到影響。
要更新現有的列,請使用 UPDATE 指令。這需要三項資訊:
要更新的表格和欄位名稱
欄位的新值
要更新的列
回顧 第 5 章,SQL 通常不提供列的唯一識別碼。因此,並不總是能直接指定要更新的列。取而代之的是,您指定列必須符合哪些條件才能更新。只有在表格中有主鍵 (無論您是否已宣告) 時,才能透過選擇符合主鍵的條件來可靠地定址個別的列。圖形資料庫存取工具依賴此事實,以允許您個別更新列。
例如,以下指令會將所有價格為 5 的產品更新為價格 10:
UPDATE products SET price = 10 WHERE price = 5;
這可能會導致零列、一列或多列被更新。嘗試更新不符合任何列的情況並非錯誤。
讓我們詳細看看該指令。首先是關鍵字 UPDATE
,後面接著表格名稱。與往常一樣,表格名稱可以具有 schema 限定,否則會在路徑中查找。接下來是關鍵字 SET
,後面接著欄位名稱、等號和新的欄位值。新的欄位值可以是任何純量運算式,而不僅僅是一個常數。例如,如果您想將所有產品的價格提高 10%,您可以使用:
UPDATE products SET price = price * 1.10;
如您所見,新值的運算式可以參考列中現有的值。我們也省略了 WHERE
子句。如果省略它,則表示表格中的所有列都會被更新。如果存在,則只有符合 WHERE
條件的列會被更新。請注意,SET
子句中的等號是賦值,而 WHERE
子句中的等號是比較,但這不會造成任何歧義。當然,WHERE
條件不必是相等性測試。還有許多其他的運算子可用 (請參閱 第 9 章)。但運算式需要評估為布林結果。
您可以在一個 UPDATE
指令中更新多個欄位,方法是在 SET
子句中列出多個賦值。例如:
UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0;
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的地方,請使用 此表格 回報文件問題。