华为云用户手册

  • week(date[, mode]) 描述:根据模式返回指定日期时间所处年份中对应的周数,默认模式为0。 返回值类型:integer 表1 week函数中mode模式的工作原理 模式 一周的第一天 周数范围 第一周的判断规则 0 星期日 0-53 元旦后的第一个星期日所在周 1 星期一 0-53 元旦后有四天或者更多天所在周 2 星期日 1-53 元旦后的第一个星期日所在周 3 星期一 1-53 元旦后有四天或者更多天所在周 4 星期日 0-53 元旦后有四天或者更多天所在周 5 星期一 0-53 元旦后的第一个星期一所在周 6 星期日 1-53 元旦后有四天或者更多天所在周 7 星期一 1-53 元旦后的第一个星期一所在周 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 SELECT week('2018-01-01'); week ------ 0 (1 row) SELECT week('2018-01-01', 0); week ------ 0 (1 row) SELECT week('2020-12-31', 1); week ------ 53 (1 row) SELECT week('2020-12-31', 5); week ------ 52 (1 row)
  • yearweek(date[, mode]) 描述:返回给定日期date在本年中对应的年份和周数,周数范围为[1, 53]。 返回值类型:integer 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT yearweek('2019-12-31'); yearweek ---------- 201952 (1 row) SELECT yearweek('2019-1-1'); yearweek ---------- 201852 (1 row)
  • time_format(time, fmt) 描述:time_format函数将日期参数按照fmt指定的格式转换为字符串。与date_format函数类似,但格式字符串只能包含小时、分钟、秒和微秒的格式说明符,如果包含其他说明符则会返回NULL值或0。 返回值类型:text 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 SELECT time_format('2009-10-04 22:23:00', '%M %D %W'); time_format -------------------- (1 row) SELECT time_format('2021-02-20 08:30:45', '%Y-%m-%d %H:%i:%S'); time_format --------------------- 0000-00-00 08:30:45 (1 row) SELECT time_format('2021-02-20 18:10:15', '%r-%T'); time_format ---------------------- 06:10:15 PM-18:10:15 (1 row) time_format仅支持时间相关的格式输出(%f、%H、%h、%I、%i、%k、%l、%p、%r、%S、%s、%T),不支持日期相关格式,其他情况处理为普通字符。
  • 示例 开始一个事务: 1 START TRANSACTION; 定义一个名为cursor1的游标: 1 CURSOR cursor1 FOR SELECT * FROM tpcds.reason; 忽略游标cursor1的前3行: 1 MOVE FORWARD 3 FROM cursor1; 抓取游标cursor1的前4行: 1 2 3 4 5 6 7 8 FETCH 4 FROM cursor1; r_reason_sk | r_reason_id | r_reason_desc -------------+------------------+------------------------------------------------------------------------------------------------------ 4 | AAAAAAAAEAAAAAAA | Not the product that was ordred 5 | AAAAAAAAFAAAAAAA | Parts missing 6 | AAAAAAAAGAAAAAAA | Does not work with a product that I have 7 | AAAAAAAAHAAAAAAA | Gift exchange (4 rows) 关闭游标: 1 CLOSE cursor1; 结束一个事务: 1 END;
  • 语法格式 1 MOVE [ direction [ FROM | IN ] ] cursor_name; 其中direction子句为可选参数。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 NEXT | PRIOR | FIRST | LAST | ABSOLUTE count | RELATIVE count | count | ALL | FORWARD | FORWARD count | FORWARD ALL | BACKWARD | BACKWARD count | BACKWARD ALL
  • ts_rank([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) 描述:文档查询排名。 返回类型:float4 示例: 1 2 3 4 5 SELECT ts_rank('hello world'::tsvector, 'world'::tsquery); ts_rank ---------- .0607927 (1 row)
  • ts_rank_cd([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) 描述:排序文件查询使用覆盖密度。 返回类型:float4 示例: 1 2 3 4 5 SELECT ts_rank_cd('hello world'::tsvector, 'world'::tsquery); ts_rank_cd ------------ 0 (1 row)
  • ts_rewrite(query tsquery, target tsquery, substitute tsquery) 描述:替换目标tsquery类型的单词。 返回类型:tsquery 示例: 1 2 3 4 5 SELECT ts_rewrite('a & b'::tsquery, 'a'::tsquery, 'foo|bar'::tsquery); ts_rewrite ------------------------- 'b' & ( 'foo' | 'bar' ) (1 row)
  • ts_rewrite(query tsquery, select text) 描述:使用SELECT命令的结果替代目标中tsquery类型的单词。 返回类型:tsquery 示例: 1 2 3 4 5 SELECT ts_rewrite('world'::tsquery, 'select ''world''::tsquery, ''hello''::tsquery'); ts_rewrite ------------ 'hello' (1 row)
  • to_tsquery([ config regconfig , ] query text) 描述:标准化单词,并转换为tsquery类型。 返回类型:tsquery 示例: 1 2 3 4 5 SELECT to_tsquery('english', 'The & Fat & Rats'); to_tsquery --------------- 'fat' & 'rat' (1 row)
  • to_tsvector([ config regconfig , ] document text) 描述:去除文件信息,并转换为tsvector类型。 返回类型:tsvector 示例: 1 2 3 4 5 SELECT to_tsvector('english', 'The Fat Rats'); to_tsvector ----------------- 'fat':2 'rat':3 (1 row)
  • plainto_tsquery([ config regconfig , ] query text) 描述:产生tsquery类型的词汇,并忽略标点。 返回类型:tsquery 示例: 1 2 3 4 5 SELECT plainto_tsquery('english', 'The Fat Rats'); plainto_tsquery ----------------- 'fat' & 'rat' (1 row)
  • setweight(tsvector, "char") 描述:给tsvector类型的每个元素分配权值。 返回类型:tsvector 示例: 1 2 3 4 5 SELECT setweight('fat:2,4 cat:3 rat:5B'::tsvector, 'A'); setweight ------------------------------- 'cat':3A 'fat':2A,4A 'rat':5A (1 row)
  • 参数说明 CONCURRENTLY 删除索引而不锁定索引表上的并发选择,插入,更新和删除。 普通的DROP INDEX在表上获取排他锁,从而阻止其他访问,直到可以完成索引删除为止。 使用此选项,命令将一直等到冲突的事务完成。 使用此选项时需要注意:只能指定一个索引名称,并且不支持CASCADE选项。(因此,不能以这种方式删除支持UNIQUE或PRIMARY KEY约束的索引。) 可以在事务块内执行常规的DROP INDEX命令,但不能以DROP INDEX CONCURRENTLY方式执行。 IF EXISTS 如果指定的索引不存在,则发出一个notice而不是抛出一个错误。 index_name 要删除的索引名。 取值范围:已存在的索引。 CASCADE | RESTRICT CASCADE:表示允许级联删除依赖于该索引的对象。 RESTRICT:缺省值,表示有依赖与此索引的对象存在,则该索引无法被删除。
  • 注意事项 游标命令只能在事务块里使用。 通常游标和SELECT一样返回文本格式。因为数据在系统内部是用二进制格式存储的,系统必须对数据做一定转换以生成文本格式。一旦数据是以文本形式返回,客户端应用需要把它们转换成二进制进行操作。使用FETCH语句,游标可以返回文本或二进制格式。 需小心使用二进制游标。文本格式一般都比对应的二进制格式占用的存储空间大。二进制游标返回内部二进制形态的数据,可能更易于操作。如果想以文本方式显示数据,则以文本方式检索会为用户节约很多客户端的工作。比如,如果查询从某个整数列返回1,在缺省的游标里将获得一个字符串1,但在二进制游标里将得到一个4字节的包含该数值内部形式的数值(大端顺序)。
  • 示例 创建名称为cursor1的游标: 1 CURSOR cursor1 FOR SELECT * FROM tpcds.customer_address ORDER BY 1; 创建名称为cursor2的游标: 1 CURSOR cursor2 FOR VALUES(1,2),(0,3) ORDER BY 1; WITH HOLD游标的使用示例: 开启事务: 1 START TRANSACTION; 创建一个with hold游标: 1 DECLARE cursor3 CURSOR WITH HOLD FOR SELECT * FROM tpcds.customer_address ORDER BY 1; 抓取头2行到游标cursor3里: 1 2 3 4 5 6 FETCH FORWARD 2 FROM cursor3; ca_address_sk | ca_address_id | ca_street_number | ca_street_name | ca_street_type | ca_suite_number | ca_city | ca_county | ca_state | ca_zip | ca_country | ca_gmt_offset | ca_location_type ---------------+------------------+------------------+--------------------+-----------------+-----------------+-----------------+-----------------+----------+------------+---------------+---------------+---------------------- 1 | AAAAAAAABAAAAAAA | 18 | Jackson | Parkway | Suite 280 | Fairfield | Maricopa County | AZ | 86192 | United States | -7.00 | condo 2 | AAAAAAAACAAAAAAA | 362 | Washington 6th | RD | Suite 80 | Fairview | Taos County | NM | 85709 | United States | -7.00 | condo (2 rows) 结束事务: 1 END; 抓取下一行到游标cursor3里: 1 2 3 4 5 FETCH FORWARD 1 FROM cursor3; ca_address_sk | ca_address_id | ca_street_number | ca_street_name | ca_street_type | ca_suite_number | ca_city | ca_county | ca_state | ca_zip | ca_country | ca_gmt_offset | ca_location_type ---------------+------------------+------------------+--------------------+-----------------+-----------------+-----------------+-----------------+----------+------------+---------------+---------------+---------------------- 3 | AAAAAAAADAAAAAAA | 585 | Dogwood Washington | Circle | Suite Q | Pleasant Valley | York County | PA | 12477 | United States | -5.00 | single family (1 row) 关闭游标: 1 CLOSE cursor3;
  • 参数说明 cursor_name 将要创建的游标名。 取值范围:遵循数据库对象命名规范。 BINARY 指明游标以二进制而不是文本格式返回数据。 NO SCROLL 声明游标检索数据行的方式。 NO SCROLL:声明该游标不能用于以倒序的方式检索数据行。 未声明:根据执行计划的不同,自动判断该游标是否可以用于以倒序的方式检索数据行。 WITH HOLD | WITHOUT HOLD 声明当创建游标的事务结束后,游标是否能继续使用。 WITH HOLD:声明该游标在创建它的事务结束后仍可继续使用。 WITHOUT HOLD:声明该游标在创建它的事务之外不能再继续使用,此游标将在事务结束时被自动关闭。 如果不指定WITH HOLD或WITHOUT HOLD,默认行为是WITHOUT HOLD。 query 使用SELECT或VALUES子句指定游标返回的行。 取值范围:SELECT或VALUES子句。
  • hll_add_agg(hll_hashval, int32 log2m, int32 regwidth, int64 expthresh, int32 sparseon) 描述:把哈希后的数据按照分组放到hll中, 依次制定参数log2m、regwidth、expthresh、sparseon。sparseon取值范围为0或者1。 返回值类型:hll 示例: 1 2 3 4 5 SELECT hll_cardinality(hll_add_agg(hll_hash_text(c), NULL, 1, 4, 0)) FROM t_data; hll_cardinality ------------------ 496.628982624022 (1 row)
  • hll_add_agg(hll_hashval, int32 log2m, int32 regwidth) 描述:把哈希后的数据按照分组放到hll中。依次制定参数log2m, regwidth。 regwidth取值范围为1~5。 返回值类型:hll 示例: 1 2 3 4 5 SELECT hll_cardinality(hll_add_agg(hll_hash_text(c), NULL, 1)) FROM t_data; hll_cardinality ------------------ 496.628982624022 (1 row)
  • hll_add_agg(hll_hashval, int32 log2m, int32 regwidth, int64 expthresh) 描述:把哈希后的数据按照分组放到hll中, 依次指定参数log2m、regwidth、expthresh。expthresh的取值范围是-1~7之间的整数,该参数可以用来设置从Explicit模式到Sparse模式的阈值大小。-1表示自动模式,0表示跳过Explicit模式,取1~7表示在基数到达 2expthresh时切换模式。 返回值类型:hll 示例: 1 2 3 4 5 SELECT hll_cardinality(hll_add_agg(hll_hash_text(c), NULL, 1, 4)) FROM t_data; hll_cardinality ------------------ 496.628982624022 (1 row)
  • hll_union_agg(hll) 描述:将多个hll类型数据union成一个hll。 返回值类型:hll 示例: 将各组中的hll数据union成一个hll,并计算distinct值。 1 2 3 4 5 SELECT #hll_union_agg(c) as cardinality FROM t_a_c_hll; cardinality ------------------ 496.628982624022 (1 row)
  • hll_add_agg(hll_hashval) 描述:把哈希后的数据按照分组放到hll中。 返回值类型:hll 示例: 准备数据。 1 2 3 4 CREATE TABLE t_id(id int); INSERT INTO t_id VALUES(generate_series(1,500)); CREATE TABLE t_data(a int, c text); INSERT INTO t_data SELECT mod(id,2), id FROM t_id; 创建表并指定列为hll。 1 CREATE TABLE t_a_c_hll(a int, c hll); 根据a列group by对数据分组,把各组数据加到hll中。 1 INSERT INTO t_a_c_hll SELECT a, hll_add_agg(hll_hash_text(c)) FROM t_data GROUP BY a; 得到每组数据中hll的Distinct值。 1 2 3 4 5 6 SELECT a, #c as cardinality FROM t_a_c_hll order by a; a | cardinality ---+------------------ 0 | 250.741759091658 1 | 250.741759091658 (2 rows)
  • hll_add_agg(hll_hashval, int32 log2m) 描述:把哈希后的数据按照分组放到hll中。 并指定参数log2m,取值范围为10~16。 返回值类型:hll 示例: 1 2 3 4 5 SELECT hll_cardinality(hll_add_agg(hll_hash_text(c), 10)) FROM t_data; hll_cardinality ------------------ 503.932348927339 (1 row)
  • 语法格式 1 2 3 4 5 ALTER [ ROW LEVEL SECURITY ] POLICY [ IF EXISTS ] policy_name ON table_name RENAME TO new_policy_name ALTER [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name [ TO { role_name | PUBLIC } [, ...] ] [ USING ( using_expression ) ]
  • polygon(npts, circle) 描述:圆转换成npts点多边形。 返回类型:polygon 示例: 1 2 3 4 5 6 SELECT polygon(12, circle '((0,0),2.0)') AS RESULT; result ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ((-2,0),(-1.73205080756888,1),(-1,1.73205080756888),(-1.22464679914735e-16,2),(1,1.73205080756888),(1.73205080756888,1),(2,2.44929359829471e-16),(1.73205080756888,-0.999999999999999),(1,-1.73205080756888),(3.67394039744206e-16,-2),(-0.999999999999999,-1.73205080756888),(-1.73205080756888,-1)) (1 row)
  • box(circle) 描述:将圆转换成矩形。 返回类型:box 示例: 1 2 3 4 5 SELECT box(circle '((0,0),2.0)') AS RESULT; result --------------------------------------------------------------------------- (1.41421356237309,1.41421356237309),(-1.41421356237309,-1.41421356237309) (1 row)
  • polygon(circle) 描述:圆转换成12点多边形。 返回类型:polygon 示例: 1 2 3 4 5 6 SELECT polygon(circle '((0,0),2.0)') AS RESULT; result ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ((-2,0),(-1.73205080756888,1),(-1,1.73205080756888),(-1.22464679914735e-16,2),(1,1.73205080756888),(1.73205080756888,1),(2,2.44929359829471e-16),(1.73205080756888,-0.999999999999999),(1,-1.73205080756888),(3.67394039744206e-16,-2),(-0.999999999999999,-1.73205080756888),(-1.73205080756888,-1)) (1 row)
  • 示例 授予用户webuser对模式tpcds下视图的所有操作权限: 1 2 3 4 5 6 7 8 DO $$DECLARE r record; BEGIN FOR r IN SELECT c.relname,n.nspname FROM pg_class c,pg_namespace n WHERE c.relnamespace = n.oid AND n.nspname = 'tpcds' AND relkind IN ('r','v') LOOP EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$;
  • get_db_source_datasize() 描述:估算当前数据库非压缩态的数据总容量。 返回值类型:bigint 备注:(1)调用该函数前需要做analyze;(2)通过估算列存的压缩率计算非压缩态的数据总容量。 示例: 1 2 3 4 5 6 7 analyze; ANALYZE SELECT get_db_source_datasize(); get_db_source_datasize ------------------------ 35384925667 (1 row)
  • pg_database_size(name) 描述:指定名称的数据库使用的磁盘空间。 返回值类型:bigint 备注:pg_database_size接收一个数据库的OID或者名字,然后返回该对象使用的全部磁盘空间。 示例: 1 2 3 4 5 SELECT pg_database_size('gaussdb'); pg_database_size ------------------ 51590112 (1 row)
共100000条