PostgreSQL视图

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

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

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

1、视图的创建

①、建表方式

iOS开发中添加视图 contentView_触发器

iOS开发中添加视图 contentView_触发器_02

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

iOS开发中添加视图 contentView_PostgreSQL_03

结果:

iOS开发中添加视图 contentView_PostgreSQL_04

②、通过sql语句创建视图

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

iOS开发中添加视图 contentView_SQL_05

iOS开发中添加视图 contentView_SQL_06

2、select 、 insert 、create 

①、select 查询表

iOS开发中添加视图 contentView_pgAdmin 4 应用_07

iOS开发中添加视图 contentView_pgAdmin 4 应用_08

②、insert 插入数据

iOS开发中添加视图 contentView_PostgreSQL_09

iOS开发中添加视图 contentView_SQL_10

iOS开发中添加视图 contentView_pgAdmin 4 应用_11

3、删除视图

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

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

iOS开发中添加视图 contentView_PostgreSQL_12

②、删除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;

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_body

function_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;

iOS开发中添加视图 contentView_pgAdmin 4 应用_13

②、通过定义创建函数

iOS开发中添加视图 contentView_SQL_14

iOS开发中添加视图 contentView_pgAdmin 4 应用_15

iOS开发中添加视图 contentView_SQL_16

结果:

iOS开发中添加视图 contentView_pgAdmin 4 应用_17


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

iOS开发中添加视图 contentView_PostgreSQL_18

iOS开发中添加视图 contentView_PostgreSQL_19

字符串函数

iOS开发中添加视图 contentView_触发器_20

iOS开发中添加视图 contentView_PostgreSQL_21

iOS开发中添加视图 contentView_SQL_22

时间日期函数

PostgreSQL触发器

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

触发器的重点知识

  1. PostgreSQL在以下情况下执行/调用触发器:在尝试操作之前(在检查约束并尝试

INSERT

UPDATE

DELETE

  1. 之前)。或者在操作完成后(在检查约束并且

INSERT

UPDATE

DELETE

  1. 完成后)。或者不是操作(在视图中

INSERT

UPDATE

DELETE

  1. 的情况下)
  2. 对于操作修改的每一行,都会调用一个标记为

FOR EACH ROWS

  1. 的触发器。 另一方面,标记为

FOR EACH STATEMENT

  1. 的触发器只对任何给定的操作执行一次,而不管它修改多少行。
  2. 您可以为同一事件定义同一类型的多个触发器,但条件是按名称按字母顺序触发。
  3. 当与它们相关联的表被删除时,触发器被自动删除。

PostgreSQL创建触发器

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

语法

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

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....  
];
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...  ;

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

iOS开发中添加视图 contentView_SQL_23

PostgreSQL表别名

语法:

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

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


SQL


参数说明:

table_name

  • :它指定要进行别名的表的原始名称。

alias_name

  • :它指定分配给表的临时名称。

AS

  • :这是可选的。大多数程序员将在对列名进行别名时指定

AS

  • 关键字,但在别名表名时不指定。

注意:

  • 如果

alias_name

  • 包含空格,则必须将

alias_name

  • 包含在引号中。
  • 在别名列名时,可以使用空格。 但是,当您使用表名时,使用空格通常不是一个好习惯。

alias_name

  • 仅在SQL语句的范围内有效。

iOS开发中添加视图 contentView_pgAdmin 4 应用_24