PostgreSQL教程(六):函数和操作符详解(2)

发布时间:2018-12-18  栏目:sqlite  评论:0 Comments

九、系列操作函数:

六、形式匹配:

    系列对象(也深受班生成器)都是故CREATE
SEQUENCE创造的与众不同的单行表。一个行对象平常用于为行或者表生成唯一的标识符。下面序列函数,为我们由连串对象被得最新的类别值提供了简要和出现读取安全之方法。

    PostgreSQL中提供了三种植实现形式匹配的主意:SQL
LIKE操作符,更靠近一些底SIMILAR TO操作符,和POSIX-风格正则表明式。
    1. LIKE:
 

 

复制代码 代码如下:

函数 返回类型 描述
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字段设置为true,表示下一次nextval将在返回数值之前递增该序列。
setval(regclass, bigint, boolean) bigint 重置序列对象的计数器数值。功能等同于上面的setval函数,只是is_called可以设置为true或false。如果将其设置为false,那么下一次nextval将返回该数值,随后的nextval才开始递增该序列。

    string LIKE pattern [ ESCAPE escape-character ]
    string NOT LIKE pattern [ ESCAPE escape-character ]
 

 
对于regclass参数,仅用用单引号括住系列名即可,由此它们看起来就是如文本常量。为了达成与处理平日SQL对象同的兼容性,这么些字串将吃更换成稍写,除非该队名是由此双招号括起,如:
 

   
每个pattern定义一个字串的集合。即使该string包含在pattern代表的字串集合里,那么LIKE表明式再次回到真。和大家想象的一致,如若LIKE再次来到真,那么NOT
LIKE表明式重临假,反之亦然。在pattern里的下划线(_)代表匹配任何单个字符,而一个百分号(%)匹配任何零仍然重多字符,如:
 

复制代码 代码如下:

复制代码 代码如下:

    nextval(‘foo’)     –操作系列号foo
    nextval(‘FOO’)    –操作系列号foo
    nextval(‘”Foo”‘)   –操作系列号Foo
    SELECT setval(‘foo’, 42);    –下次nextval将返回43
    SELECT setval(‘foo’, 42, true);   
    SELECT setval(‘foo’, 42, false);   –下次nextval将返回42

    ‘abc’ LIKE ‘abc’     true
    ‘abc’ LIKE ‘a%’     true
    ‘abc’ LIKE ‘_b_’    true
    ‘abc’ LIKE ‘c’        false 
 

   
十、条件表明式:

   
要配合文本的下划线或者百分号,而休是十分其余字符,在pattern里相应的字符必须带转义字符。缺省之转义字符是倒斜杠,不过若可用ESCAPE子句指定一个。要配合转义字符本身,写点儿只转义字符。我们呢堪通过描写成ESCAPE
”的措施可行地关转义机制,此时,我们不怕不可能关闭下划线和百分号的异含义了。
   
关键字ILIKE可以用来替换LIKE,令该匹配就近日之区域设置是大大小小写无关的。这些特点不是SQL标准,是PostgreSQL的恢弘。操作符等效于LIKE,
*对应ILIKE。还有!和!*操作符分别表示NOT LIKE和NOT
ILIKE。所有这么些操作符都是PostgreSQL特有的。

    1. CASE:
    SQL
CASE表达式是如出一辙种通用的尺度表明式,类似于此外语言中的if/else语句。
 

    2. SIMILAR TO正则表明式:
    SIMILAR TO依据格局是否配合给定的字符串而回真要借用。
 

复制代码 代码如下:

复制代码 代码如下:

    CASE WHEN condition THEN result
        [WHEN …]
        [ELSE result]
    END
 

    string SIMILAR TO pattern [ESCAPE escape-character]
    string NOT SIMILAR TO pattern [ESCAPE escape-character]
 

   
