A view is a virtual table that shows data from one or more tables. It does not store data itself but displays data based on a query.
Click to reveal answer
beginner
Can you perform INSERT, UPDATE, or DELETE on any MySQL view?
No, you can only perform these operations on views if they are updatable. Some views are not updatable due to their complexity or use of certain SQL features.
Click to reveal answer
intermediate
Why can't views with GROUP BY clauses be updated directly?
Because GROUP BY summarizes data, it is unclear how to update individual rows in the original tables from the grouped results.
Click to reveal answer
intermediate
Are views that use UNION or DISTINCT updatable in MySQL?
No, views that use UNION or DISTINCT are not updatable because they combine or filter rows in ways that prevent direct row mapping to base tables.
Click to reveal answer
beginner
What happens if you try to create an index on a MySQL view?
MySQL does not allow creating indexes on views because views do not store data physically.
Click to reveal answer
Which of the following is true about MySQL views?
AViews store data physically in the database.
BViews can always be updated regardless of their query.
CViews can have indexes created on them.
DViews are virtual tables based on queries.
✗ Incorrect
Views are virtual tables that show data based on queries but do not store data themselves.
Why are views with GROUP BY clauses not updatable?
ABecause GROUP BY changes the structure of the base tables.
BBecause GROUP BY summarizes data making row updates ambiguous.
CBecause GROUP BY requires indexes on views.
DBecause GROUP BY is not supported in views.
✗ Incorrect
GROUP BY summarizes data, so it is unclear how to update individual rows in the original tables.
Which SQL feature in a view prevents it from being updatable?
ASimple SELECT from one table
BUse of ORDER BY without LIMIT
CUse of UNION or DISTINCT
DUse of WHERE clause
✗ Incorrect
UNION or DISTINCT combine or filter rows in ways that prevent direct updates to the base tables.
Can you create an index on a MySQL view?
ANo, because views do not store data.
BOnly if the view is updatable.
CYes, always.
DOnly on views with a primary key.
✗ Incorrect
Views do not store data physically, so indexes cannot be created on them.
Which operation is NOT always allowed on a MySQL view?
AINSERT
BSELECT
CJOIN
DWHERE filtering
✗ Incorrect
INSERT is only allowed on updatable views; some views cannot be inserted into.
Explain why some MySQL views are not updatable and give examples of SQL features that cause this limitation.
Think about how the view's query affects the ability to map changes back to base tables.
You got /4 concepts.
Describe what a view is in MySQL and list at least two limitations related to modifying data through views.
Focus on the nature of views and their interaction with data modification.
You got /4 concepts.
Practice
(1/5)
1. Which of the following is true about MySQL views?
easy
A. Views always allow you to update data directly.
B. Views do not store data themselves; they show data from base tables.
C. Views can have indexes to speed up queries.
D. Views automatically create backup copies of data.
Solution
Step 1: Understand what a view is and check each option
A view is a virtual table that shows data from one or more base tables but does not store data itself. Views do not store data themselves; they show data from base tables. matches the definition. Options A, C, and D are incorrect because views do not always allow updates, cannot have indexes, and do not store backup data.
Final Answer:
Views do not store data themselves; they show data from base tables. -> Option B
Quick Check:
Views are virtual tables = B [OK]
Hint: Remember: Views show data, they don't store it [OK]
Common Mistakes:
Thinking views store data like tables
Assuming views always allow updates
Believing views can have indexes
2. Which of the following is the correct syntax to create a simple view in MySQL?
easy
A. CREATE VIEW AS SELECT * FROM table_name;
B. CREATE TABLE view_name AS SELECT * FROM table_name;
C. CREATE VIEW view_name FROM table_name;
D. CREATE VIEW view_name AS SELECT * FROM table_name;
Solution
Step 1: Recall the syntax for creating a view and compare options
The correct syntax is: CREATE VIEW view_name AS SELECT ... CREATE VIEW view_name AS SELECT * FROM table_name; matches the correct syntax. CREATE TABLE view_name AS SELECT * FROM table_name; creates a table, not a view. CREATE VIEW view_name FROM table_name; has incorrect syntax.
Final Answer:
CREATE VIEW view_name AS SELECT * FROM table_name; -> Option D
Quick Check:
CREATE VIEW ... AS SELECT ... = D [OK]
Hint: Use 'CREATE VIEW name AS SELECT...' for views [OK]
Common Mistakes:
Using CREATE TABLE instead of CREATE VIEW
Omitting AS keyword
Incorrect order of clauses
3. Given the view definition: CREATE VIEW v_emp AS SELECT id, name FROM employees; Which of the following queries will return the correct result?
medium
A. INSERT INTO v_emp (id, name) VALUES (6, 'Anna');
B. UPDATE v_emp SET name = 'John' WHERE id = 5;
C. SELECT * FROM v_emp WHERE id = 5;
D. DELETE FROM v_emp WHERE id = 5;
Solution
Step 1: Understand the view and its limitations, then analyze each query
The view selects id and name from employees. Simple views on one table allow SELECT but may restrict UPDATE, INSERT, DELETE. SELECT * FROM v_emp WHERE id = 5; is a SELECT query and will work correctly. Options B, C, and D try to modify data through the view, which is often not allowed or restricted.
Final Answer:
SELECT * FROM v_emp WHERE id = 5; -> Option C
Quick Check:
Simple views allow SELECT only = A [OK]
Hint: Views usually allow SELECT, not data changes [OK]
Common Mistakes:
Trying to update or insert through views without triggers
Assuming all views are updatable
Ignoring view restrictions on DELETE
4. You created a view with this statement: CREATE VIEW v_sales AS SELECT order_id, customer_id, total FROM orders WHERE total > 100; When you try to update the view with: UPDATE v_sales SET total = 90 WHERE order_id = 10; You get an error. What is the likely cause?
medium
A. The view contains a WHERE clause filtering rows, making it non-updatable.
B. You cannot update any view in MySQL.
C. The view does not include the primary key column.
D. The UPDATE syntax is incorrect for views.
Solution
Step 1: Identify view update restrictions and check the error cause
Views with WHERE clauses or filtering conditions are often non-updatable because the database cannot guarantee consistent updates. The view contains a WHERE clause filtering rows, making it non-updatable. explains the error correctly. You cannot update any view in MySQL. is false because some views are updatable. The view does not include the primary key column. is incorrect because order_id is included. The UPDATE syntax is incorrect for views. is wrong as syntax is valid.
Final Answer:
The view contains a WHERE clause filtering rows, making it non-updatable. -> Option A
Quick Check:
WHERE clause in view blocks updates = A [OK]
Hint: Views with filters often block updates [OK]
Common Mistakes:
Assuming all views are updatable
Blaming syntax instead of view definition
Ignoring WHERE clause effect on updates
5. You want to create a view that allows updating the salary column of employees but also shows the department name from a joined table. Which approach respects MySQL view limitations?
hard
A. Create a simple view on employees only, then update salary directly on employees table.
B. Create a view joining employees and departments, then update salary through the view.
C. Create a view with a WHERE clause filtering departments, then update salary through it.
D. Create a view with GROUP BY on departments and update salary through the view.
Solution
Step 1: Understand update restrictions on views with joins and choose the approach that allows updates
Views that join multiple tables or use GROUP BY are generally non-updatable in MySQL. Create a simple view on employees only, then update salary directly on employees table. creates a simple view on one table, allowing updates on salary by updating the base table directly. Options A, B, and D involve joins, filters, or grouping, which block updates.
Final Answer:
Create a simple view on employees only, then update salary directly on employees table. -> Option A
Quick Check:
Simple single-table views allow updates = C [OK]
Hint: Update only through simple single-table views [OK]
Common Mistakes:
Trying to update through joined or grouped views
Assuming filters don't block updates
Ignoring base table updates
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.