Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Dropping and Altering Views in SQL
📖 Scenario: You are managing a small company's database. You have created a view to simplify access to employee contact details. Now, you need to update this view to include department information and also learn how to remove views when they are no longer needed.
🎯 Goal: Build SQL commands to create a view, alter it to include more data, and then drop the view when it is no longer required.
📋 What You'll Learn
Create a view named employee_contacts that shows employee names and emails.
Alter the employee_contacts view to also include the department name.
Drop the employee_contacts view.
💡 Why This Matters
🌍 Real World
Views help simplify complex queries and provide a consistent way to access data in business applications.
💼 Career
Database administrators and developers often create, modify, and drop views to optimize data access and maintain database structure.
Progress0 / 4 steps
1
Create the initial view
Write a SQL statement to create a view called employee_contacts that selects employee_name and email columns from the employees table.
SQL
Hint
Use CREATE VIEW view_name AS SELECT columns FROM table; syntax.
2
Add a configuration for the department column
Write a SQL statement to alter the employee_contacts view to include the department_name column by joining the departments table on employees.department_id = departments.department_id.
SQL
Hint
Use CREATE OR REPLACE VIEW to update the view with a JOIN.
3
Drop the view
Write a SQL statement to drop the view named employee_contacts.
SQL
Hint
Use DROP VIEW view_name; to remove a view.
4
Recreate the original view after dropping
Write a SQL statement to recreate the original employee_contacts view that selects only employee_name and email from the employees table.
SQL
Hint
Recreate the view using the original columns.
Practice
(1/5)
1. What does the SQL command DROP VIEW view_name; do?
easy
A. It updates the data inside the view view_name.
B. It renames the view view_name to another name.
C. It creates a new view called view_name.
D. It deletes the view named view_name from the database.
Solution
Step 1: Understand the purpose of DROP VIEW
The command DROP VIEW is used to remove a view from the database completely.
Step 2: Analyze the command effect
Using DROP VIEW view_name; deletes the view named view_name, so it no longer exists.
Final Answer:
It deletes the view named view_name from the database. -> Option D
Quick Check:
DROP VIEW removes a view [OK]
Hint: DROP VIEW deletes a view completely from the database [OK]
Common Mistakes:
Thinking DROP VIEW updates data inside the view
Confusing DROP VIEW with CREATE VIEW
Assuming DROP VIEW renames the view
2. Which of the following is the correct syntax to change the query inside an existing view named employee_view?
easy
A. MODIFY VIEW employee_view SELECT * FROM employees;
B. UPDATE VIEW employee_view SET query = 'SELECT * FROM employees';
C. ALTER VIEW employee_view AS SELECT * FROM employees WHERE active = 1;
D. CHANGE VIEW employee_view TO SELECT * FROM employees;
Solution
Step 1: Recall ALTER VIEW syntax
The correct syntax to change a view's query is ALTER VIEW view_name AS SELECT ....
Step 2: Check each option
ALTER VIEW employee_view AS SELECT * FROM employees WHERE active = 1; uses the correct syntax. Options B, C, and D use invalid or non-existent commands.
Final Answer:
ALTER VIEW employee_view AS SELECT * FROM employees WHERE active = 1; -> Option C
Quick Check:
ALTER VIEW uses AS SELECT [OK]
Hint: Use ALTER VIEW view_name AS SELECT ... to update a view [OK]
Common Mistakes:
Using UPDATE or MODIFY instead of ALTER
Omitting AS keyword
Trying to rename view with ALTER VIEW
3. Given a view active_customers defined as SELECT * FROM customers WHERE status = 'active', what will be the result after running ALTER VIEW active_customers AS SELECT * FROM customers WHERE status = 'inactive'; and then querying SELECT * FROM active_customers;?
medium
A. It will return all customers with status 'inactive'.
B. It will cause a syntax error.
C. It will return all customers regardless of status.
D. It will return all customers with status 'active'.
Solution
Step 1: Understand ALTER VIEW effect
The ALTER VIEW command changes the query inside the view to the new SELECT statement.
Step 2: Analyze the new query
The view now selects customers where status = 'inactive'. So querying the view returns inactive customers.
Final Answer:
It will return all customers with status 'inactive'. -> Option A
Quick Check:
ALTER VIEW changes the view's query [OK]
Hint: ALTER VIEW changes the query; output matches new SELECT [OK]
Common Mistakes:
Assuming view still returns old data after ALTER
Thinking ALTER VIEW causes errors if view exists
Confusing view data with table data
4. You try to run ALTER VIEW sales_view AS SELECT * FROM sales WHERE amount > 1000; but get an error. What is the most likely cause?
medium
A. The view sales_view does not exist.
B. The SELECT query inside ALTER VIEW is missing a semicolon.
C. You cannot use WHERE clauses inside ALTER VIEW.
D. ALTER VIEW requires DROP VIEW before use.
Solution
Step 1: Check ALTER VIEW prerequisites
ALTER VIEW requires the view to already exist to modify it.
Step 2: Identify common error cause
If the view sales_view does not exist, ALTER VIEW will fail with an error.
Final Answer:
The view sales_view does not exist. -> Option A
Quick Check:
ALTER VIEW fails if view missing [OK]
Hint: Ensure view exists before ALTER VIEW [OK]
Common Mistakes:
Thinking WHERE clause is invalid in ALTER VIEW
Assuming semicolon inside ALTER VIEW causes error
Believing DROP VIEW is needed before ALTER VIEW
5. You have a view product_summary showing product names and total sales. You want to update it to include only products with sales over 500. Which sequence of commands correctly updates the view without losing it?
hard
A. DROP VIEW product_summary; CREATE VIEW product_summary AS SELECT name, SUM(sales) FROM products GROUP BY name HAVING SUM(sales) > 500;
B. ALTER VIEW product_summary AS SELECT name, SUM(sales) FROM products GROUP BY name HAVING SUM(sales) > 500;
C. UPDATE VIEW product_summary SET query = 'SELECT name, SUM(sales) FROM products GROUP BY name HAVING SUM(sales) > 500;';
D. REPLACE VIEW product_summary AS SELECT name, SUM(sales) FROM products GROUP BY name HAVING SUM(sales) > 500;
Solution
Step 1: Understand how to update a view's query
ALTER VIEW updates the query inside an existing view without dropping it.
Step 2: Check each option's correctness
ALTER VIEW product_summary AS SELECT name, SUM(sales) FROM products GROUP BY name HAVING SUM(sales) > 500; uses ALTER VIEW with the correct query. DROP VIEW product_summary; CREATE VIEW product_summary AS SELECT name, SUM(sales) FROM products GROUP BY name HAVING SUM(sales) > 500; drops and recreates the view, which is not needed. Options B and D use invalid commands.
Final Answer:
ALTER VIEW product_summary AS SELECT name, SUM(sales) FROM products GROUP BY name HAVING SUM(sales) > 500; -> Option B
Quick Check:
Use ALTER VIEW to update view query safely [OK]
Hint: Use ALTER VIEW to update query without dropping [OK]
Common Mistakes:
Dropping view unnecessarily before updating
Using UPDATE VIEW or REPLACE VIEW which are invalid