PostgreSQL 视图学习笔记

什么是视图?

视图是一种虚拟的表格,它是从一个或多个基本表中导出的。视图并不在数据库中存储数据,而是通过查询来生成结果。视图的目的是简化查询和提高安全性。

创建视图

在 PostgreSQL 中,您可以使用 CREATE VIEW 语句来创建一个视图。创建视图的基本语法如下:

Copy Code
CREATE VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE [condition];

其中,view_name 是您要创建的视图的名称,table_name 是您要从中创建视图的基本表的名称,而 SELECT 语句是视图所依据的查询。

例如,我们可以创建一个名为 customer_info 的视图以显示客户表的名称和地址列:

Copy Code
CREATE VIEW customer_info AS SELECT name, address FROM customers;

查询视图

当您查询视图时,实际上是查询视图背后的 SELECT 语句。您可以像访问普通表格一样访问视图。

例如,将查询我们创建的 customer_info 视图:

Copy Code
SELECT * FROM customer_info;

这将查询所有客户的名称和地址列,就像我们从 customers 表中选取名称和地址列一样。

更新视图

您可以使用 UPDATE 语句更新视图中的数据,就像更新基本表中的数据一样。

例如,我们可以使用以下语句更新视图 customer_info 中一个客户的地址:

Copy Code
UPDATE customer_info SET address = '123 Main St' WHERE name = 'John Smith';

这将更新名为 John Smith 的客户的地址。

删除视图

您可以使用 DROP VIEW 语句删除一个视图。例如,要删除我们之前创建的 customer_info 视图:

Copy Code
DROP VIEW customer_info;

实例

假设我们有以下两个表:

Copy Code
CREATE TABLE employees ( id serial, name varchar(255), salary numeric(10, 2) ); CREATE TABLE departments ( id serial, name varchar(255), manager_id int );

我们可以创建一个名为 combined_info 的视图以显示每个员工的姓名、薪水和部门经理的名称:

Copy Code
CREATE VIEW combined_info AS SELECT employees.name, employees.salary, departments.name as department_manager FROM employees INNER JOIN departments ON employees.id = departments.manager_id;

现在,我们可以查询此视图以获取每个员工的详细信息:

Copy Code
SELECT * FROM combined_info;

我们也可以使用 UPDATE 和 DELETE 语句更新和删除此视图中的数据,就像操作普通的表格一样。

结论

视图是 PostgreSQL 中强大且方便的工具,可用于简化复杂查询和提高安全性。通过创建视图,您可以轻松访问和更新与多个基本表相关的信息。