0


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

视图基础操作

专栏内容

  • postgresql使用入门基础
  • 手写数据库toadb
  • 并发编程

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

文章目录

概述


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

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

View 创建


准备数据

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

CREATETABLE employee (  
    eid intprimarykey,
    ename VARCHAR(50)NOTNULL,  
    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));-- 插入数据 insertinto 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');

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

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

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

创建视图

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

创建视图的语法如下:

CREATEVIEW vw_name 
AS 
  query_sql;

其中

vw_name

是用户定义的视图名称,

query_sql

是定义视图数据的查询语句。

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

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

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

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

这里的

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 |342| 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)

View 删除


不用的视图可以使用

drop view

命令进行删除,当有依赖时也可以追加

cascade

进行级联删除。

postgres=# drop view vw_admin cascade;
NOTICE:  drop cascades toview vw_common
DROPVIEW

当我们级联删除

vw_admin

视图时,与它关联的视图

vw_common

也被删除了。

总结


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

作用

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

重要性

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

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

结尾


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

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

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


本文转载自: https://blog.csdn.net/senllang/article/details/138137098
版权归原作者 韩楚风 所有, 如有侵权,请联系我们删除。

“【postgresql初级使用】视图的基础操作,管理员与普通员工看到不同的数据,视图的作用与重要性介绍”的评论:

还没有评论