Bird
Raised Fist0
PostgreSQLquery~5 mins

CREATE VIEW syntax in PostgreSQL - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a VIEW in a database?
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
Basic syntax to create a VIEW in PostgreSQL?
Use:
CREATE VIEW view_name AS SELECT column1, column2 FROM table_name;
This creates a virtual table named view_name based on the SELECT query.
Click to reveal answer
intermediate
Can you update data through a VIEW?
Usually, you cannot update data through a VIEW unless it is a simple view and the database supports updatable views. Complex views often are read-only.
Click to reveal answer
intermediate
What happens if you try to create a VIEW that already exists without using IF NOT EXISTS?
PostgreSQL will return an error saying the view already exists. To avoid this, use CREATE OR REPLACE VIEW to update the existing view or drop it first.
Click to reveal answer
intermediate
Explain the purpose of the CREATE OR REPLACE VIEW statement.
It creates a new view if it doesn't exist or replaces the definition of an existing view without dropping it. This helps update views safely.
Click to reveal answer
Which statement correctly creates a view named 'employee_view' showing 'name' and 'salary' from 'employees' table?
ACREATE VIEW employee_view AS SELECT name, salary FROM employees;
BCREATE TABLE employee_view AS SELECT name, salary FROM employees;
CSELECT name, salary INTO employee_view FROM employees;
DCREATE employee_view VIEW AS SELECT name, salary FROM employees;
What does a VIEW store in the database?
AOnly the query definition
BActual data rows
CIndexes for fast access
DTemporary data copies
How can you modify an existing view without dropping it first?
ACREATE VIEW view_name AS ...
BALTER VIEW view_name AS ...
CCREATE OR REPLACE VIEW view_name AS ...
DDROP VIEW view_name; CREATE VIEW view_name AS ...
If you create a view with the same name as an existing one without OR REPLACE, what happens?
AThe old view is replaced automatically
BBoth views exist with the same name
CThe new view is ignored
DAn error is raised
Which of these is NOT a benefit of using views?
ASimplify complex queries
BStore large amounts of data physically
CImprove data security by restricting columns
DProvide a consistent interface to data
Describe how to create a simple view in PostgreSQL and explain what it does.
Think about how a view acts like a saved SELECT query.
You got /4 concepts.
    Explain the difference between CREATE VIEW and CREATE OR REPLACE VIEW.
    Consider what happens if the view already exists.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using CREATE VIEW in PostgreSQL?
      easy
      A. To delete rows from a table
      B. To save a SELECT query as a virtual table for easy reuse
      C. To permanently store data in a new table
      D. To create an index on a table column

      Solution

      1. Step 1: Understand what a view is

        A view is a virtual table that stores a SELECT query, not actual data.
      2. Step 2: Identify the purpose of CREATE VIEW

        CREATE VIEW saves the SELECT query so you can reuse it easily without rewriting it.
      3. Final Answer:

        To save a SELECT query as a virtual table for easy reuse -> Option B
      4. Quick Check:

        CREATE VIEW = virtual table for queries [OK]
      Hint: Views save SELECT queries as virtual tables [OK]
      Common Mistakes:
      • Thinking views store data permanently
      • Confusing views with tables
      • Using CREATE VIEW to delete data
      2. Which of the following is the correct syntax to create a view named active_users showing users with status = 'active'?
      easy
      A. CREATE VIEW active_users AS SELECT * FROM users WHERE status = 'active';
      B. CREATE active_users VIEW AS SELECT * FROM users WHERE status = 'active';
      C. VIEW CREATE active_users AS SELECT * FROM users WHERE status = 'active';
      D. CREATE VIEW active_users SELECT * FROM users WHERE status = 'active';

      Solution

      1. Step 1: Recall the correct CREATE VIEW syntax

        The syntax is: CREATE VIEW view_name AS SELECT ...
      2. Step 2: Match the syntax with options

        CREATE VIEW active_users AS SELECT * FROM users WHERE status = 'active'; matches the correct syntax exactly.
      3. Final Answer:

        CREATE VIEW active_users AS SELECT * FROM users WHERE status = 'active'; -> Option A
      4. Quick Check:

        CREATE VIEW view_name AS SELECT ... [OK]
      Hint: Syntax is CREATE VIEW name AS SELECT ... [OK]
      Common Mistakes:
      • Swapping CREATE and VIEW keywords
      • Omitting AS keyword
      • Missing semicolon at the end
      3. Given the table orders with columns order_id, customer_id, and amount, what will be the result of this view?
      CREATE VIEW big_orders AS SELECT order_id, amount FROM orders WHERE amount > 100;

      What rows will SELECT * FROM big_orders; return?
      medium
      A. No rows, syntax error in view
      B. All orders with amount less than or equal to 100
      C. All orders regardless of amount
      D. All orders with amount greater than 100

      Solution

      1. Step 1: Analyze the SELECT query inside the view

        The view selects order_id and amount from orders where amount is greater than 100.
      2. Step 2: Understand what SELECT * FROM big_orders returns

        It returns all rows from the view, which are orders with amount > 100.
      3. Final Answer:

        All orders with amount greater than 100 -> Option D
      4. Quick Check:

        View filters orders with amount > 100 [OK]
      Hint: View returns rows matching its SELECT query condition [OK]
      Common Mistakes:
      • Confusing greater than with less than
      • Expecting all columns instead of selected ones
      • Assuming syntax error without checking carefully
      4. Identify the error in this CREATE VIEW statement:
      CREATE VIEW recent_customers AS SELECT id, name FROM customers WHERE;
      medium
      A. Missing condition after WHERE keyword
      B. Missing AS keyword before SELECT
      C. View name cannot be recent_customers
      D. SELECT must include all columns

      Solution

      1. Step 1: Check the syntax after WHERE

        The WHERE clause is incomplete; it must have a condition after WHERE.
      2. Step 2: Verify other parts of the statement

        AS keyword is present, view name is valid, and SELECT columns are allowed to be partial.
      3. Final Answer:

        Missing condition after WHERE keyword -> Option A
      4. Quick Check:

        WHERE must have a condition [OK]
      Hint: WHERE clause must have a condition [OK]
      Common Mistakes:
      • Leaving WHERE empty
      • Forgetting AS keyword
      • Thinking view names have restrictions
      5. You want to create a view customer_orders that shows each customer's name and the total amount they spent. Which of these is the correct way to create this view assuming tables customers(id, name) and orders(customer_id, amount)?
      hard
      A. CREATE VIEW customer_orders AS SELECT c.name, o.amount FROM customers c, orders o WHERE c.id = o.customer_id;
      B. CREATE VIEW customer_orders AS SELECT name, amount FROM customers JOIN orders ON id = customer_id;
      C. CREATE VIEW customer_orders AS SELECT c.name, SUM(o.amount) FROM customers c JOIN orders o ON c.id = o.customer_id GROUP BY c.name;
      D. CREATE VIEW customer_orders AS SELECT name, SUM(amount) FROM orders GROUP BY name;

      Solution

      1. Step 1: Understand the requirement

        We need each customer's name and total amount spent, so we must join customers and orders and sum amounts grouped by customer name.
      2. Step 2: Check each option

        CREATE VIEW customer_orders AS SELECT c.name, SUM(o.amount) FROM customers c JOIN orders o ON c.id = o.customer_id GROUP BY c.name; correctly joins tables, sums amounts, and groups by customer name. Others miss grouping or join conditions.
      3. Final Answer:

        CREATE VIEW customer_orders AS SELECT c.name, SUM(o.amount) FROM customers c JOIN orders o ON c.id = o.customer_id GROUP BY c.name; -> Option C
      4. Quick Check:

        Join + SUM + GROUP BY = correct view [OK]
      Hint: Use JOIN with GROUP BY and SUM for aggregation views [OK]
      Common Mistakes:
      • Missing GROUP BY when using SUM
      • Not joining tables properly
      • Selecting columns not in GROUP BY
      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