一、MySQL 更新語句
MySQL 更新語句用於修改表中的數據,可以根據需要修改一行或多行數據,具體語法如下:
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
其中 table_name 表示要更新數據的表名稱,field1、field2 表示要更新的字段名稱,new-value1、new-value2 表示要更新的數據,
WHERE Clause 則表示篩選條件,限定更新哪些數據行,如果不加條件,則會更新表中的所有數據。
通過以下示例可以更好地理解 MySQL 更新語句:
UPDATE users SET age=25 WHERE name='Tom';
UPDATE users SET age=age+1 WHERE gender='male';
第一個示例中將名字為 Tom 的用戶的年齡修改為 25,第二個示例中將所有男性用戶的年齡加 1。
二、MySQL 連表更新
在實際開發中,可能需要更新多個表中的數據,這時可以使用 MySQL 連表更新語句,例如:
UPDATE table1, table2
SET table1.column = new_value1,
table2.column = new_value2
WHERE table1.join_column = table2.join_column;
其中,table1 、table2 表示需要更新的兩個表,join_column 表示它們的連接列,new_value1、new_value2 表示新的值。
以下示例演示了如何使用 MySQL 連表更新語句:
UPDATE users, orders
SET users.age = 30, orders.status = 2
WHERE users.id = orders.user_id AND users.name='Tom';
上述示例中,當用戶 Tom 的訂單發生變化時,可以通過更新 users 表中的數據來反映訂單狀態的變化。
三、MySQL 更新數據
MySQL 更新數據的方式有兩種:
1. 直接更新,通過 SET 關鍵字設置新值。
2. 直接複製,通過 SELECT 子句設置新值。
具體語法如下所示:
UPDATE table_name
SET column_name1 = new_value1,
column_name2 = (SELECT expression FROM table_name WHERE condition),
[WHERE];
以下示例演示了如何使用 MySQL 更新數據:
UPDATE accounts SET balance = 1000 WHERE account_number = 123;
UPDATE employees SET salary = (SELECT AVG(salary) FROM employees WHERE department_id = 2) WHERE department_id = 2;
第一個示例中將賬戶號為 123 的賬戶的餘額更新為 1000,第二個示例中將部門 2 中員工的薪水更新為該部門的平均工資。
四、MySQL 聯表更新
MySQL 聯表更新語句是一種特殊的更新語句,它允許我們更新與某個記錄有關聯的所有表,具體語法如下所示:
UPDATE table_name1 INNER JOIN table_name2 ON table_name1.column_name = table_name2.column_name
SET table_name1.column_name = new_value1,
table_name2.column_name = new_value2
[WHERE];
以下示例演示了如何使用 MySQL 聯表更新語句:
UPDATE customers
INNER JOIN orders ON customers.customer_id = orders.customer_id
SET customers.last_order = orders.order_date
WHERE orders.order_status = 'shipped';
上述示例中,當訂單發生變化時,將顧客的最後一張訂單更新為新訂單的訂單日期。
五、MySQL 版本更新
MySQL 版本更新可以用於在更新數據時記錄修改時間戳或更新版本,具體語法如下所示:
UPDATE table_name SET column_name = new_value,
version = version + 1
WHERE primary_key = key_value AND version = current_version;
其中,primary_key 表示主鍵,key_value 表示記錄唯一標識,version 表示版本號,new_value 表示新的數據。
以下示例演示了如何使用 MySQL 版本更新:
UPDATE accounts SET balance = balance - 100, version = version + 1 WHERE account_number = 123 AND version = 3;
上述示例中,將賬戶號為 123 的賬戶餘額減去 100,同時將版本號加 1。
六、MySQL 更新視圖
MySQL 視圖是一種虛擬表,它是由一個或多個基表的行或列組合而成的,我們可以使用 MySQL 更新視圖來修改視圖中的數據,具體語法如下所示:
UPDATE view_name SET column_name = new_value WHERE condition;
其中,view_name 表示要更新的視圖名,column_name 表示要更新的列名,new_value 表示新值,condition 是更新的條件。
以下示例演示了如何使用 MySQL 更新視圖:
CREATE VIEW v_customers_orders AS
SELECT customers.customer_id,
orders.order_id,
orders.order_total
FROM customers
JOIN orders ON customers.customer_id = orders.customer_id;
UPDATE v_customers_orders SET order_total = 500 WHERE customer_id = 100;
上述示例中,先創建了一個名為 v_customers_orders 的視圖,然後更新了該視圖中客戶 100 的訂單總額為 500。
七、MySQL 批量更新
MySQL 批量更新語句可以同時更新多個記錄,從而提高更新效率,具體語法如下所示:
UPDATE table_name
SET column_name1 = CASE
WHEN condition1 THEN new_value1_1
WHEN condition2 THEN new_value1_2
...
ELSE column_name1
END,
column_name2 = CASE
WHEN condition1 THEN new_value2_1
WHEN condition2 THEN new_value2_2
...
ELSE column_name2
END
[WHERE condition];
其中,table_name 表示要更新的表名,column_name1、column_name2 表示要更新的列名,new_value1_1、new_value1_2 表示新值,
condition1、condition2 是條件,ELSE 表示默認情況下保持原來的值。
以下示例演示了如何使用 MySQL 批量更新:
UPDATE employees SET salary = CASE
WHEN department_id = 1 THEN salary * 1.05
WHEN department_id = 2 THEN salary * 1.08
ELSE salary
END,
commission_pct = CASE
WHEN department_id = 1 THEN commission_pct * 1.2
WHEN department_id = 2 THEN commission_pct * 1.5
ELSE commission_pct
END
WHERE hire_date < '2000-01-01';
上述示例中,將 2000 年以前入職的員工的薪水和傭金按部門分別進行不同的加成。
原創文章,作者:UNAV,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/147422.html