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

2024-05-01 1531阅读

温馨提示:这篇文章已超过371天没有更新,请注意相关的内容是否还可用!

视图基础操作

​专栏内容:

【postgresql初级使用】视图的基础操作,管理员与普通员工看到不同的数据,视图的作用与重要性介绍
(图片来源网络,侵删)
  • postgresql使用入门基础
  • 手写数据库toadb
  • 并发编程

    个人主页:我的主页

    管理社区:开源数据库

    座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.

    文章目录

    • 视图基础操作
    • 概述
    • View 创建
      • 准备数据
      • 创建视图
      • View 查询
      • View 删除
      • 总结
        • 作用
        • 重要性
        • 结尾

          概述


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

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

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

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

          创建视图

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

          创建视图的语法如下:

          CREATE VIEW 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 | 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)
          

          View 删除


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

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

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

          总结


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

          作用

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

          重要性

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

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

          结尾


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

          作者邮箱:study@senllang.onaliyun.com

          如有错误或者疏漏欢迎指出,互相学习。

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

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]