当前位置:   article > 正文

【postgresql初级使用】视图的基础操作,管理员与普通员工看到不同的数据,视图的作用与重要性介绍_postrgresql 视图有什么用

postrgresql 视图有什么用

视图基础操作

专栏内容

个人主页我的主页
管理社区开源数据库
座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.

概述


数据库视图是一个虚拟的表,它基于一个或多个实际表的查询结果。视图并不实际存储数据,而是通过查询语句动态地生成数据。视图的内容由查询定义,包含一系列带有名称的列和行数据。从用户角度来看,视图是从一个特定的角度来查看数据库中的数据。从数据库系统内部来看,视图是由SELECT语句组成的查询定义的虚拟表。

本文主要介绍视图的创建与删除,而视图的查询与普通表是一样的,当然一般不能修改视图的数据。

View 创建


准备数据

视图是一张虚拟的表,在创建视图之前先有实际的数据表。那么在开始之前我们先创建一张数据表,并且插入一些数据。

CREATE TABLE employee (  
    eid int primary key,
    ename VARCHAR(50) NOT NULL,  
    birth_date DATE,  
    position VARCHAR(100),  
    department VARCHAR(100) ,  
    email VARCHAR(100) ,  
    phone_number VARCHAR(20),  
    hire_date date ,  
    address varchar,  
    emergency_contact VARCHAR(100)  
);

-- 插入数据 
insert into employee values(1,'lihua','2010-10-1','jiangsu','sales department','abc','123','2015-4-22','jiangsu','34'),(2,'zhanglei','2000-10-1','jiangsu','software department','df','444','2015-1-22','jiangsu','65645');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

创建了一张员工信息表,这在公司中很常见,要找某个员工的信息,可以查看公司员工通讯录就可以了。

所有员工都可以看到通讯录的全部信息吗? 答案是否定的,知道真相后很扎心吧!

这是怎么实现的呢?其中一种方法就是通过视图来实现。

创建视图

下面创建两个视图,一是管理员角色可以看到的数据;一是普通员工看到的数据的视图;

创建视图的语法如下:

CREATE VIEW vw_name 
AS 
  query_sql;
  • 1
  • 2
  • 3

其中vw_name 是用户定义的视图名称,query_sql是定义视图数据的查询语句。

那么管理员的视图创建如下:

postgres=# create view vw_admin as SELECT * from employee ;
CREATE VIEW
  • 1
  • 2

普通员工的视图创建如下:

create view vw_common as SELECT eid,ename,department from vw_admin  ;
CREATE VIEW
  • 1
  • 2

这里的vw_common视图是基于上一个视图的数据再进行过滤,存在级联关系。

View 查询


视图的查询方法与普通表没有区别。

当登陆通讯录系统时,角色就已经确定,系统就会根据角色的不同,调用不同的视图,下面看看两个视图的差异吧。

postgres=# select * from vw_admin ;
 eid |  ename   | birth_date | position |     department      | email | phone_number | hire_date  | address | emergency_contact
-----+----------+------------+----------+---------------------+-------+--------------+------------+---------+-------------------
   1 | lihua    | 2010-10-01 | jiangsu  | sales department    | abc   | 123          | 2015-04-22 | jiangsu | 34
   2 | zhanglei | 2000-10-01 | jiangsu  | software department | df    | 444          | 2015-01-22 | jiangsu | 65645
(2 rows)

postgres=# select * from vw_common ;
 eid |  ename   |     department
-----+----------+---------------------
   1 | lihua    | sales department
   2 | zhanglei | software department
(2 rows)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

View 删除


不用的视图可以使用drop view命令进行删除,当有依赖时也可以追加cascade进行级联删除。

postgres=# drop view vw_admin cascade;
NOTICE:  drop cascades to view vw_common
DROP VIEW

  • 1
  • 2
  • 3
  • 4

当我们级联删除vw_admin视图时,与它关联的视图vw_common也被删除了。

总结


视图应用非常广泛,它有下面分享一下它的作用和重要性。

作用

  1. 简化数据访问:视图可以将多个表的数据组合在一起,使得用户可以通过一个视图来访问多个表的数据,从而简化了数据访问的过程。这有助于用户更容易地理解和操作数据。
  2. 数据安全性:视图可以限制用户对底层表的访问权限,只允许用户访问视图中的数据。通过视图,可以限制用户访问数据的权限,只允许用户访问特定字段或满足特定条件的记录,从而防止用户访问敏感数据或意外修改数据,提高了数据的安全性。
  3. 数据逻辑独立性:视图可以隐藏底层表的结构,使得用户只需要关注视图的结构,而不需要关注底层表的结构。这有助于用户更容易地理解和使用数据,同时也提高了数据的逻辑独立性。当底层表的结构发生变化时,只要视图定义没有改变,用户访问数据的方式就不会受到影响。
  4. 数据一致性:视图通过将多个表的数据组合在一起,有助于保证数据的一致性,避免了数据冗余和不一致的问题。
  5. 性能优化:视图可以对底层表进行优化,例如对表进行聚合、过滤、排序等操作,从而提高了查询的性能。

重要性

数据库视图在数据库设计和应用中具有重要性,主要体现在以下几个方面:

  1. 灵活性:视图可以根据不同的需求和场景进行定义,提供了灵活的数据访问方式。
  2. 安全性保障:通过视图,可以实现对数据的访问控制,保护敏感数据不被非法访问或修改。
  3. 简化复杂操作:视图可以封装复杂的查询逻辑,使得用户可以更简单地访问和操作数据。
  4. 数据抽象:视图提供了一种抽象的数据表示方式,使得用户可以更专注于业务逻辑的实现,而不需要过多关注底层数据的细节。

结尾


非常感谢大家的支持,在浏览的同时别忘了留下您宝贵的评论,如果觉得值得鼓励,请点赞,收藏,我会更加努力!

作者邮箱:study@senllang.onaliyun.com
如有错误或者疏漏欢迎指出,互相学习。

注:未经同意,不得转载!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/613770
推荐阅读
相关标签
  

闽ICP备14008679号