What if you could change hundreds of prices with just one simple command?
Why UPDATE with expressions in SQL? - Purpose & Use Cases
Imagine you have a big list of products with prices in a spreadsheet. You want to increase all prices by 10%. Doing this by hand means opening each row and typing the new price one by one.
Manually changing each price is slow and boring. It's easy to make mistakes, like typing the wrong number or missing some rows. If you have hundreds or thousands of products, this becomes a huge headache.
Using UPDATE with expressions in SQL lets you change many rows at once by calculating new values automatically. You can tell the database to increase prices by 10% in one simple command, saving time and avoiding errors.
Update each price cell manually in the spreadsheet.UPDATE products SET price = price * 1.10;This lets you quickly and safely adjust data in bulk, making your work faster and more reliable.
A store owner wants to raise all product prices by 10% because of increased costs. Instead of editing each price, they run one SQL command to update all prices instantly.
Manual updates are slow and error-prone.
UPDATE with expressions automates bulk changes.
It saves time and reduces mistakes.
Practice
UPDATE employees SET salary = salary + 500 do?Solution
Step 1: Understand the UPDATE statement
The statement updates the 'salary' column in the 'employees' table.Step 2: Analyze the expression used
It adds 500 to the current salary value for every row because no WHERE clause limits the rows.Final Answer:
Increases the salary of all employees by 500 -> Option BQuick Check:
salary = salary + 500 [OK]
- Thinking it sets salary to 500 instead of adding
- Confusing UPDATE with DELETE
- Assuming it adds 500 only to some rows without WHERE
Solution
Step 1: Identify correct expression for 10% increase
Multiplying price by 1.10 increases it by 10%.Step 2: Check WHERE clause for category filtering
WHERE category = 'Books' limits update to only books.Final Answer:
UPDATE products SET price = price * 1.10 WHERE category = 'Books'; -> Option AQuick Check:
price * 1.10 with WHERE category = 'Books' [OK]
- Using + 10% which is invalid syntax
- Adding 0.10 instead of 10%
- Multiplying price by 10 instead of 1.10
accounts with columns id, balance, what will be the balances after running:UPDATE accounts SET balance = balance - 100 WHERE balance >= 500;Initial balances: 400, 500, 600
Solution
Step 1: Identify which rows meet the WHERE condition
Only balances 500 and 600 are >= 500, so only these rows update.Step 2: Subtract 100 from qualifying balances
500 - 100 = 400, 600 - 100 = 500; 400 remains unchanged.Final Answer:
[400, 400, 500] -> Option DQuick Check:
Only balances >= 500 reduced by 100 [OK]
- Updating all rows ignoring WHERE
- Subtracting 100 from all balances
- Confusing >= with >
UPDATE orders SET total = total + discount WHERE discount;Solution
Step 1: Analyze the WHERE clause
WHERE discount is incomplete; it needs a condition like discount > 0.Step 2: Check other parts of the statement
Table name and SET expression are correct; updating with another column is valid.Final Answer:
The WHERE clause is invalid because it lacks a comparison -> Option CQuick Check:
WHERE must have a condition, not just a column name [OK]
- Assuming column names alone are valid WHERE conditions
- Thinking SET cannot use other columns
- Ignoring missing comparison in WHERE
Solution
Step 1: Use a subquery to get average salary
The subquery (SELECT AVG(salary) FROM employees) returns the average salary.Step 2: Apply 5% increase only to salaries below average
WHERE salary < average filters employees below average; salary * 1.05 increases salary by 5%.Final Answer:
UPDATE employees SET salary = salary * 1.05 WHERE salary < (SELECT AVG(salary) FROM employees); -> Option AQuick Check:
Use subquery in WHERE and multiply salary by 1.05 [OK]
- Using AVG(salary) without subquery
- Adding 5 instead of 5%
- Updating salaries above average instead of below
- Multiplying by 0.95 which decreases salary
Ready to prove it?
Pass the test and this pattern moves unknown
