📖 Scenario: You are managing a small online bookstore database. You have created a view to show the list of books with their authors and prices. Now, you need to update this view to include the book's publication year and also learn how to remove the view when it is no longer needed.
🎯 Goal: Build and modify a MySQL view step-by-step: first create a view, then alter it by dropping and recreating it with additional columns, and finally drop the view completely.
📋 What You'll Learn
Create a view named book_list showing title, author, and price from the books table
Create a variable view_name holding the name of the view
Drop the existing book_list view
Recreate the book_list view including publication_year along with the original columns
Drop the book_list view completely at the end
💡 Why This Matters
🌍 Real World
Views help organize and simplify complex queries in real-world databases, making it easier for users to access specific data without writing complex SQL every time.
💼 Career
Database administrators and developers often create, modify, and drop views to maintain efficient and clear data access layers in applications.
Progress0 / 4 steps
1
Create the initial view
Write a SQL statement to create a view called book_list that selects title, author, and price columns from the books table.
MySQL
Hint
Use CREATE VIEW view_name AS SELECT ... FROM table_name; syntax.
2
Set the view name variable
Create a SQL variable called @view_name and set it to the string 'book_list'.
MySQL
Hint
Use SET @variable_name = 'value'; to assign a string to a variable.
3
Drop and recreate the view with publication year
Write SQL statements to drop the view named book_list and then recreate it to include publication_year along with title, author, and price from the books table.
MySQL
Hint
Use DROP VIEW view_name; to remove a view before recreating it.
4
Drop the view completely
Write a SQL statement to drop the view named book_list completely from the database.
MySQL
Hint
Use DROP VIEW view_name; to remove the view.
Practice
(1/5)
1. What does the DROP VIEW statement do in MySQL?
easy
A. Deletes an existing view from the database
B. Creates a new view in the database
C. Updates the data inside a view without deleting it
D. Renames an existing view
Solution
Step 1: Understand the purpose of DROP VIEW
The DROP VIEW command is used to remove a view completely from the database.
Step 2: Differentiate from other commands
Creating or updating views uses CREATE VIEW or ALTER VIEW, not DROP VIEW.
Final Answer:
Deletes an existing view from the database -> Option A
Quick Check:
DROP VIEW = delete view [OK]
Hint: DROP VIEW removes the view completely from the database [OK]
Common Mistakes:
Confusing DROP VIEW with ALTER VIEW
Thinking DROP VIEW updates data inside the view
Assuming DROP VIEW renames the view
2. Which of the following is the correct syntax to drop a view named employee_view?
easy
A. DELETE VIEW employee_view;
B. DROP employee_view;
C. DROP VIEW employee_view;
D. REMOVE VIEW employee_view;
Solution
Step 1: Recall the correct DROP VIEW syntax
The correct syntax to delete a view is DROP VIEW view_name;.
Step 2: Check each option
DROP VIEW employee_view; matches the correct syntax exactly. Others use invalid keywords like DELETE or REMOVE.
Final Answer:
DROP VIEW employee_view; -> Option C
Quick Check:
DROP VIEW + view name = correct syntax [OK]
Hint: Use DROP VIEW followed by the view name to delete it [OK]
Common Mistakes:
Omitting the VIEW keyword
Using DELETE or REMOVE instead of DROP
Adding extra semicolons inside the command
3. Given the view definition:
CREATE VIEW active_users AS SELECT id, name FROM users WHERE status = 'active';
What will be the result after running:
ALTER VIEW active_users AS SELECT id, name FROM users WHERE status = 'inactive';
and then querying SELECT * FROM active_users;?
medium
A. It will show users with status 'active'
B. It will cause a syntax error
C. It will show all users regardless of status
D. It will show users with status 'inactive'
Solution
Step 1: Understand ALTER VIEW effect
The ALTER VIEW statement changes the view's query to the new SELECT statement.
Step 2: Analyze the new query condition
The new view selects users where status = 'inactive', so querying the view returns inactive users.
Final Answer:
It will show users with status 'inactive' -> Option D
Quick Check:
ALTER VIEW changes query = shows inactive users [OK]
Hint: ALTER VIEW changes the view's query to the new SELECT statement [OK]
Common Mistakes:
Assuming ALTER VIEW appends to the old query
Expecting a syntax error from ALTER VIEW
Thinking the view still shows old data after alteration
4. You try to run the command:
ALTER VIEW sales_summary AS SELECT product_id, SUM(quantity) FROM sales GROUP BY product_id;
but get an error. What is the most likely cause?
medium
A. You cannot use GROUP BY in a view
B. The view sales_summary does not exist
C. ALTER VIEW requires DROP VIEW first
D. The view name is invalid
Solution
Step 1: Check prerequisites for ALTER VIEW
ALTER VIEW requires the specified view to already exist in the database.
Step 2: Rule out other causes
GROUP BY is allowed in views, no need to DROP first, and sales_summary is valid.
Final Answer:
The view sales_summary does not exist -> Option B
Quick Check:
ALTER VIEW requires existing view [OK]
Hint: Ensure the view exists before ALTER VIEW [OK]
Common Mistakes:
Thinking GROUP BY is not allowed in views
Trying to ALTER VIEW without dropping it first
Assuming view names cause this error
5. You have a view customer_orders that shows customer names and their order counts. You want to update it to also show the total order amount. Which sequence of commands correctly updates the view without losing it?
hard
A. ALTER VIEW customer_orders AS SELECT name, COUNT(*), SUM(amount) FROM orders GROUP BY name;
B. DROP VIEW customer_orders; CREATE VIEW customer_orders AS SELECT name, COUNT(*), SUM(amount) FROM orders GROUP BY name;
C. UPDATE VIEW customer_orders SET total_amount = SUM(amount);
D. MODIFY VIEW customer_orders AS SELECT name, COUNT(*), SUM(amount) FROM orders GROUP BY name;
Solution
Step 1: Identify how to update a view
Use ALTER VIEW to change the view's query without dropping it.
Step 2: Check the options
ALTER VIEW customer_orders AS SELECT name, COUNT(*), SUM(amount) FROM orders GROUP BY name; uses ALTER VIEW with the new SELECT statement including SUM(amount). DROP VIEW customer_orders; CREATE VIEW customer_orders AS SELECT name, COUNT(*), SUM(amount) FROM orders GROUP BY name; drops and recreates, which loses the view temporarily. The other options use invalid commands.
Final Answer:
ALTER VIEW customer_orders AS SELECT name, COUNT(*), SUM(amount) FROM orders GROUP BY name; -> Option A
Quick Check:
ALTER VIEW updates view query safely [OK]
Hint: Use ALTER VIEW to update view queries without dropping [OK]
Common Mistakes:
Dropping view unnecessarily before recreating
Using UPDATE or MODIFY which are invalid for views
Not including GROUP BY when using aggregation
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.