🗄️ SQL Q20 / 104

What is a view?

AI-Powered Answer ✓ Answered

In SQL, a view is a virtual table based on the result-set of an SQL query. It acts like a regular table, but its data is not stored physically; instead, it is computed dynamically when the view is queried.

What is a SQL View?

A SQL view is a stored query that can be treated as a virtual table. It presents data from one or more underlying tables without storing the data itself. When you query a view, the underlying SQL query that defines the view is executed, and the result set is returned. This allows for data abstraction and simplification of complex queries.

Key Characteristics

  • Virtual table: Does not store data physically.
  • Dynamic: Data is generated at query time from base tables.
  • Based on a SELECT statement: Defined by a SQL query.
  • Can be updated: In some cases, views can be updated, inserted into, or deleted from, subject to certain conditions (e.g., simple views based on a single table).

Syntax Example

sql
CREATE VIEW customer_orders_view AS
SELECT
    c.customer_id,
    c.first_name,
    c.last_name,
    o.order_id,
    o.order_date,
    o.total_amount
FROM
    customers c
JOIN
    orders o ON c.customer_id = o.customer_id
WHERE
    o.total_amount > 100;

This example creates a view named 'customer_orders_view' that combines data from the 'customers' and 'orders' tables, showing only orders with a total amount greater than 100. Users can then query this view as if it were a regular table, without needing to know the underlying join logic.

Benefits of Using Views

  • Security: Restrict data access by showing only specific columns or rows.
  • Simplification: Simplify complex queries and present a simpler interface to users.
  • Consistency: Ensure consistent data presentation across different applications.
  • Data abstraction: Isolate users from changes in the underlying table structure.
  • Reusability: Define a common query once and reuse it.

Limitations

  • Performance overhead: Views are executed every time they are queried, which can add overhead for very complex views compared to directly querying base tables.
  • Updatability issues: Not all views are updatable; complex views (e.g., those involving joins, aggregate functions, or distinct clauses) are often read-only.
  • Dependency management: Changes to underlying tables can affect views, requiring maintenance.
  • No direct indexing: You cannot create indexes directly on a standard view (though materialized views or indexed views in some systems allow this).