openGauss 更新表中資料

techbing發表於2024-06-25

更新表中資料

修改已經儲存在資料庫中資料的行為叫做更新。使用者可以更新單獨一行、所有行或者指定的部分行。還可以獨立更新每個欄位,而其他欄位則不受影響。

使用UPDATE命令更新現有行,需要提供以下三種資訊:

  • 表的名稱和要更新的欄位名
  • 欄位的新值
  • 要更新哪些行

SQL通常不會為資料行提供唯一標識,因此無法直接宣告需要更新哪一行。但是可以透過宣告一個被更新的行必須滿足的條件。只有在表裡存在主鍵的時候,才可以透過主鍵指定一個獨立的行。

建立表和插入資料的步驟請參考建立表向表中插入資料

需要將表customer_t1中c_customer_sk為9527的地域重新定義為9876:

openGauss=# UPDATE customer_t1 SET c_customer_sk = 9876 WHERE c_customer_sk = 9527;

這裡的表名稱也可以使用模式名修飾,否則會從預設的模式路徑找到這個表。SET後面緊跟欄位和新的欄位值。新的欄位值不僅可以是常量,也可以是變數表示式。

比如,把所有c_customer_sk的值增加100:

openGauss=# UPDATE customer_t1 SET c_customer_sk = c_customer_sk + 100;

在這裡省略了WHERE子句,表示表中的所有行都要被更新。如果出現了WHERE子句,那麼只有匹配其條件的行才會被更新。

在SET子句中的等號是一個賦值,而在WHERE子句中的等號是比較。WHERE條件不一定是相等測試,許多其他的運算子也可以使用。

使用者可以在一個UPDATE命令中更新更多的欄位,方法是在SET子句中列出更多賦值,比如:

openGauss=# UPDATE customer_t1 SET  c_customer_id = 'Admin', c_first_name = 'Local' WHERE c_customer_sk = 4421; 

批次更新或刪除資料後,會在資料檔案中產生大量的刪除標記,查詢過程中標記刪除的資料也是需要掃描的。故多次批次更新/刪除後,標記刪除的資料量過大會嚴重影響查詢的效能。建議在批次更新/刪除業務會反覆執行的場景下,定期執行VACUUM FULL以保持查詢效能。

詳情檢視:https://opengauss.org

詳情檢視:https://docs-opengauss.osinfra.cn

相關文章