A view is like a saved query that looks like a table. It shows data from one or more tables but does not store data itself.
Click to reveal answer
beginner
How do you create a simple view in MySQL?
Use the syntax: CREATE VIEW view_name AS SELECT column1, column2 FROM table_name WHERE condition;
Click to reveal answer
intermediate
Can you update data through a view?
Sometimes yes, if the view is simple and directly maps to one table. Complex views with joins or aggregations usually cannot be updated.
Click to reveal answer
beginner
Why use views instead of tables?
Views help simplify complex queries, hide sensitive data, and provide a consistent interface to data without duplicating it.
Click to reveal answer
intermediate
What happens if you drop a table that a view depends on?
The view will stop working because it depends on that table's data. You must drop or recreate the view after dropping the table.
Click to reveal answer
Which SQL command creates a view?
ASELECT VIEW
BCREATE TABLE
CCREATE VIEW
DINSERT VIEW
✗ Incorrect
The CREATE VIEW command is used to create a view in SQL.
A view stores data separately from the tables it uses. True or False?
ATrue
BDepends on the database
COnly sometimes
DFalse
✗ Incorrect
Views do not store data themselves; they show data from underlying tables.
Which of these is a benefit of using views?
ASimplify complex queries
BStore large amounts of data
CReplace tables permanently
DIncrease database size
✗ Incorrect
Views simplify complex queries by saving them as reusable virtual tables.
Can you create a view that joins multiple tables?
AYes
BNo
COnly in MySQL 8+
DOnly if tables have same columns
✗ Incorrect
Views can include joins from multiple tables to combine data.
What happens if you try to update data through a complex view with joins?
AUpdate always succeeds
BUpdate usually fails
CView automatically converts to table
DData is duplicated
✗ Incorrect
Complex views with joins usually cannot be updated directly.
Explain what a view is and why you might use one in a database.
Think about how views help you see data without copying it.
You got /5 concepts.
Describe the basic steps and syntax to create a view in MySQL.
Remember the command starts with CREATE VIEW followed by a SELECT query.
You got /5 concepts.
Practice
(1/5)
1. What is the main purpose of creating a view in MySQL?
easy
A. To delete data from multiple tables at once
B. To save a SELECT query as a virtual table for easy reuse
C. To permanently store data physically in the database
D. To create a backup of the database
Solution
Step 1: Understand what a view is
A view is a virtual table that stores a SELECT query, not data itself.
Step 2: Identify the purpose of views
Views simplify complex queries and allow reuse without storing data physically.
Final Answer:
To save a SELECT query as a virtual table for easy reuse -> Option B
Quick Check:
Views = virtual tables for queries [OK]
Hint: Views store queries, not data, for easy reuse [OK]
Common Mistakes:
Thinking views store data physically
Confusing views with backups
Assuming views delete data
2. Which of the following is the correct syntax to create a view named employee_view showing id and name from employees table?
easy
A. VIEW CREATE employee_view AS SELECT id, name FROM employees;
B. CREATE employee_view VIEW AS SELECT id, name FROM employees;
C. CREATE VIEW employee_view AS SELECT id, name FROM employees;
D. CREATE VIEW employee_view SELECT id, name FROM employees;
Solution
Step 1: Recall the correct CREATE VIEW syntax
The syntax is: CREATE VIEW view_name AS SELECT ...
Step 2: Match the syntax with options
CREATE VIEW employee_view AS SELECT id, name FROM employees; matches the correct syntax exactly.
Final Answer:
CREATE VIEW employee_view AS SELECT id, name FROM employees; -> Option C
Quick Check:
CREATE VIEW ... AS SELECT ... [OK]
Hint: Remember: CREATE VIEW name AS SELECT ... [OK]
Common Mistakes:
Swapping keywords CREATE and VIEW
Omitting AS keyword
Incorrect keyword order
3. Given the table products with columns id, name, and price, what will be the output of SELECT * FROM cheap_products; if cheap_products is created as CREATE VIEW cheap_products AS SELECT id, name FROM products WHERE price < 50;?
medium
A. Only id and name columns of products with price less than 50
B. All columns (id, name, price) of products with price less than 50
C. Only products with price greater than or equal to 50
D. Syntax error because price column is missing in view
Solution
Step 1: Analyze the view definition
The view selects only id and name columns where price is less than 50.
Step 2: Understand the SELECT * from the view
Since the view only has id and name, SELECT * returns only these columns for matching rows.
Final Answer:
Only id and name columns of products with price less than 50 -> Option A
Quick Check:
View columns = selected columns only [OK]
Hint: View shows only columns defined in its SELECT [OK]
Common Mistakes:
Expecting all original table columns
Confusing filter condition with columns selected
Assuming syntax error if columns omitted
4. What is wrong with this statement? CREATE VIEW sales_view AS SELECT order_id, total FROM orders WHERE;
medium
A. Using SELECT instead of INSERT
B. Missing AS keyword before SELECT
C. Incorrect view name syntax
D. Missing condition after WHERE clause
Solution
Step 1: Check the syntax after WHERE
The WHERE clause must have a condition; here it is empty.
Step 2: Confirm other parts are correct
AS keyword is present, view name is valid, SELECT is correct for views.
Final Answer:
Missing condition after WHERE clause -> Option D
Quick Check:
WHERE requires a condition [OK]
Hint: WHERE must always have a condition [OK]
Common Mistakes:
Leaving WHERE empty
Confusing AS placement
Using wrong SQL command for views
5. You want to create a view active_customers that shows customer id, name, and their total orders from customers and orders tables. Which query correctly creates this view?
hard
A. CREATE VIEW active_customers AS SELECT c.id, c.name, COUNT(o.order_id) AS total_orders FROM customers c LEFT JOIN orders o ON c.id = o.customer_id GROUP BY c.id, c.name;
B. CREATE VIEW active_customers AS SELECT id, name, total_orders FROM customers;
C. CREATE VIEW active_customers AS SELECT c.id, c.name, SUM(o.price) FROM customers c JOIN orders o ON c.id = o.customer_id;
D. CREATE VIEW active_customers AS SELECT c.id, c.name, COUNT(o.order_id) FROM customers c, orders o WHERE c.id = o.customer_id;
Solution
Step 1: Understand the requirement
The view must show customer id, name, and total orders count, including customers with zero orders.
Step 2: Analyze each option
CREATE VIEW active_customers AS SELECT c.id, c.name, COUNT(o.order_id) AS total_orders FROM customers c LEFT JOIN orders o ON c.id = o.customer_id GROUP BY c.id, c.name; uses LEFT JOIN to include all customers and counts orders grouped by customer, which is correct. CREATE VIEW active_customers AS SELECT id, name, total_orders FROM customers; misses orders data. CREATE VIEW active_customers AS SELECT c.id, c.name, SUM(o.price) FROM customers c JOIN orders o ON c.id = o.customer_id; sums price but misses GROUP BY and alias. CREATE VIEW active_customers AS SELECT c.id, c.name, COUNT(o.order_id) FROM customers c, orders o WHERE c.id = o.customer_id; uses implicit join without GROUP BY, causing incorrect aggregation.
Final Answer:
CREATE VIEW active_customers AS SELECT c.id, c.name, COUNT(o.order_id) AS total_orders FROM customers c LEFT JOIN orders o ON c.id = o.customer_id GROUP BY c.id, c.name; -> Option A
Quick Check:
LEFT JOIN + GROUP BY + COUNT = correct aggregation [OK]
Hint: Use LEFT JOIN and GROUP BY to count related rows [OK]
Common Mistakes:
Forgetting GROUP BY with aggregation
Using INNER JOIN and missing customers without orders
Not aliasing aggregated columns
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.