15.5. Lesson: 视图
当您编写查询时,您需要花费大量时间和精力来制定它。使用视图,您可以将SQL查询的定义保存在可重复使用的“虚拟表”中。
The goal for this lesson: 若要将查询保存为视图,请执行以下操作。
15.5.1. 创建视图
您可以将视图视为表,但其数据来自查询。让我们基于上面的内容来创建一个简单的视图:
create view roads_count_v as
select count(people.name), streets.name
from people, streets where people.street_id=streets.id
group by people.street_id, streets.name;
如您所见,唯一的变化是 create view roads_count_v as 开头的部分。我们现在可以从该视图中选择数据:
select * from roads_count_v;
结果:
count | name
-------+-------------
1 | Main Road
2 | High street
1 | Low Street
(3 rows)
15.5.2. 修改视图
一个视图不是固定的,它不包含“真实数据”。这意味着您可以轻松地更改它,而不会影响数据库中的任何数据:
CREATE OR REPLACE VIEW roads_count_v AS
SELECT count(people.name), streets.name
FROM people, streets WHERE people.street_id=streets.id
GROUP BY people.street_id, streets.name
ORDER BY streets.name;
(此示例还显示了对所有SQL关键字使用大写的最佳实践约定。)
您将看到我们已经添加了一个 ORDER BY 子句,以便我们的视图行被很好地排序:
select * from roads_count_v;
count | name
-------+-------------
2 | High street
1 | Low Street
1 | Main Road
(3 rows)
15.5.3. 删除视图
如果不再需要某个视图,可以按如下方式将其删除:
drop view roads_count_v;
15.5.4. In Conclusion
使用视图,您可以保存查询并像访问表一样访问其结果。
15.5.5. What's Next?
有时,当更改数据时,您希望您的更改在数据库中的其他位置生效。下一课将向您展示如何做到这一点。