数据库视图

了解视图的概念、应用与实现

什么是数据库视图?

视图是基于SQL查询的虚拟表,可以将复杂的查询封装为一个简单的表结构。视图本身不存储数据,它只是一个定义好的查询,每次访问视图时都会执行该查询。

视图的工作原理

概念图解
动态演示

视图作为底层表数据的一个窗口,可以只显示部分列或行,也可以计算派生列。当底层表数据变化时,通过视图看到的数据也会随之变化。

视图的优势

视图应用场景对比

创建和使用视图

交互式SQL练习

编写视图语句

数据库结构

students表

id (整数), name (文本), age (整数), major (文本)

courses表

id (整数), course_name (文本), credits (整数)

scores表

id (整数), student_id (整数), course_id (整数), score (整数)

查询结果

视图的类型

简单视图

基于单个表创建,不包含函数、分组或连接操作。通常可以用于INSERT、UPDATE和DELETE操作。

CREATE VIEW cs_students AS
SELECT * FROM students
WHERE major = 'Computer Science';

复杂视图

基于多个表的连接查询,或包含聚合函数、GROUP BY、HAVING等子句的查询创建。

CREATE VIEW dept_summary AS
SELECT department, COUNT(*) as emp_count, AVG(salary) as avg_salary
FROM employees
GROUP BY department;

物化视图

存储查询结果的视图,与普通视图不同,它实际保存了数据副本。适用于复杂计算或大数据集的频繁查询。

CREATE MATERIALIZED VIEW sales_summary AS
SELECT product_id, SUM(quantity) as total_sold, SUM(price*quantity) as revenue
FROM sales
GROUP BY product_id;

视图类型对比

性能比较
使用场景

视图的限制与注意事项

快速测验

以下哪种视图类型可以存储实际数据?

当视图基于多个表的连接查询时,通常可以对其执行以下哪种操作?