condition是一个回去boolean的表达式。如若为真,那么CASE表明式的结果虽是符合条件的result。假诺结果吗假,那么以同一形式搜寻随后的WHEN子句。假若无WHEN
condition为真,那么case表明式的结果就是是在ELSE子句里的价。若是简单了ELSE子句而且无匹配的格,结果为NULL,如:
 

   
它同LIKE分外相近,协助LIKE的通配符(‘_’和’%’)且维持其本意。除此之外,SIMILAR
TO还帮忙部分友好独有的元字符,如:   
    1). | 标识接纳(六只候选之一)。
    2). * 表示再后面的起零次或重复频繁。
    3). + 表示再前边的宗一不良仍然又累。
    4). 可以下圆括弧()把件组成成一个逻辑项。
    5).
一个方括弧表明式[…]表明一个字符表,就像POSIX正则表达式一样。
    见如下示例:
 

复制代码 代码如下:

复制代码 代码如下:

    MyTest=> SELECT * FROM testtable;
     i
    —
     1
     2
     3
    (3 rows)
    MyTest=> SELECT i, CASE WHEN i=1 THEN ‘one’
    MyTest->                         WHEN i=2 THEN ‘two’
    MyTest->                         ELSE ‘other’
    MyTest->                END
    MyTest-> FROM testtable;
     i | case
    —+——-
     1 | one
     2 | two
     3 | other
    (3 rows)
 

    ‘abc’ SIMILAR TO ‘abc’           true
    ‘abc’ SIMILAR TO ‘a’              false
    ‘abc’ SIMILAR TO ‘%(b|d)%’  true
    ‘abc’ SIMILAR TO ‘(b|c)%’     false
 

    注:CASE表达式并无划算任何对判断结果并不需要的子表明式。
   
    2. COALESCE:

    带五个参数的substring,substring(string from pattern for
escape-character),提供了一个从字串中抽取一个郎才女貌SQL正则表明式情势的子字串的函数。和SIMILAR
TO一样,阐明的格局要配合整个数据串,否则函数失效并回NULL。为了标识在成之当儿理应归的格局有,形式要出现继同双引号(“)的个别只转义字符。匹配这有限只记之间的情势的字串将受归,如:
    MyTest=# SELECT substring(‘foobar’ from ‘%#”o_b#”%’ FOR ‘#’);
–这里#是转义符,双引号内的形式是返部分。
 

   
COALESCE重回它的率先独非NULL的参数的值。它通常用于在为显示目的检索数据经常用少省值替换NULL值。
 

复制代码 代码如下:

复制代码 代码如下:

     substring
    ———–
     oob
    (1 row)
    MyTest=# SELECT substring(‘foobar’ from ‘#”o_b#”%’ FOR ‘#’); 
–foobar不可知一心匹配后边的格局,由此回到NULL。
     substring
    ———–

    COALESCE(value[, …])
 

    (1 row)
 

   
和CASE表达式一样,COALESCE将非会面盘算不欲用于判断结果的参数。也就是说,在首先个非空参数左边的参数不会师于算。
   
    3. NULLIF:
    当且仅当value1和value2相等时,NULLIF才回到NULL。否则她回到value1。
 

七、数据类型格式化函数:

