Bird
Raised Fist0
MySQLquery~10 mins

Updatable views in MySQL - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Updatable views
Create View
↓
Query View
↓
Update View Data?
↓
Update Base Table
↓
Reflect Changes in View
This flow shows how an update on a view is checked and either applied to the base table or rejected if not allowed.
Execution Sample
MySQL
CREATE VIEW v_emp AS SELECT id, name, salary FROM employees;
UPDATE v_emp SET salary = salary + 100 WHERE id = 2;
This code creates a simple view and updates the salary of employee with id 2 through the view.
Execution Table
StepActionEvaluationResult
1Create view v_empView created on employees(id, name, salary)View v_emp ready
2Update v_emp set salary = salary + 100 where id = 2Check if view is updatableView is updatable
3Translate update to base tableUpdate employees set salary = salary + 100 where id = 2Base table updated
4Reflect changes in viewQuery view for id=2Salary increased by 100
5EndNo more updatesUpdate complete
💡 Update stops after applying changes to base table and reflecting in view
Variable Tracker
VariableStartAfter Step 3Final
salary (id=2)500051005100
Key Moments - 2 Insights
Why can we update the view but not all views are updatable?
Only views that directly map to a single base table without complex joins or aggregations are updatable, as shown in step 2 where the system checks if the view is updatable.
What happens if the view is not updatable?
The update is rejected and does not affect the base table, unlike step 3 where the update is translated and applied.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the salary of employee with id=2 after step 3?
A5000
B5100
C5200
D4900
💡 Hint
Check the variable_tracker row for salary after step 3
At which step does the system confirm the view can be updated?
AStep 2
BStep 1
CStep 3
DStep 4
💡 Hint
Look at the evaluation column in the execution_table for step 2
If the view included a join, what would happen at step 2?
AUpdate partially applied
BUpdate proceeds normally
CUpdate is rejected
DView is dropped
💡 Hint
Refer to key_moments about updatable views and step 2 evaluation
Concept Snapshot
CREATE VIEW view_name AS SELECT columns FROM table;
Updates on simple views affect the base table directly.
Only views without joins, aggregates, or complex expressions are updatable.
Updating a view translates to updating the underlying table.
If not updatable, update commands on the view fail.
Full Transcript
Updatable views in MySQL allow you to change data through a view if the view is simple enough. The process starts by creating a view that selects columns from a base table. When you try to update the view, MySQL checks if the view is updatable. If yes, it translates the update to the base table and applies it. The changes then show up in the view. If the view is complex, like having joins or aggregates, the update is rejected. This ensures data integrity and clear mapping between views and tables.

Practice

(1/5)
1. What is an updatable view in MySQL?
easy
A. A view that only shows data but does not allow any changes.
B. A view that allows you to change the data in the underlying table through it.
C. A view that automatically creates new tables.
D. A view that stores data separately from the original table.

Solution

  1. Step 1: Understand what a view is

    A view is a saved query that shows data from one or more tables.
  2. Step 2: Define updatable view

    An updatable view lets you change data in the underlying table through the view itself.
  3. Final Answer:

    A view that allows you to change the data in the underlying table through it. -> Option B
  4. Quick Check:

    Updatable view = allows data change [OK]
Hint: Updatable views let you edit data through the view [OK]
Common Mistakes:
  • Thinking views store data separately
  • Confusing read-only views with updatable views
  • Assuming all views are updatable
2. Which of the following is the correct syntax to create an updatable view in MySQL?
easy
A. CREATE VIEW view_name UPDATEABLE AS SELECT * FROM table_name;
B. CREATE UPDATABLE VIEW view_name AS SELECT * FROM table_name;
C. CREATE VIEW view_name WITH UPDATE AS SELECT * FROM table_name;
D. CREATE VIEW view_name AS SELECT * FROM table_name;

Solution

  1. Step 1: Recall MySQL view creation syntax

    MySQL uses CREATE VIEW view_name AS SELECT ... to create views.
  2. Step 2: Understand updatable views syntax

    There is no special keyword for updatable views; they are updatable if the SELECT is simple enough.
  3. Final Answer:

    CREATE VIEW view_name AS SELECT * FROM table_name; -> Option D
  4. Quick Check:

    Standard CREATE VIEW syntax = CREATE VIEW view_name AS SELECT * FROM table_name; [OK]
