什么是视图
由查询语句定义的虚拟表。在视图中,可以使用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 ]