复制代码 代码如下:

   
PostgreSQL格式化函数提供相同效行之有效之家伙用于把各样数据类(日期/时间、integer、floating
point和numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成为指定的数据类型。上面列有了这一个函数,它们还遵照一个官的调用习惯:第一只参数是内需格式化的值,而第二个是概念输出或输出格式的沙盘。

    NULLIF(value1, value2)
    MyTest=> SELECT NULLIF(‘abc’,’abc’);
     nullif
    ——–
   
    (1 row)   
    MyTest=> SELECT NULLIF(‘abcd’,’abc’);
     nullif
    ——–
     abcd
    (1 row)

函数 返回类型 描述 例子
to_char(timestamp, text) text 把时间戳转换成字串 to_char(current_timestamp, ‘HH12:MI:SS’)
to_char(interval, text) text 把时间间隔转为字串 to_char(interval ’15h 2m 12s’, ‘HH24:MI:SS’)
to_char(int, text) text 把整数转换成字串 to_char(125, ‘999’)
to_char(double precision, text) text 把实数/双精度数转换成字串 to_char(125.8::real, ‘999D9’)
to_char(numeric, text) text 把numeric转换成字串 to_char(-125.8, ‘999D99S’)
to_date(text, text) date 把字串转换成日期 to_date(’05 Dec 2000′, ‘DD Mon YYYY’)
to_timestamp(text, text) timestamp 把字串转换成时间戳 to_timestamp(’05 Dec 2000′, ‘DD Mon YYYY’)
to_timestamp(double) timestamp 把UNIX纪元转换成时间戳 to_timestamp(200120400)
to_number(text, text) numeric 把字串转换成numeric to_number(‘12,454.8-‘, ’99G999D9S’)

    4. GREATEST和LEAST:
   
GREATEST和LEAST函数从一个无限制的数字表明式列表里选最深或极端小之数值。列表中之NULL数值将被忽视。唯有拥有表明式的结果仍旧NULL的下,结果才晤面是NULL。
 

     1. 用以日期/时间格式化的格局:

复制代码 代码如下:

模式 描述
HH 一天的小时数(01-12)
HH12 一天的小时数(01-12)
HH24 一天的小时数(00-23)
MI 分钟(00-59)
SS 秒(00-59)
MS 毫秒(000-999)
US 微秒(000000-999999)
AM 正午标识(大写)
Y,YYY 带逗号的年(4和更多位)
YYYY 年(4和更多位)
YYY 年的后三位
YY 年的后两位
Y 年的最后一位
MONTH 全长大写月份名(空白填充为9字符)
Month 全长混合大小写月份名(空白填充为9字符)
month 全长小写月份名(空白填充为9字符)
MON 大写缩写月份名(3字符)
Mon 缩写混合大小写月份名(3字符)
mon 小写缩写月份名(3字符)
MM 月份号(01-12)
DAY 全长大写日期名(空白填充为9字符)
Day 全长混合大小写日期名(空白填充为9字符)
day 全长小写日期名(空白填充为9字符)
DY 缩写大写日期名(3字符)
Dy 缩写混合大小写日期名(3字符)
dy 缩写小写日期名(3字符)
DDD 一年里的日子(001-366)
DD 一个月里的日子(01-31)
D 一周里的日子(1-7;周日是1)
W 一个月里的周数(1-5)(第一周从该月第一天开始)
WW 一年里的周数(1-53)(第一周从该年的第一天开始)

    GREATEST(value [, …])
    LEAST(value [, …])
    MyTest=> SELECT GREATEST(1,3,5);
     greatest
    ———-
            5
    (1 row) 
    MyTest=> SELECT LEAST(1,3,5,NULL);
     least
    ——-
         1
    (1 row)

     2. 用以数值格式化的模板格局:

十一、数组函数和操作符:

模式 描述
9 带有指定数值位数的值
0 带前导零的值
.(句点) 小数点
,(逗号) 分组(千)分隔符
PR 尖括号内负值
S 带符号的数值
L 货币符号
D 小数点
G 分组分隔符
MI 在指明的位置的负号(如果数字 < 0)
PL 在指明的位置的正号(如果数字 > 0)
SG 在指明的位置的正/负号

    1. PostgreSQL中提供的用来数组的操作符列表:

八、时间/日期函数和操作符:

操作符 描述 例子 结果
= 等于 ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3] t
<> 不等于 ARRAY[1,2,3] <> ARRAY[1,2,4] t
< 小于 ARRAY[1,2,3] < ARRAY[1,2,4] t
> 大于 ARRAY[1,4,3] > ARRAY[1,2,4] t
<= 小于或等于 ARRAY[1,2,3] <= ARRAY[1,2,3] t
>= 大于或等于 ARRAY[1,4,3] >= ARRAY[1,4,3] t
|| 数组与数组连接 ARRAY[1,2,3] || ARRAY[4,5,6] {1,2,3,4,5,6}
|| 数组与数组连接 ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]] {{1,2,3},{4,5,6},{7,8,9}}
|| 元素与数组连接 3 || ARRAY[4,5,6] {3,4,5,6}
|| 元素与数组连接 ARRAY[4,5,6] || 7 {4,5,6,7}

    1. 下是PostgreSQL中辅助之岁月/日期操作符的列表:

    2. PostgreSQL中提供的用于数组的函数列表:

 