Hint: No special keyword needed; simple CREATE VIEW works [OK]
Common Mistakes:
  • Adding non-existent keywords like UPDATABLE or WITH UPDATE
  • Using wrong syntax keywords
  • Assuming updatable views need special creation syntax
3. Given the table employees(id, name, salary) and the view:
CREATE VIEW emp_view AS SELECT id, name FROM employees;
Which of the following statements will succeed?
medium
A. UPDATE emp_view SET name = 'Alice' WHERE id = 1;
B. INSERT INTO emp_view (id, name) VALUES (4, 'Bob');
C. DELETE FROM emp_view WHERE salary = 2000;
D. UPDATE emp_view SET salary = 5000 WHERE id = 3;

Solution

  1. Step 1: Check view columns and underlying table

    The view selects only id and name, excluding salary.
  2. Step 2: Determine which operations are allowed

    Updating name through the view is allowed because it maps directly to the table column.
    INSERT fails (missing salary, assuming NOT NULL no default).
    DELETE referencing salary fails because salary not in view.
    Updating salary fails because salary not in view.
  3. Final Answer:

    UPDATE emp_view SET name = 'Alice' WHERE id = 1; -> Option A
  4. Quick Check:

    Update on view columns allowed = UPDATE emp_view SET name = 'Alice' WHERE id = 1; [OK]
Hint: You can update only columns included in the view [OK]
Common Mistakes:
  • Trying to update columns not in the view
  • Assuming inserts/deletes always work on views
  • Ignoring missing columns in the view
4. You created a view with:
CREATE VIEW v AS SELECT id, name FROM employees WHERE salary > 3000;
Why does the statement UPDATE v SET salary = 5000 WHERE id = 5; fail?
medium
A. Because the view does not include the salary column.
B. Because the view has a WHERE clause, making it non-updatable.
C. Because you cannot update views with more than one column.
D. Because the view name is invalid.

Solution

  1. Step 1: Check the columns in the view and the UPDATE target

    The view selects only id and name; salary is excluded.
  2. Step 2: Check other options

    A WHERE clause does not prevent updates to included columns.
    Views can have multiple columns and be updatable.
    The view name is valid.
  3. Final Answer:

    Because the view does not include the salary column. -> Option A
  4. Quick Check:

    Cannot update column not in view [OK]
Hint: Cannot modify columns absent from the view [OK]
Common Mistakes:
  • Thinking WHERE clause blocks updates
  • Assuming multiple columns prevent updates
  • Ignoring missing columns in the view
5. You want to create an updatable view on the orders table that shows only order_id and customer_id. You also want to allow updates to customer_id through the view. Which of the following is the best approach?
hard
A. CREATE VIEW order_view AS SELECT order_id FROM orders; Then update customer_id through order_view.
B. CREATE VIEW order_view AS SELECT order_id, customer_id FROM orders WHERE order_date > '2023-01-01'; Then update customer_id through order_view.
C. CREATE VIEW order_view AS SELECT order_id, customer_id FROM orders; Then update customer_id through order_view.
D. CREATE VIEW order_view AS SELECT order_id, customer_id, total FROM orders; Then update customer_id through order_view.

Solution

  1. Step 1: Identify columns needed in the view

    The view must include customer_id to allow updates on it.
  2. Step 2: Avoid issues that limit updatability or scope

    Adding a WHERE clause (as in B) limits updates to only recent orders.
    Including extra columns (as in C) shows more than requested.
    Excluding customer_id (as in A) prevents updating it.
    D provides exactly the requested columns without restrictions.
  3. Final Answer:

    CREATE VIEW order_view AS SELECT order_id, customer_id FROM orders; Then update customer_id through order_view. -> Option C
  4. Quick Check:

    Simple view with needed columns = updatable [OK]
Hint: Include columns to update, avoid WHERE filters [OK]
Common Mistakes:
  • Adding WHERE filters that limit updates
  • Excluding columns you want to update
  • Adding unnecessary columns that confuse
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard