PostgreSQL逻辑结构管理:视图

229 阅读1分钟

什么是视图

由查询语句定义的虚拟表。在视图中,可以使用select查询数据、insert插入数据、update更新数据、delete删除数据。

使用视图的原因

  • 使复杂查询便于理解与使用
  • 视图可以隐藏数据,保护数据安全,比如定义视图将用户表的密码去除
  • 将函数返回结果映射为视图

创建视图

语法:

Command:     CREATE VIEW
Description: define a new view
Syntax:
CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ RECURSIVE ] VIEW name [ ( column_name [, ...] ) ]
    [ WITH ( view_option_name [= view_option_value] [, ... ] ) ]
    AS query
    [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]

示例:

--创建表,并创建视图
postgres=# create table test_view(a int, b text);
CREATE TABLE
postgres=# create view v_test as select * from test_view;
CREATE VIEW

--表中插入数据,查询视图
postgres=# insert into test_view values(1,'test');
INSERT 0 1
postgres=# insert into test_view values(2,'test1');
INSERT 0 1
postgres=# select * from v_test ;
 a |   b
---+-------
 1 | test
 2 | test1
(2 rows)

对视图进行操作:

--视图进行insert操作
postgres=# insert into v_test values(3,'test2');
INSERT 0 1
postgres=# select * from test_view ;
 a |   b
---+-------
 1 | test
 2 | test1
 3 | test2
(3 rows)

--视图进行update操作
postgres=# update v_test set b='test3' where a=3;
UPDATE 1
postgres=# select * from test_view ;
 a |   b
---+-------
 1 | test
 2 | test1
 3 | test3
(3 rows)

--视图进行delete操作
postgres=# delete from test_view where a=3;
DELETE 1
postgres=# select * from v_test ;
 a |   b
---+-------
 1 | test
 2 | test1
(2 rows

删除视图

语法:

Command:     DROP VIEW
Description: remove a view
Syntax:
DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]