PGSQL - 视图

news/2025/2/11 4:34:34/

视图概述

视图(View)本质上是一个存储在数据库中的查询语句。视图本身不包含数据,也被称为虚拟
表。我们在创建视图时给它指定了一个名称,然后可以像表一样对其进行查询。
合理使用的视图可以给我们带来以下好处:
替代复杂查询,减少复杂性。将复杂的查询语句定义为视图,然后使用视图进行查询, 可以隐藏
具体的实现;
提供一致性接口,实现业务规则。在视图的定义中增加业务逻辑,对外提供统一的接口;当底层
表结构发生变化时,只需要修改视图接口,而不需要修改外部应用,可以简化代码的维护并
减少错误;
控制对于表的访问,提高安全性。通过视图为用户提供数据访问,而不是直接访问表;
同时可以限制允许访问某些敏感信息,例如身份证号、工资等。

创建视图

create view view_name  as query;
view_name 是视图的名称;AS 之后是视图的查询语句,可以是简单查询或者复杂的查询。
CREATE VIEW emp_details_view
AS SELECTe.employee_id, e.job_id, e.manager_id, e.department_id,d.location_id,e.first_name,e.last_name,e.salary,e.commission_pct,d.department_name,j.job_title
FROM employees e
JOIN departments d ON (e.department_id = d.department_id)
JOIN jobs j ON (j.job_id = e.job_id);使用视图select * from emp_details_view where department_name = 'IT';

修改视图

create or replace view view_name as query

删除视图

drop view name

递归视图

CREATE RECURSIVE VIEW employee_path(employee_id, employee_name, path) ASSELECT employee_id, CONCAT(first_name, ',', last_name), CONCAT(first_name, 
',', last_name) AS pathFROM employeesWHERE manager_id IS NULLUNION ALLSELECT e.employee_id, CONCAT(e.first_name, ',', e.last_name), 
CONCAT(ep.path, '->', e.first_name, ',', e.last_name)FROM employee_path epJOIN employees e ON ep.employee_id = e.manager_id;


http://www.ppmy.cn/news/2749.html

相关文章

你在网络上发布的内容真的归你所有吗?有Web3.0和元宇宙的未来是什么样的?

欢迎来到Hubbleverse 🌍 关注我们 关注宇宙新鲜事 📌 预计阅读时长:9分钟 本文仅代表作者个人观点,不代表平台意见,不构成投资建议。 你认为你在微博、抖音等社交媒体上发布的内容是属于你的吗?事实并非…

引用的小细节内联函数

1.引用的细节 引用,简单来说就是“取别名”。既然是别名,那么引用就一定具有以下的特点 引用在定义时必须初始化。 就好比起别名起码得告诉别人是给谁起的别名吧 一个变量可以有多个引用 就好比一个人可以有多个别名。比如张某某,有两个外号…

ICV:L2级乘用车渗透率预计将在2025年超过50%

全球前沿科技咨询机构ICV近期发布了全球乘用车市场的分析报告。ICV在报告中指出,作为汽车消费大国之一的中国在2022年仍是乘用车销量第一的国家。目前L0和L1级别的自动驾驶乘用车仍占市场主导地位,但随着供应端在技术方面的不断突破以及需求端在认可度方…

编译原理 1 - 概述、形式语言

第1章 引论一些概念1.3 编译程序的总体结构1.4 编译程序的组织第二章 形式语言2.1 文法描述中的基本概念上下文无关文法第1章 引论 一些概念 机器语言:以0、1代码表示的机器指令所构成的语言 每一个具体的计算机系统都具有自己的指令系统 汇编语言:用助…

vue的script动态改css、scss变量方法

解决场景&#xff1a;script设颜色变量&#xff0c;<style>的background-color的值"#ddd"的跟着变 序 1、这篇博文适用vue2和vue3版本&#xff0c;博主实验时&#xff0c;vue3的版本是^3.2.45 2、 其实要解决的方案在vue3里有一个专栏“单文件组件的 <…

npm包是什么?如何发布npm包?

Node的组成 内置模块 自定义模块 第三方模块&#xff08;什么是包&#xff1f;&#xff09; npm包包括那些东西&#xff1f; package.json README.md 。。。.js 注册npm账号 细节 发布包 package.json README.md index.js date htmlEscape 层级结构 发布指令 N…

入门系列 - Git安装与配置

Git安装与配置 要使用Git&#xff0c;你必须在你的电脑上安装它。要不要使用并升级到最新的Git&#xff0c;那取决您的需要了。 下载Git 要下载Git安装程序&#xff0c;请访问Git的官方网站并进入下载页面。本文写于2022-11-29&#xff0c;此时您可以去官网链接去下载&#…

Linux下安装mysql5.7.18

查询mysql的安装文件&#xff1a; find / -name mysql有安装mysql的路径&#xff0c;有是存放MySQL安装包的路径 卸载mysql: 删除安装路劲 rm -rf /opt/mysql删除配置文件 rm -rf /etc/my.cnf删除/etc/init.d/下跟mysql有关的全部文件&#xff0c;一般包括mysql文件或mys…