PostgreSQL教程(七):功能和操作的详细解释(3)

PostgreSQL教程(七):功能和操作的详细解释(3)
九。顺序操作功能

一个序列对象(也被称为一个序列发生器)是一种特殊的单排表创建创建序列,序列对象通常是用来生成唯一标识符列或表。以下序列功能提供了一个简单的并行读取的安全方法我们从序列对象获得新的序列值。
功能
返回类型
描述
Nextval(regclass)
bigint
递增序列对象进入其下一个值并返回值。这个动作是自动完成的。即使多个会话运行nextval兼任,每个进程将收到一个唯一的序列值的安全。
Currval(regclass)
bigint
返回由当前会话中最后的nextval序列捕获的值。如果不在这个会话使用nextval,错误将被报告。请注意,这个函数返回一个会话范围的数值,也可以给你一个可预测的结果,因此可以用要确定是否有其他会话执行nextval。
lastval()
bigint
返回上次nextval返回当前会话的值。此功能相当于CURRVAL,但它不使用一个序列的名称作为参数,它抓住的当前会话中最近的nextval顺序使用。如果当前会话没有调用nextval然而,那么调用lastval将是错误的。
setval(regclass,bigint)
bigint
重置一个序列对象的计数器值。设置序列的last_value场为指定的值和设定的is_called场为真,表明未来nextval将递增序列在返回的值。
setval(regclass,bigint、布尔)
bigint
重置一个序列对象的计数器值,功能相当于上述setval功能,但is_called可以设置为true或false。如果设置为false,接下来的nextval返回值,以及随后的nextval开始增加序列。
为regclass参数,只有一个单引号是需要覆盖序列的名字,所以它看起来像一个文本常数。为了达到与普通SQL对象相同的兼容性,并将字符串转换为小写除非序列名称括在双引号中,如:

复制代码代码如下所示:

Nextval('foo ')--操作序列号Foo

Nextval('foo ')--操作序列号Foo