函数 返回类型 描述 例子 结果
array_cat(anyarray, anyarray) anyarray 连接两个数组 array_cat(ARRAY[1,2,3], ARRAY[4,5]) {1,2,3,4,5}
array_append(anyarray, anyelement) anyarray 向一个数组末尾附加一个元素 array_append(ARRAY[1,2], 3) {1,2,3}
array_prepend(anyelement, anyarray) anyarray 向一个数组开头附加一个元素 array_prepend(1, ARRAY[2,3]) {1,2,3}
array_dims(anyarray) text 返回一个数组维数的文本表示 array_dims(ARRAY[[1,2,3], [4,5,6]]) [1:2][1:3]
array_lower(anyarray, int) int 返回指定的数组维数的下界 array_lower(array_prepend(0, ARRAY[1,2,3]), 1) 0
array_upper(anyarray, int) int 返回指定数组维数的上界 array_upper(ARRAY[1,2,3,4], 1) 4
array_to_string(anyarray, text) text 使用提供的分隔符连接数组元素 array_to_string(ARRAY[1, 2, 3], ‘~^~’) 1~^~2~^~3
string_to_array(text, text) text[] 使用指定的分隔符把字串拆分成数组元素 string_to_array(‘xx~^~yy~^~zz’, ‘~^~’) {xx,yy,zz}
操作符 例子 结果
+ date ‘2001-09-28’ + integer ‘7’ date ‘2001-10-05’
+ date ‘2001-09-28’ + interval ‘1 hour’ timestamp ‘2001-09-28 01:00’
+ date ‘2001-09-28′ + time ’03:00’ timestamp ‘2001-09-28 03:00’
+ interval ‘1 day’ + interval ‘1 hour’ interval ‘1 day 01:00’
+ timestamp ‘2001-09-28 01:00′ + interval ’23 hours’ timestamp ‘2001-09-29 00:00’
+ time ’01:00′ + interval ‘3 hours’ time ’04:00′
– interval ’23 hours’ interval ‘-23:00’
date ‘2001-10-01’ – date ‘2001-09-28’ integer ‘3’
date ‘2001-10-01’ – integer ‘7’ date ‘2001-09-24’
date ‘2001-09-28’ – interval ‘1 hour’ timestamp ‘2001-09-27 23:00’
time ’05:00′ – time ’03:00′ interval ’02:00′
time ’05:00′ – interval ‘2 hours’ time ’03:00′
timestamp ‘2001-09-28 23:00′ – interval ’23 hours’ timestamp ‘2001-09-28 00:00’
interval ‘1 day’ – interval ‘1 hour’ interval ’23:00′
timestamp ‘2001-09-29 03:00’ – timestamp ‘2001-09-27 12:00’ interval ‘1 day 15:00’
* interval ‘1 hour’ * double precision ‘3.5’ interval ’03:30′
/ interval ‘1 hour’ / double precision ‘1.5’ interval ’00:40′

十二、系统信息函数:

    2. 日期/时间函数:

    1. PostgreSQL中提供的及数据库相关的函数列表:

