📖 Scenario: You manage a small bookstore database. You want to update the prices and stock quantities of some books after a new shipment arrives.
🎯 Goal: Learn how to update multiple columns in a SQL table using a single UPDATE statement.
📋 What You'll Learn
Create a table called books with columns id, title, price, and stock.
Insert three books with specific values into the books table.
Write an UPDATE statement to change the price and stock of a specific book.
Use a WHERE clause to update only the intended book.
💡 Why This Matters
🌍 Real World
Updating multiple columns in a database is common when managing inventories, user profiles, or any data that changes over time.
💼 Career
Database administrators and developers often write UPDATE queries to maintain accurate and current data in business applications.
Progress0 / 4 steps
1
Create the books table
Write a SQL statement to create a table called books with these columns: id as an integer primary key, title as text, price as a decimal number, and stock as an integer.
SQL
Hint
Use CREATE TABLE books and define each column with its type. Remember to set id as the primary key.
2
Insert initial book records
Insert these three books into the books table with exact values: (1, 'The Great Gatsby', 10.99, 5), (2, '1984', 8.99, 8), and (3, 'To Kill a Mockingbird', 12.50, 3).
SQL
Hint
Use a single INSERT INTO books statement with multiple rows separated by commas.
3
Write the UPDATE statement to change price and stock
Write an UPDATE statement to change the price to 9.99 and stock to 10 for the book with id = 2.
SQL
Hint
Use UPDATE books SET price = 9.99, stock = 10 WHERE id = 2; to update both columns at once.
4
Complete the update with a confirmation query
Add a SELECT statement to show all columns for the book with id = 2 to confirm the update.
SQL
Hint
Use SELECT * FROM books WHERE id = 2; to see the updated row.
Practice
(1/5)
1. What does the SQL UPDATE statement do when you specify multiple columns in the SET clause?
easy
A. It deletes the rows that match the condition.
B. It only updates the first column listed and ignores the rest.
C. It creates new rows with the specified column values.
D. It changes the values of all specified columns in the selected rows.
Solution
Step 1: Understand the UPDATE statement
The UPDATE statement modifies existing rows in a table.
Step 2: Effect of multiple columns in SET clause
When multiple columns are listed in SET, all those columns are updated in the rows that match the WHERE condition.
Final Answer:
It changes the values of all specified columns in the selected rows. -> Option D
Quick Check:
UPDATE with multiple columns updates all listed columns [OK]
Hint: SET updates all listed columns together [OK]
Common Mistakes:
Thinking UPDATE adds new rows
Believing UPDATE deletes rows
Assuming only first column updates
2. Which of the following is the correct syntax to update two columns, price and stock, in a table named products?
easy
A. UPDATE products SET price = 10, stock = 50 WHERE id = 1;
B. UPDATE products (price = 10, stock = 50) WHERE id = 1;
C. UPDATE products SET (price, stock) = (10, 50) WHERE id = 1;
D. UPDATE products WHERE id = 1 SET price = 10, stock = 50;
Solution
Step 1: Recall correct UPDATE syntax
The correct syntax is UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
Step 2: Check each option
UPDATE products SET price = 10, stock = 50 WHERE id = 1; matches the correct syntax exactly. The other options have syntax errors.
Final Answer:
UPDATE products SET price = 10, stock = 50 WHERE id = 1; -> Option A
Quick Check:
SET column = value pairs separated by commas [OK]
Hint: Use SET column=value, column=value syntax [OK]
Common Mistakes:
Using parentheses incorrectly in SET clause
Placing WHERE before SET
Missing commas between column assignments
3. Given the table employees with columns salary and bonus, what will be the result of this query?
UPDATE employees SET salary = salary + 1000, bonus = 500 WHERE department = 'Sales';
medium
A. All employees get salary and bonus updated regardless of department.
B. Only the salary of Sales employees increases; bonus remains unchanged.
C. All employees in Sales get their salary increased by 1000 and bonus set to 500.
D. Syntax error because multiple columns cannot be updated together.
Solution
Step 1: Understand the WHERE clause effect
The WHERE clause limits updates to rows where department = 'Sales'.
Step 2: Analyze SET clause changes
Salary increases by 1000 and bonus is set to 500 for those rows only.
Final Answer:
All employees in Sales get their salary increased by 1000 and bonus set to 500. -> Option C
Quick Check:
WHERE filters rows; SET updates all listed columns [OK]
Hint: WHERE limits rows; SET updates all columns listed [OK]
Common Mistakes:
Ignoring WHERE and updating all rows
Thinking bonus stays unchanged
Believing multiple columns update causes error
4. Identify the error in this SQL statement:
UPDATE orders SET status = 'Shipped' stock = 0 WHERE order_id = 123;
medium
A. WHERE clause should come before SET clause.
B. Missing comma between column assignments in SET clause.
C. Incorrect table name used.
D. Quotes around 'Shipped' should be double quotes.
Solution
Step 1: Check SET clause syntax
Multiple columns must be separated by commas in SET clause.
Step 2: Identify missing comma
Between status = 'Shipped' and stock = 0, a comma is missing.
Final Answer:
Missing comma between column assignments in SET clause. -> Option B
Quick Check:
Separate columns with commas in SET [OK]
Hint: Put commas between each column=value pair [OK]
Common Mistakes:
Omitting commas between columns
Placing WHERE before SET
Using wrong quotes for strings
5. You want to update the price and discount columns in the products table only for items where category is 'Electronics' and current stock is less than 10. Which query correctly does this?
hard
A. UPDATE products SET price = price * 0.9, discount = 10 WHERE category = 'Electronics' AND stock < 10;
B. UPDATE products SET price = price * 0.9, discount = 10 WHERE category = 'Electronics' OR stock < 10;
C. UPDATE products SET price = price * 0.9 discount = 10 WHERE category = 'Electronics' AND stock < 10;
D. UPDATE products SET price = price * 0.9, discount = 10 WHERE category = 'Electronics' AND stock > 10;
Solution
Step 1: Understand the condition requirements
We want to update only rows where category is 'Electronics' AND stock is less than 10.
Step 2: Check each option's WHERE clause and syntax
UPDATE products SET price = price * 0.9, discount = 10 WHERE category = 'Electronics' AND stock < 10; uses AND with correct conditions and proper syntax. UPDATE products SET price = price * 0.9, discount = 10 WHERE category = 'Electronics' OR stock < 10; uses OR, which updates more rows. UPDATE products SET price = price * 0.9 discount = 10 WHERE category = 'Electronics' AND stock < 10; misses a comma between assignments. UPDATE products SET price = price * 0.9, discount = 10 WHERE category = 'Electronics' AND stock > 10; uses stock > 10, which is incorrect.
Final Answer:
UPDATE products SET price = price * 0.9, discount = 10 WHERE category = 'Electronics' AND stock < 10; -> Option A
Quick Check:
Use AND for combined conditions and commas between columns [OK]
Hint: Use AND for all conditions; separate columns with commas [OK]
Common Mistakes:
Using OR instead of AND in WHERE
Missing commas between columns
Wrong comparison operators in WHERE
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.