PostgreSQL 视图、函数、触发器、别名



PostgreSQL视图

postgres中的视图和mysql中的视图是一样的,在查询的时候进行扫描子表的操作。作为普通表选择查询。

视图便于用户执行以下操作:

  • 它以自然和直观的方式构建数据,并使其易于查找。
  • 它限制对数据的访问,使得用户只能看到有限的数据而不是完整的数据。
  • 它归总来自各种表中的数据以生成报告。

1、视图的创建

①、建表方式



注意创建名称 ,必须是---current-student2


结果:


②、通过sql语句创建视图

CREATE VIEW current_employees AS  
SELECT NAME, ID, SALARY 
FROM EMPLOYEES;


2、select 、 insert 、create 

①、select 查询表



②、insert 插入数据




3、删除视图

这个视图一旦删除,就是永久删除的;

①、点击视图右键--删除


②、删除sql语句进行删除

DROP VIEW current_employees;

PostgreSQL函数(存储过程)

PostgreSQL函数也称为PostgreSQL存储过程。 PostgreSQL函数或存储过程是存储在数据库服务器上并可以使用SQL界面调用的一组SQL和过程语句(声明,分配,循环,控制流程等)。 它有助于您执行通常在数据库中的单个函数中进行多次查询和往返操作的操作。

您可以在许多语言(如SQL,PL/pgSQL,C,Python等)中创建PostgreSQL函数。

语法:

CREATE [OR REPLACE] FUNCTION function_name (arguments)   
RETURNS return_datatype AS $variable_name$  
  DECLARE  
    declaration;  
    [...]  
  BEGIN  
    < function_body >  
    [...]  
    RETURN { variable_name | value }  
  END; LANGUAGE plpgsql;
SQL

参数说明

  • function_name:指定函数的名称。
  • [OR REPLACE]:是可选的,它允许您修改/替换现有函数。
  • RETURN:它指定要从函数返回的数据类型。它可以是基础,复合或域类型,或者也可以引用表列的类型。
  • function_bodyfunction_body包含可执行部分。
  • plpgsql:它指定实现该函数的语言的名称。

①、sql语句创建函数

create or replace function student ()
returns character(100) as $name$
declare 
	name character(100);
begin 
	select name from student;
    return name;
end;
$name$ language plpgsql;


②、通过定义创建函数




结果:



修改所创建的表、视图、数据库等的名称



字符串函数



时间日期函数


PostgreSQL触发器

PostgreSQL触发器是一组动作或数据库回调函数,它们在指定的表上执行指定的数据库事件(即,INSERTUPDATEDELETETRUNCATE语句)时自动运行。 触发器用于验证输入数据,执行业务规则,保持审计跟踪等。

触发器的重点知识

  1. PostgreSQL在以下情况下执行/调用触发器:在尝试操作之前(在检查约束并尝试INSERTUPDATEDELETE之前)。或者在操作完成后(在检查约束并且INSERTUPDATEDELETE完成后)。或者不是操作(在视图中INSERTUPDATEDELETE的情况下)

  2. 对于操作修改的每一行,都会调用一个标记为FOR EACH ROWS的触发器。 另一方面,标记为FOR EACH STATEMENT的触发器只对任何给定的操作执行一次,而不管它修改多少行。

  3. 您可以为同一事件定义同一类型的多个触发器,但条件是按名称按字母顺序触发。

  4. 当与它们相关联的表被删除时,触发器被自动删除。

PostgreSQL创建触发器

CREATE TRIGGER语句用于在PostgreSQL表中创建一个新的触发器。 当表发生特定事件(即INSERTUPDATEDELETE)时,它被激活。

语法

CREATE  TRIGGER trigger_name [BEFORE|AFTER|INSTEAD OF] event_name  
ON table_name  
[  
 -- Trigger logic goes here....  
];
SQL

在这里,event_name可以是INSERTUPDATEDELETETRUNCATE数据库操作上提到的表table_name。 您可以选择在表名后指定FOR EACH ROW

下面来看看看如何在INSERT操作中创建触发器的语法。

CREATE  TRIGGER trigger_name AFTER INSERT ON column_name  
ON table_name  
[  
 -- Trigger logic goes here....  
];

PostgreSQL触发器的使用

PostgreSQL触发器可用于以下目的:

  • 验证输入数据。
  • 执行业务规则。
  • 为不同文件中新插入的行生成唯一值。
  • 写入其他文件以进行审计跟踪。
  • 从其他文件查询交叉引用目的。
  • 访问系统函数。
  • 将数据复制到不同的文件以实现数据一致性。

使用触发器的优点

  • 它提高了应用程序的开发速度。 因为数据库存储触发器,所以您不必将触发器操作编码到每个数据库应用程序中。
  • 全局执法业务规则。定义触发器一次,然后将其重用于使用数据库的任何应用程序。
  • 更容易维护 如果业务策略发生变化,则只需更改相应的触发程序,而不是每个应用程序。
  • 提高客户/服务器环境的性能。 所有规则在结果返回之前在服务器中运行。

PostgreSQL别名

PostgreSQL别名(Alias)用于为列或表提供临时名称。您可以使用PostgreSQL别名为列或表创建一个临时名称。

通常来说,当您执行自联接时,会创建一个临时表。

PostgreSQL列别名

语法:

SELECT column_name AS alias_name  
FROM table_name  
conditions...  ;
SQL

参数说明

  • column_name: 它指定要进行别名的列的原始名称。
  • alias_name: 它指定分配给列的临时名称。
  • table_name:它指定表的名称。
  • AS:这是可选的。大多数程序员将在对列名进行别名时指定AS关键字,但在别名表名时不指定。

注意:

  • 如果alias_name包含空格,则必须将alias_name包含在引号中。
  • 在别名列名时,可以使用空格。 但是使用表名时,使用空格通常不是一个好习惯。
  • alias_name仅在SQL语句的范围内有效。

操作:

select name as names
from employees

PostgreSQL表别名

语法:

SELECT column1, column2....  
FROM table_name AS alias_name  
conditions....  ;
SQL

参数说明:

  • table_name:它指定要进行别名的表的原始名称。
  • alias_name:它指定分配给表的临时名称。
  • AS:这是可选的。大多数程序员将在对列名进行别名时指定AS关键字,但在别名表名时不指定。

注意:

  • 如果alias_name包含空格,则必须将alias_name包含在引号中。
  • 在别名列名时,可以使用空格。 但是,当您使用表名时,使用空格通常不是一个好习惯。
  • alias_name仅在SQL语句的范围内有效。



也可参考:https://www.yiibai.com/postgresql/       

是 ---》 pgAdminIII

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
PostgreSQL中,触发器函数是一个没有参数并且返回trigger类型的函数。在创建触发器之前,首先需要创建这样一个函数触发器函数的基本语法如下: CREATE FUNCTION 触发器函数名称() RETURNS trigger AS $$ BEGIN -- 触发器函数的逻辑处理代码 END; $$ LANGUAGE plpgsql; 触发器函数可以根据需要执行一系列的操作,比如对特定的表进行插入、更新、删除等操作。在触发器函数中,可以使用NEW和OLD关键字来引用插入、更新、删除操作之前和之后的数据。触发器函数应该在创建触发器之前定义,以便在创建触发器时引用该函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [PostgreSQL 触发器](https://blog.csdn.net/qq_28289405/article/details/80409230)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [postgresql触发器](https://blog.csdn.net/weixin_44847119/article/details/119965859)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值