函数 返回类型 描述 例子 结果
age(timestamp, timestamp) interval 减去参数,生成一个使用年、月的"符号化"的结果 age(‘2001-04-10’, timestamp ‘1957-06-13’) 43 years 9 mons 27 days
age(timestamp) interval 从current_date减去得到的数值 age(timestamp ‘1957-06-13’) 43 years 8 mons 3 days
current_date date 今天的日期    
current_time time 现在的时间    
current_timestamp timestamp 日期和时间    
date_part(text, timestamp) double 获取子域(等效于extract) date_part(‘hour’, timestamp ‘2001-02-16 20:38:40’) 20
date_part(text, interval) double 获取子域(等效于extract) date_part(‘month’, interval ‘2 years 3 months’) 3
date_trunc(text, timestamp) timestamp 截断成指定的精度 date_trunc(‘hour’, timestamp ‘2001-02-16 20:38:40’) 2001-02-16 20:00:00+00
extract(field from timestamp) double 获取子域 extract(hour from timestamp ‘2001-02-16 20:38:40’) 20
extract(field from interval) double 获取子域 extract(month from interval ‘2 years 3 months’) 3
localtime time 今日的时间    
localtimestamp timestamp 日期和时间    
now() timestamp 当前的日期和时间(等效于 current_timestamp)    
timeofday() text 当前日期和时间    

 

    3. EXTRACT,date_part函数协助的field:

名字 返回类型 描述
current_database() name 当前数据库的名字
current_schema() name 当前模式的名字
current_schemas(boolean) name[] 在搜索路径中的模式名字
current_user name 目前执行环境下的用户名
inet_client_addr() inet 连接的远端地址
inet_client_port() int 连接的远端端口
inet_server_addr() inet 连接的本地地址
inet_server_port() int 连接的本地端口
session_user name 会话用户名
pg_postmaster_start_time() timestamp postmaster启动的时间
user name current_user
version() text PostgreSQL版本信息
描述 例子 结果
CENTURY 世纪 EXTRACT(CENTURY FROM TIMESTAMP ‘2000-12-16 12:21:13’); 20
DAY (月分)里的日期域(1-31) EXTRACT(DAY from TIMESTAMP ‘2001-02-16 20:38:40’); 16
DECADE 年份域除以10 EXTRACT(DECADE from TIMESTAMP ‘2001-02-16 20:38:40’); 200
DOW 每周的星期号(0-6;星期天是0) (仅用于timestamp) EXTRACT(DOW FROM TIMESTAMP ‘2001-02-16 20:38:40’); 5
DOY 一年的第几天(1 -365/366) (仅用于 timestamp) EXTRACT(DOY from TIMESTAMP ‘2001-02-16 20:38:40’); 47
HOUR 小时域(0-23) EXTRACT(HOUR from TIMESTAMP ‘2001-02-16 20:38:40’); 20
MICROSECONDS 秒域,包括小数部分,乘以 1,000,000。 EXTRACT(MICROSECONDS from TIME ’17:12:28.5′); 28500000
MILLENNIUM 千年 EXTRACT(MILLENNIUM from TIMESTAMP ‘2001-02-16 20:38:40’); 3
MILLISECONDS 秒域,包括小数部分,乘以 1000。 EXTRACT(MILLISECONDS from TIME ’17:12:28.5′); 28500
MINUTE 分钟域(0-59) EXTRACT(MINUTE from TIMESTAMP ‘2001-02-16 20:38:40’); 38
MONTH 对于timestamp数值,它是一年里的月份数(1-12);对于interval数值,它是月的数目,然后对12取模(0-11) EXTRACT(MONTH from TIMESTAMP ‘2001-02-16 20:38:40’); 2
QUARTER 该天所在的该年的季度(1-4)(仅用于 timestamp) EXTRACT(QUARTER from TIMESTAMP ‘2001-02-16 20:38:40’); 1
SECOND 秒域,包括小数部分(0-59[1]) EXTRACT(SECOND from TIMESTAMP ‘2001-02-16 20:38:40’); 40
WEEK 该天在所在的年份里是第几周。 EXTRACT(WEEK from TIMESTAMP ‘2001-02-16 20:38:40’); 7
YEAR 年份域 EXTRACT(YEAR from TIMESTAMP ‘2001-02-16 20:38:40’); 2001

    2. 允许用户以程序里询问对象看权限的函数:

  1. 现阶段日子/时间:
