了解视图的概念、应用与实现
视图是基于SQL查询的虚拟表,可以将复杂的查询封装为一个简单的表结构。视图本身不存储数据,它只是一个定义好的查询,每次访问视图时都会执行该查询。
视图作为底层表数据的一个窗口,可以只显示部分列或行,也可以计算派生列。当底层表数据变化时,通过视图看到的数据也会随之变化。
id (整数), name (文本), age (整数), major (文本)
id (整数), course_name (文本), credits (整数)
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;
以下哪种视图类型可以存储实际数据?
当视图基于多个表的连接查询时,通常可以对其执行以下哪种操作?