SQL - UPDATE 查詢:精通數據修改

你好,有志於數據庫的熱心同好!今天,我們將深入探索 SQL UPDATE 查詢的精彩世界。作為你們親切友善的電腦老師,我將指導你們掌握這個數據庫操作的重要方面。別擔心你們對編程還是新手——我們會從基礎開始,逐步學習。所以,拿起你的虛擬筆記本,我們開始吧!

SQL - Update Query

SQL UPDATE 認語句:數據的改頭換面工具

想像你有一本數字地址簿,但你的朋友剛搬到了一個新房子。你不可能扔掉整本書重新開始,對吧?這就是 SQL UPDATE 認語句派上用場的地方。它讓我們能夠在不刪除和重新創建記錄的情況下,修改數據庫表中的現有數據。

基本語法

讓我們從 UPDATE 認語句的基本結構開始:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

現在,讓我們分解這個結構:

  1. UPDATE table_name:這指定了我們想要修改的表。
  2. SET column1 = value1, column2 = value2, ...:在這裡,我們列出我們想要改變的列和他們的新值。
  3. WHERE condition:這非常關鍵!它決定了哪些行將被更新。

一個簡單的例子

讓我們假設我們有一個 students 表,我們想要更新一個學生的電子郵件地址:

UPDATE students
SET email = '[email protected]'
WHERE student_id = 101;

在這個例子中:

  • 我們正在更新 students 表。
  • 我們正在將 email 列設置為一個新值。
  • 我們只更新 student_id 為 101 的行。

把它想像成在地址簿中更正一個條目。簡單吧?

WHERE 子句的重要性

這裡有一點老師的智慧:除非你有意更新每一行,否則總是使用 WHERE 子句。沒有它,你可能会不小心改變所有的數據!

例如:

UPDATE students
SET grade = 'A';

糟糕!這會給每個學生一個 A 等級。雖然這可能會讓你受到學生的喜愛,但這可能不是你的本意!

更新多行和多列:批量編輯的力量

現在我們已經掌握了基礎,讓我們升級並學習如何同時更新多行和多列。這就像一次能夠在地址簿中更正多個條目一樣——真是節省時間!

更新多列

你可以通過在 SET 子句中用逗號分隔來一次更新多個列:

UPDATE employees
SET salary = 55000, department = 'IT'
WHERE employee_id = 1001;

這將更新員工 ID 為 1001 的員工的薪水和部門。效率很高,不是嗎?

更新多行

WHERE 子句的力量允許我們根據特定條件更新多行:

UPDATE products
SET price = price * 1.1
WHERE category = 'Electronics';

這將電子產品的價格提高了 10%。想像一下手動為數百種產品做這件事!

在更新中使用子查詢

這裡變得非常有趣。我們可以使用子查詢使我們的更新更加動態:

UPDATE orders
SET total_amount = (
SELECT SUM(price * quantity)
FROM order_items
WHERE order_items.order_id = orders.id
)
WHERE status = 'Pending';

這個看起來複雜的查詢會根據訂單項更新所有待處理訂單的總金額。這就像有一個智能計算器,自動在會計簿中更新總額!

實際範例

讓我們看看一些真實世界的場景:

  1. 給在公司的員工加薪超過 5 年:
UPDATE employees
SET salary = salary * 1.15
WHERE hire_date <= DATE_SUB(CURRENT_DATE, INTERVAL 5 YEAR);
  1. 更新逾期圖書的狀態:
UPDATE books
SET status = 'Overdue'
WHERE due_date < CURRENT_DATE AND status = 'Borrowed';
  1. 對銷售速度慢的庫存應用折扣:
UPDATE products
SET price = price * 0.9, discount_applied = TRUE
WHERE last_sold_date < DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH);

最佳實踐和建議

在我們結束之前,這裡有一些使用 UPDATE 查詢的金科玉律:

  1. 總是在一個小的數據子集上測試你的 UPDATE 查詢。
  2. 對於複雜的更新,使用事務來確保數據完整性。
  3. 雙重檢查你的 WHERE 子句,以避免意外的更新。
  4. 考慮對相關表和約束的影響。

這裡有一個方便的表格,總結了 UPDATE 認語句的關鍵組成部分:

組件 描述 示例
UPDATE 指定要更新的表 UPDATE employees
SET 列出列和他們的新值 SET salary = 50000, department = 'HR'
WHERE 定義更新行的條件 WHERE employee_id = 1001
子查詢 可以在 SET 或 WHERE 子句中使用 SET salary = (SELECT AVG(salary) FROM employees)

記住,能力越強,責任越大。UPDATE 認語句非常有用,但如果使用不慎,也可能會非常危險。在對重要數據執行之前,總是雙重檢查你的查詢。

這就是全部了!你剛剛通過 UPDATE 查詢升級了你的 SQL 技能。從簡單的更正到複雜的多表更新,你現在已經準備好像專業人士一樣修改你的數據庫數據。持續練習,保持好奇心,並且快樂地查詢吧!

Credits: Image by storyset