名字 描述 可用权限
has_table_privilege(user,table,privilege) 用户是否有访问表的权限 SELECT/INSERT/UPDATE/DELETE/RULE/REFERENCES/TRIGGER
has_table_privilege(table,privilege) 当前用户是否有访问表的权限 SELECT/INSERT/UPDATE/DELETE/RULE/REFERENCES/TRIGGER
has_database_privilege(user,database,privilege) 用户是否有访问数据库的权限 CREATE/TEMPORARY
has_database_privilege(database,privilege) 当前用户是否有访问数据库的权限 CREATE/TEMPORARY
has_function_privilege(user,function,privilege) 用户是否有访问函数的权限 EXECUTE
has_function_privilege(function,privilege) 当前用户是否有访问函数的权限 EXECUTE
has_language_privilege(user,language,privilege) 用户是否有访问语言的权限 USAGE
has_language_privilege(language,privilege) 当前用户是否有访问语言的权限 USAGE
has_schema_privilege(user,schema,privilege) 用户是否有访问模式的权限 CREAT/USAGE
has_schema_privilege(schema,privilege) 当前用户是否有访问模式的权限 CREAT/USAGE
has_tablespace_privilege(user,tablespace,privilege) 用户是否有访问表空间的权限 CREATE
has_tablespace_privilege(tablespace,privilege) 当前用户是否有访问表空间的权限 CREATE

    我们好应用下的函数获取当前底日子以及/或时刻∶
 

注:以上函数均归boolean类型。要评估一个用户是否当权力上保有赋权选项,给权力键字附加
WITH GRANT OPTION;比如 ‘UPDATE WITH GRANT OPTION’。
    3. 格局可视性查询函数:
    这个判断一个对象是否当手上情势寻找路径中可见的函数。
假如一个表所在的格局在检索路径中,并且没有同名的表出现在寻觅路径的又早的地方,那么即使说这表视可见的。
它当效于表可以无带阳格局修饰举办引用。

复制代码 代码如下:

 

    CURRENT_DATE
    CURRENT_TIME
    CURRENT_TIMESTAMP
    CURRENT_TIME (precision)
    CURRENT_TIMESTAMP (precision)
    LOCALTIME
    LOCALTIMESTAMP
    LOCALTIME (precision)
    LOCALTIMESTAMP (precision)

名字 描述 应用类型
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) 该操作符是否在搜索路径中可见 regoperator
pg_opclass_is_visible(opclass_oid) 该操作符表是否在搜索路径中可见 regclass
pg_conversion_is_visible(conversion_oid) 转换是否在搜索路径中可见 regoperator

   
该博客中提供的备音信全来自自PostgreSQL官方文档,编写该篇博客的关键目标是好今后之翻,特此阐明。

 注:以上函数均归boolean类型,所有这一个函数都亟待对象 OID
标识作为检查的对象。
 

您或许感兴趣的篇章:

复制代码 代码如下:

    postgres=# SELECT pg_table_is_visible(‘testtable’::regclass);
     pg_table_is_visible
    ———————
     t
    (1 row)

    4. 系阐发信息函数:

名字 返回类型 描述
format_type(type_oid,typemod) text 获取一个数据类型的SQL名称
pg_get_viewdef(view_oid) text 为视图获取CREATE VIEW命令
pg_get_viewdef(view_oid,pretty_bool) text 为视图获取CREATE VIEW命令
pg_get_ruledef(rule_oid) text 为规则获取CREATE RULE命令
pg_get_ruledef(rule_oid,pretty_bool) text 为规则获取CREATE RULE命令
pg_get_indexdef(index_oid) text 为索引获取CREATE INDEX命令
pg_get_indexdef(index_oid,column_no,pretty_bool) text 为索引获取CREATE INDEX命令, 如果column_no不为零,则是只获取一个索引字段的定义
pg_get_triggerdef(trigger_oid) text 为触发器获取CREATE [CONSTRAINT] TRIGGER
pg_get_constraintdef(constraint_oid) text 获取一个约束的定义
pg_get_constraintdef(constraint_oid,pretty_bool) text 获取一个约束的定义
pg_get_expr(expr_text,relation_oid) text 反编译一个表达式的内部形式,假设其中的任何Vars都引用第二个参数指出的关系
pg_get_expr(expr_text,relation_oid, pretty_bool) text 反编译一个表达式的内部形式,假设其中的任何Vars都引用第二个参数指出的关系
pg_get_userbyid(roleid) name 获取给出的ID的角色名
pg_get_serial_sequence(table_name,column_name) text 获取一个serial或者bigserial字段使用的序列名字
pg_tablespace_databases(tablespace_oid) setof oid 获取在指定表空间(OID表示)中拥有对象的一套数据库的OID的集合

    这么些函数大多数还生零星个变种,其中一个得挑选对结果的”美观的打印”。
美观打印的格式更爱读,然则差省之格式更起或为前的PostgreSQL版本用平等的计解释;倘若是用来转储,那么尽可能防止下优质打印。
给好好打印参数传递false生成的结果及死没这么些参数的变种生成的结果了平等。

十三、系统管理函数:

    1. 询问与修改运行时布置参数的函数:

 

名字 返回类型 描述
current_setting(setting_name) text 当前设置的值
set_config(setting_name,new_value,is_local) text 设置参数并返回新值

 
current_setting用于因询问情势拿到setting_name设置的时数值。它跟SQL命令SHOW是如出一辙的。
比如:
 

复制代码 代码如下:

    MyTest=# SELECT current_setting(‘datestyle’);
     current_setting
    —————–
     ISO, YMD
    (1 row)
 

   
set_config将参数setting_name设置为new_value。如果is_local设置为true,那么新数值将只有以叫即事情。假如你要新的数值应用为时对话,那么应该使用false。它非凡效于SQL命令SET。比如:
 

复制代码 代码如下:

    MyTest=# SELECT set_config(‘log_statement_stats’,’off’,
false);
     set_config
    ————
     off
    (1 row)
   

    2. 数据库对象尺寸函数:

 

名字 返回类型 描述
pg_tablespace_size(oid) bigint 指定OID代表的表空间使用的磁盘空间
pg_tablespace_size(name) bigint 指定名字的表空间使用的磁盘空间
pg_database_size(oid) bigint 指定OID代表的数据库使用的磁盘空间
pg_database_size(name) bigint 指定名称的数据库使用的磁盘空间
pg_relation_size(oid) bigint 指定OID代表的表或者索引所使用的磁盘空间
pg_relation_size(text) bigint 指定名称的表或者索引使用的磁盘空间。这个名字可以用模式名修饰
pg_total_relation_size(oid) bigint 指定OID代表的表使用的磁盘空间,包括索引和压缩数据
pg_total_relation_size(text) bigint 指定名字的表所使用的全部磁盘空间,包括索引和压缩数据。表名字可以用模式名修饰。
pg_size_pretty(bigint) text 把字节计算的尺寸转换成一个人类易读的尺寸单位

    3. 数据库对象地方函数: 

名字 返回类型 描述
pg_relation_filenode(relationregclass) oid 获取指定对象的文件节点编号(通常为对象的oid值)。
pg_relation_filepath(relationregclass) text 获取指定对象的完整路径名。

复制代码 代码如下:

mydatabase=# select pg_relation_filenode(‘testtable’);
     pg_relation_filenode
    ———————-
                    17877
    (1 row)   
    mydatabase=# select pg_relation_filepath(‘testtable’);
                 pg_relation_filepath
    ———————————————-
     pg_tblspc/17633/PG_9.1_201105231/17636/17877
    (1 row)  

   
该博客中提供的保有音讯全都出自自PostgreSQL官方文档,编写该篇博客的紧要性目的是造福今后的查看,特此阐明。 

而或许感兴趣之稿子:

留下评论

网站地图xml地图