Nextval('foo)操作序列号Foo

选择setval('foo ',42);第二nextval将返回43

选择setval('foo ',42,真的);

选择setval('foo ',42,false);第二nextval将返回42
十。条件表达式:

1。案例:

SQL case表达式是一个通用的条件表达式,与其他语言中的if语句类似。

复制代码代码如下所示:

当条件结果时

{当…}

{结果}

结束
条件是,返回布尔值的表达式。如果这是真的,那么这样的表达结果是有条件的结果,如果结果为false,那么搜索以下时条款中相同的方式。如果没有当条件为真的情况下,则表达式的结果是else子句中的值。如果其他条款被省略,没有匹配的条件,结果是空的,如:

复制代码代码如下所示:

考试= > SELECT * FROM TestTable表;











(3行)

考试= >选择我,当我= 1 then'one

中- >当我= 2 then'two

中else'other->

考试->结束

从数据中->;

我的情况|

--- + -------

1 |一

2 |两

3 |其他

(3行)
注:案例表达不计算任何表达式的判断结果不需要。
2。凝聚:

合并返回其第一个非空参数的值。当检索数据用于显示时,它通常用来替换默认值的null值。

复制代码代码如下所示:

合并(值{…})
与case表达式一样,合并不会计算不需要用来判断结果的参数,也就是说,第一个非空参数右边的参数不会被计算出来。
三.NULLIF:

当且仅当value1,value2相等,NULLIF返回零,否则返回的值。

复制代码代码如下所示:

NULLIF(value1,value2)

考试= >选择NULLIF(ABC,ABC);

NULLIF


(1行)

考试= >选择NULLIF('abcdABC);

NULLIF



ABCD

(1行)
4。最大和最小:

最大和最小函数从任意数字表达式列表中选择最大值或最小值。列表中的null值将被忽略。只有当所有表达式的结果为空时,结果才为空。

复制代码代码如下所示:

最大(值{,…})

最少(值{,…})

MyTest=> SELECT GREATEST (1,3,5);

最大的

----------



(1行)

考试= >选择最小(1,3,5,null);

至少

-----



(1行)
十一,数组函数和运算符:

1中数组的运算符列表。PostgreSQL:

算子
描述
例子
结果
=
等于
数组{ 1.1,2.1,3.1 }::int数组{ } = {1,2,3}
T
< >
不等于
< >阵列{1,2,3}数组{ 1,2,4 }
T
<
小于
阵列{1,2,3} <<阵{ 1,2,4 }
T
>
大于
数组{ } { } 1,4,3 >阵列2
T
< =
小于或等于
阵列{1,2,3} <=数组{1,2,3}
T
>
大于、等于或等于
{ } > =阵列阵列1,4,3 { 1,4,3 }
T
| |
数组和数组连接
阵列{1,2,3}数组{ } | | 4,5,6
{ 1 2 3 4 5 6 }
| |
数组和数组连接
阵列{1,2,3} | |数组{ { } { } } 4、5、6、7、8、9
{ { } { }的1、2、3、4、5、6、7、8、9 } { }
| |
元素和数组连接
3 | |数组{ 4,5,6 }
3、4、5、6 } {
| |
元素和数组连接
{ 7 } | | 4,5,6阵列
4、5、6、7 } {
2。PostgreSQL提供了一个数组的函数列表:
功能
返回类型
描述
例子
结果
array_cat(anyarray,anyarray)
anyarray
连接两个阵列
array_cat(阵列{1,2,3},数组{ 4,5 })
{ 12345 }
array_append(anyarray,任何)
anyarray
在数组的结尾添加一个元素
array_append(阵列{1,2},3)
{1,2,3}
array_prepend(任何,anyarray)
anyarray
在数组的开头添加一个元素
array_prepend(1,数组{ 2 })
{1,2,3}
array_dims(anyarray)
文本
返回数组维度的文本表示形式。
array_dims(数组{ { 1,2,3 },{ 4,5,6 } })
{ 1:2 } { }
array_lower(anyarray,int)
int
返回指定数组的维数的下限。
array_lower(array_prepend(0,阵列{1,2,3}),1)

array_upper(anyarray,int)
int
返回指定数组的维数的上界。
array_upper(数组{ 1,2,3,4 },1)

array_to_string(anyarray,文本)
文本
将数组元素与提供的分隔符连接起来
array_to_string(数组{ 1, 2, 3 },~ ^ ~)
1~2~3
string_to_array(文本、文本)
文本{ }
使用指定的分隔符将字符串拆分为数组元素。
string_to_array('xx ~ ^ ~ YY ~ ^ ~ ZZ ',' ~ ^ ~)
{ XX,YY,ZZ }
十二。系统信息功能:

与1提供的数据库相关的函数列表。PostgreSQL:
名称
返回类型
描述
current_database()
名称
当前数据库的名称。
current_schema()
名称
当前模式的名称。
current_schemas(布尔)
名称{ }
搜索路径中模式的名称。
current_user
名称
当前执行环境中的用户
inet_client_addr()
核能与新能源技术研究院
连接的远程地址
inet_client_port()
int
连接的远程端口
inet_server_addr()
核能与新能源技术研究院
连接的本地地址
inet_server_port()
int
连接的本地端口
session_user
名称
会话的用户名
pg_postmaster_start_time()
时间戳
邮政局长开始的时间
用户
名称
current_user
版本()
文本
PostgreSQL版本信息
2。允许用户查询程序中对象的访问权限的函数:
名称
描述
可用的权限
has_table_privilege(用户、表、权限)
用户有访问表的权限吗
选择添加/更新/删除/引用/引用/触发器
has_table_privilege(表、权限)
当前用户有访问表的权限吗
选择添加/更新/删除/引用/引用/触发器
has_database_privilege(用户、数据库、权限)
用户是否有权限访问数据库
创建/临时
has_database_privilege(数据库、特权)
当前用户是否可以访问数据库
创建/临时
has_function_privilege(用户、功能、权限)
用户是否具有对函数的访问权
执行
has_function_privilege(功能、特权)
当前用户是否具有访问功能
执行
has_language_privilege(用户、语言、特权)
用户是否具有访问该语言的权限
使用
has_language_privilege(语言、特权)
当前用户是否可以访问该语言
使用
has_schema_privilege(用户模式、特权)
用户是否具有访问模式的访问权限
创建/使用
has_schema_privilege(架构、权限)
当前用户是否具有访问模式的访问权限
创建/使用
has_tablespace_privilege(用户、表空间、权限)
用户是否有权限访问表空间
创建
has_tablespace_privilege(表空间、权限)
当前用户有访问表空间的权限吗
创建
注:以上所有功能返回布尔类型,评估用户是否拥有权力的授权选项,将授予用户的权限授予用户的关键字,这样as'update。

三.模式可见性查询功能:

在当前模式搜索路径中确定一个对象是否可见的那些函数。如果一个表的模式在搜索路径中,并且在搜索路径前面没有出现相同名称的表,那么表是可见的。它相当于一个表,可以在没有显式的模式修改的情况下引用。
名称
描述
应用型
pg_table_is_visible(table_oid)
是否在搜索路径中可见表视图
regclass
pg_type_is_visible(type_oid)
类视图类型是否在搜索路径中可见
regtype
pg_function_is_visible(function_oid)
该函数是否在搜索路径中可见
regprocedure
pg_operator_is_visible(operator_oid)
是否在搜索路径中可见操作员
reperator
pg_opclass_is_visible(opclass_oid)
是否在搜索路径中可见操作员表
regclass
pg_conversion_is_visible(conversion_oid)
转换是否在搜索路径中可见
reperator

注:以上所有功能返回布尔类型,和所有这些功能需要对象的OID标识进行检查的对象。

复制代码代码如下所示:

Postgres = #选择pg_table_is_visible('testtable '::regclass);

pg_table_is_visible

贸易数据交换

T

(1行)
4。系统表信息功能:
名称
返回类型
描述
format_type(type_oid,typemod)
文本
获取数据类型的SQL名称。
pg_get_viewdef(view_oid)
文本
获取视图的创建视图命令
pg_get_viewdef(view_oid,pretty_bool)
文本
获取视图的创建视图命令
pg_get_ruledef(rule_oid)
文本
获取规则的创建规则命令
pg_get_ruledef(rule_oid,pretty_bool)
文本
获取规则的创建规则命令
pg_get_indexdef(index_oid)
文本
获取索引的创建索引命令
pg_get_indexdef(index_oid,column_no,pretty_bool)
文本
把创建的索引命令,如果column_no不为零,它仅仅是一个索引字段的定义
pg_get_triggerdef(trigger_oid)
文本
获取触发器的创建{ }触发器
pg_get_constraintdef(constraint_oid)
文本
获取约束的定义
pg_get_constraintdef(constraint_oid,pretty_bool)
文本
获取约束的定义
pg_get_expr(expr_text,relation_oid)
文本
一个表达式分解为内部形式,假设其任何变量引用的第二参数的关系
pg_get_expr(expr_text,relation_oid,pretty_bool)
文本
一个表达式分解为内部形式,假设其任何变量引用的第二参数的关系
pg_get_userbyid(roleid)
名称
获取给定ID的角色名。
pg_get_serial_sequence(table_name,column_name)
文本
获得一个用于串行或bigserial场序列名称
pg_tablespace_databases(tablespace_oid)
套老
为一组,在指定的表空间对象数据库得到一系列的OID(OID表示)
这些函数有两个变种,其中一个可以选择的美印的结果。美丽的打印格式更容易阅读,但是默认的格式是更可能的解释方式都相同的PostgreSQL版本。如果是转储,尽量避免使用漂亮的打印。将false传递给漂亮的打印参数的结果与没有该参数的变体所产生的结果完全相同。

十三。系统管理功能:

1。查询并修改运行时配置参数的函数:
名称
返回类型
描述
current_setting(setting_name)
文本
目前的设定值
set_config(setting_name,new_value,is_local)
文本
设置参数并返回一个新值
current_setting用于检索查询形式的setting_name设定电流值。它相当于SQL命令显示。例如:

复制代码代码如下所示:

考试= #选择current_setting('datestyle);

current_setting

一轮又一轮

ISO,YMD

(1行)
set_config设置参数setting_name到new_value.if的is_local设置为true,那么新的价值将只应用于当前的交易。如果你想要一个新的值将应用于当前会话,你应该使用虚假。它相当于SQL命令集。例如:

复制代码代码如下所示:

考试= #选择set_config('log_statement_stats开,假);

set_config



下车

(1行)
2。数据库对象大小函数:
名称
返回类型
描述
pg_tablespace_size(OID)
bigint
由老指定的表空间使用的磁盘空间
pg_tablespace_size(名称)
bigint
指定名称的表空间中使用的磁盘空间。
pg_database_size(OID)
bigint
由数据库指定OID代表使用的磁盘空间
pg_database_size(名称)
bigint
名为数据库的数据库使用的磁盘空间
pg_relation_size(OID)
bigint
由表或索引,以避免指定使用的磁盘空间
pg_relation_size(文本)
bigint
指定名称或索引使用的表或磁盘空间。该名称可以用模式名进行修改。
pg_total_relation_size(OID)
bigint
指定由OID表使用的磁盘空间,其中包括索引和压缩数据
pg_total_relation_size(文本)
bigint
指定名称表使用的完整磁盘空间,包括索引和压缩数据。表的名称可以通过模式名进行修改。
pg_size_pretty(BigInt)
文本
将字节的大小转换成可读的大小单位
三.数据库对象位置函数:
名称
返回类型
描述
pg_relation_filenode(relationregclass)
OID
获取指定对象的文件节点数(通常是对象的OID值)。
Pg_relation_filepath (relationregclass)
文本
获取指定对象的完整路径名。
复制代码代码如下所示:

名称= #选择pg_relation_filenode('testtable);

pg_relation_filenode

实施

一万七千八百七十七

(1行)

名称= #选择pg_relation_filepath('testtable);

pg_relation_filepath

----------------------------------------------

pg_tblspc / 17633 / / / 17877 17636 pg_9.1_201105231

(1行)
所有在本博客提供的信息是来自官方的PostgreSQL文档。写这个博客的主要目的是为了方便将来的访问,特此声明。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部