华为云用户手册

  • DB_TAB_MODIFICATIONS DB_TAB_MODIFICATIONS视图显示自上次收集表统计信息以来当前用户可访问的表的修改信息的统计数据。该视图目前只显示执行了INSERT、DELETE和UPDATE操作的表的统计数据。所有用户都可以访问该视图。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 DB_TAB_MODIFICATIONS字段 名称 类型 描述 table_owner character varying(128) 表的所有者。 table_name character varying(128) 表的名称。 partition_name character varying(128) 分区的名称。 subpartition_name character varying(128) 子分区的名称。 inserts numeric 自上次收集统计信息以来的估计插入次数。 updates numeric 自上次收集统计信息以来的估计更新次数。 deletes numeric 自上次收集统计信息以来的估计删除次数。 timestamp timestamp(0) without time zone 上次修改表的时间。 暂不支持分区表的修改时间,值为NULL。 truncated character varying(3) 暂不支持,值为NULL。 drop_segments numeric 暂不支持,值为NULL。 schema_name character varying(128) 表所属模式名。 父主题: 其他系统视图
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 --创建基本表table_for_label。 gaussdb=# CREATE TABLE table_for_label(col1 int, col2 text); --创建资源标签table_label。 gaussdb=# CREATE RESOURCE LABEL table_label ADD COLUMN(table_for_label.col1); --将col2添加至资源标签table_label中。 gaussdb=# ALTER RESOURCE LABEL table_label ADD COLUMN(table_for_label.col2); --将资源标签table_label中的一项移除。 gaussdb=# ALTER RESOURCE LABEL table_label REMOVE COLUMN(table_for_label.col1); --删除资源标签table_label。 gaussdb=# DROP RESOURCE LABEL table_label; --删除基本表table_for_label。 gaussdb=# DROP TABLE table_for_label;
  • PG_TIMEZONE_NAMES PG_TIMEZONE_NAMES视图显示所有能够被SET TIMEZONE语法识别的时区名及其缩写、UTC偏移量、是否实行夏令时。 表1 PG_TIMEZONE_NAMES字段 名称 类型 描述 name text 时区名。 abbrev text 时区名缩写。 utc_offset interval 相对于UTC的偏移量。 is_dst boolean 如果当前正实行夏令时则为TRUE,否则为FALSE。 父主题: 其他系统视图
  • 数据库逻辑结构图 GaussDB 的数据库节点负责存储数据,其存储介质也是磁盘,本节主要从逻辑视角介绍数据库节点都有哪些对象,以及这些对象之间的关系。数据库逻辑结构如图1。 图1 数据库逻辑结构图 Tablespace,即表空间,表空间是一个目录,实例中可以存在多个表空间,其中存储的是它所包含的数据库的各种物理文件。每个表空间可以对应多个Database。 Database,即数据库,用于管理各类数据对象,各数据库间相互隔离。数据库管理的对象可分布在多个Tablespace上。 Datafile Segment,即数据文件,通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。 Table,即表,每张表只能属于一个数据库,也只能对应到一个Tablespace。每张表对应的数据文件必须在同一个Tablespace中。 Block,即数据块,是数据库管理的基本单位,默认大小为8KB。 父主题: 数据库系统概述
  • 账本数据库使用的数据类型 账本数据库使用HASH16数据类型来存储行级hash摘要或表级hash摘要,使用HASH32数据类型来存储全局hash摘要或者历史表校验hash。 表1 账本数据库HASH类型 名称 描述 存储空间 范围 HASH16 以无符号64位整数存储。 8字节 0 ~ +18446744073709551615 HASH32 以包含16个无符号整型元素数的组存储。 16字节 16个元素的无符号整型数组能够包含的取值范围 HASH16数据类型用来在账本数据库中存储行级或表级hash摘要,在获得长度为16个字符的十六进制字符串的hash序列后,系统将调用hash16in函数将该序列转换为一个无符号64位整数存储进HASH16类型变量中。示例如下: 十六进制字符串:e697da2eaa3a775b 对应的无符号64位整数:16615989244166043483 十六进制字符串:ffffffffffffffff 对应的无符号64位整数:18446744073709551615 示例: gaussdb=# CREATE TABLE hash16test(id int, data hash16); gaussdb=# INSERT INTO hash16test VALUES (1, 'e697da2eaa3a775b'); gaussdb=# SELECT * FROM hash16test; id | data ----+---------------------------------- 1 | e697da2eaa3a775b (1 row) gaussdb=# DROP TABLE hash16test; HASH32数据类型用来在账本数据库中存储全局hash摘要或者历史表校验hash,在获得长度为32个字符的十六进制字符串的hash序列后,系统将调用hash32in函数将该序列转换到一个包含16个无符号整型元素的数组中。示例如下: 十六进制字符串:685847ed1fe38e18f6b0e2b18c00edee 对应的HASH32数组:[104,88,71,237,31,227,142,24,246,176,226,177,140,0,237,238] 示例: gaussdb=# CREATE TABLE hash32test(id int, data hash32); gaussdb=# INSERT INTO hash32test VALUES (1, '685847ed1fe38e18f6b0e2b18c00edee'); gaussdb=# SELECT * FROM hash32test; id | data ----+---------------------------------- 1 | 685847ed1fe38e18f6b0e2b18c00edee (1 row) gaussdb=# DROP TABLE hash32test; 父主题: 数据类型
  • SQL Statistics SQL Statistics列名称及描述如表1所示。 表1 SQL Statistics报表主要内容 列名称 描述 Unique SQL Id 归一化的SQL id。 DB Name 数据库名称。 Parent Unique SQL Id 父语句的归一化SQL id,对于非存储过程子语句的场景,该值为0。 Node Name 节点名称。 User Name 用户名称。 Avg Tuples Fetched 平均随机扫描行。 Avg Tuples Returned 平均顺序扫描行。 Calls 调用次数。 Total Elapse Time(us) 总执行时间(us)。 Avg Elapse Time(us) 平均执行时间(us)。 Returned Rows SELECT返回行数。 Avg Returned Rows 平均SELECT返回行数。 Tuples Affected Insert/Update/Delete行数。 Avg Tuples Affected 平均Insert/Update/Delete行数。 Logical Read Buffer逻辑读次数。 Avg Logical Read 平均Buffer逻辑读次数。 Physical Read Buffer物理读次数。 Avg Physical Read 平均Buffer物理读次数。 CPU Time(us) CPU时间(us)。 Avg CPU Time(us) 平均CPU时间(us)。 Data IO Time(us) IO上的时间花费(us)。 Avg Data IO Time(us) 平均IO上的时间花费(us)。 Lock Wait Time(us) SQL语句的等锁时间(us)。 Avg Lock Wait Time(us) 平均每条SQL语句的等锁时间(us)。 Sort Count 排序执行的次数。 Sort Time(us) 排序执行的时间(us)。 Sort Mem Used(KB) 排序过程中使用的work memory大小(KB)。 Sort Spill Count 排序过程中,若发生落盘,写文件的次数。 Sort Spill Size(KB) 排序过程中,若发生落盘,使用的文件大小(KB)。 Hash Count hash执行的次数。 Hash Time(us) hash执行的时间(us)。 Hash Mem Used(KB) hash过程中使用的work memory大小(KB)。 Hash Spill Count hash过程中,若发生落盘,写文件的次数。 Hash Spill Size(KB) hash过程中,若发生落盘,使用的文件大小(KB)。 SQL Text 归一化SQL字符串。 父主题: WDR报告信息介绍
  • 注意事项 当前会话的用户必须是指定的rolename角色的成员,当系统管理员可以选择任何角色。 使用这条命令,它可能会增加一个用户的权限,也可能会限制一个用户的权限。如果会话用户的角色有INHERITS属性,则它自动拥有它能SET ROLE变成的角色的所有权限;在这种情况下,SET ROLE实际上是删除了所有直接赋予会话用户的权限,以及它的所属角色的权限,只剩下指定角色的权限。另一方面,如果会话用户的角色有NOINHERITS属性,SET ROLE删除直接赋予会话用户的权限,而获取指定角色的权限。
  • 参数说明 SESSION 声明这个命令只对当前会话起作用,此参数为缺省值。 LOCAL 声明该命令只在当前事务中有效。 role_name 角色名。 取值范围:字符串,数据库中已存在的用户名。 password 角色的密码。要求符合密码的命名规则。 使用密文密码限制如下: 管理员用户不能使用密文密码切换到其他管理员用户,只能向权限更低用户切换。 使用密文密码通常用于gs_dump、gs_dumpall导出场景,其他场景不建议直接使用密文密码。 RESET ROLE 用于重置当前用户标识。
  • MY_SCHEDULER_JOBS MY_SCHEDULER_JOBS视图显示数据库下当前用户拥有的所有DBE_SCHEDULER定时任务的信息。默认所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_SCHEDULER_JOBS字段 名称 类型 描述 job_name text 定时任务名。 job_subname character varying(128) 暂不支持,值为NULL。 job_style text 定时任务行为模式,创建时指定,仅支持指定为“REGULAR”,不指定时为NULL。 job_creator name 定时任务创建者。 client_id character varying(65) 暂不支持,值为NULL。 global_uid character varying(33) 暂不支持,值为NULL。 program_owner character varying(4000) 定时任务引用的程序的所有者。 program_name text 定时任务引用的程序的名称。 job_type character varying(16) 定时任务内联程序类型,可用类型为: PLSQL_BLOCK:匿名存储过程快。 STORED_PROCEDURE:保存的存储过程。 EXTERNAL_SCRIPT:外部脚本。 job_action text 定时任务的程序内容。 number_of_arguments text 定时任务的参数个数。 schedule_owner character varying(4000) 暂不支持,值为NULL。 schedule_name text 定时任务引用的调度的名称。 schedule_type character varying(12) 暂不支持,值为NULL。 start_date timestamp without time zone 定时任务的起始时间。 repeat_interval text 定时任务的任务周期。 event_queue_owner character varying(128) 暂不支持,值为NULL。 event_queue_name character varying(128) 暂不支持,值为NULL。 event_queue_agent character varying(523) 暂不支持,值为NULL。 event_condition character varying(4000) 暂不支持,值为NULL。 event_rule character varying(261) 暂不支持,值为NULL。 file_watcher_owner character varying(261) 暂不支持,值为NULL。 file_watcher_name character varying(261) 暂不支持,值为NULL。 end_date timestamp without time zone 定时任务的失效时间。 job_class text 定时任务所属的定时任务类的名称。 enabled boolean 定时任务的启用状态。 auto_drop text 定时任务的自动删除功能状态。 restart_on_recovery character varying(5) 暂不支持,值为NULL。 restart_on_failure character varying(5) 暂不支持,值为NULL。 state "char" 定时任务的状态。 job_priority numeric 暂不支持,值为NULL。 run_count numeric 暂不支持,值为NULL。 uptime_run_count numeric 暂不支持,值为NULL。 max_runs numeric 暂不支持,值为NULL。 failure_count smallint 定时任务失败次数统计。 uptime_failure_count numeric 暂不支持,值为NULL。 max_failures numeric 定时任务标记为破坏之前允许失败的最大次数。 retry_count numeric 暂不支持,值为NULL。 last_start_date timestamp without time zone 定时任务上次拉起时间。 last_run_duration interval day to second(6) 定时任务上次执行的时长。 next_run_date timestamp without time zone 定时任务下次执行时间。 schedule_limit interval day to second(0) 暂不支持,值为NULL。 max_run_duration interval day to second(0) 暂不支持,值为NULL。 logging_level character varying(11) 暂不支持,值为NULL。 store_output character varying(5) 是否存储所有定时任务的输出信息。 stop_on_window_close character varying(5) 暂不支持,值为NULL。 instance_stickiness character varying(5) 暂不支持,值为NULL。 raise_events character varying(4000) 暂不支持,值为NULL。 system character varying(5) 暂不支持,值为NULL。 job_weight numeric 暂不支持,值为NULL。 nls_env character varying(4000) 暂不支持,值为NULL。 source character varying(128) 暂不支持,值为NULL。 number_of_destinations numeric 暂不支持,值为NULL。 destination_owner character varying(261) 暂不支持,值为NULL。 destination text 定时任务的目标名称。 credential_owner character varying(128) 暂不支持,值为NULL。 credential_name text 定时任务的证书名称。 instance_id oid 当前数据库的oid。 deferred_drop character varying(5) 暂不支持,值为NULL。 allow_runs_in_restricted_mode character varying(5) 暂不支持,值为NULL。 comments text 定时任务的备注。 flags numeric 暂不支持,值为NULL。 restartable character varying(5) 暂不支持,值为NULL。 has_constraints character varying(5) 暂不支持,值为NULL。 connect_credential_owner character varying(128) 暂不支持,值为NULL。 connect_credential_name character varying(128) 暂不支持,值为NULL。 fail_on_script_error character varying(5) 暂不支持,值为NULL。 父主题: 其他系统视图
  • MY_RECYCLEBIN MY_RECYCLEBIN显示当前用户拥有的回收站信息。所有用户都可以访问,该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_RECYCLEBIN字段 名称 类型 描述 object_name character varying(128) 对象的新名称。 original_name character varying(128) 对象的原始名称。 operation character varying(18) 对对象执行的操作: DROP:对象已删除(对象不再需要)。 TRUNCATE:对象被清空。 type character varying(25) 对象的类型。 ts_name character varying(30) 对象所属的表空间名称。 createtime character varying(19) 创建对象的时间戳。 droptime character varying(19) 删除对象的时间戳。 dropscn numeric 将对象移动到回收站的事务的系统更改编号(SCN)。 partition_name character varying(128) 已删除的分区的名称。 can_undrop character varying(3) 指示对象是否可以闪回。 can_purge character varying(3) 指示对象是否可以清除。 related numeric 父对象的对象编号。 base_object oid 基对象的对象编号。 purge_object oid 被清除的对象的对象编号。 space numeric 对象使用的块数。 父主题: 其他系统视图
  • 线段 线段(lseg)是用一对点来代表的。用下面的语法描述lseg的数值: [ ( x1 , y1 ) , ( x2 , y2 ) ] ( ( x1 , y1 ) , ( x2 , y2 ) ) ( x1 , y1 ) , ( x2 , y2 ) x1 , y1 , x2 , y2 (x1,y1)和(x2,y2)表示线段的端点,点的数值类型为float8类型。 线段输出使用第一种语法。 示例: gaussdb=# SELECT lseg(point(1.1, 2.2), point(3.3, 4.4)); lseg ----------------------- [(1.1,2.2),(3.3,4.4)] (1 row)
  • 多边形 多边形由一系列点代表(多边形的顶点)。多边形可以认为与闭合路径一样,但是存储方式不一样而且有自己的一套支持函数。 用下面的语法描述polygon的数值: ( ( x1 , y1 ) , ... , ( xn , yn ) ) ( x1 , y1 ) , ... , ( xn , yn ) ( x1 , y1 , ... , xn , yn ) x1 , y1 , ... , xn , yn 点表示多边形的顶点,点的数值类型为float8类型。 多边形输出使用第一种语法。 示例: gaussdb=# SELECT polygon(box '((0,0),(1,1))'); polygon --------------------------- ((0,0),(0,1),(1,1),(1,0)) (1 row)
  • 矩形 矩形是用一对对角点来表示的。用下面的语法描述box的值: ( ( x1 , y1 ) , ( x2 , y2 ) ) ( x1 , y1 ) , ( x2 , y2 ) x1 , y1 , x2 , y2 (x1,y1)和(x2,y2)表示矩形的一对对角点,点的数值类型为float8类型。 矩形的输出使用第二种语法。 任何两个对角都可以出现在输入中,但按照该种顺序,右上角和左下角的值会被重新排序以存储。 示例: gaussdb=# SELECT box(point(1.1, 2.2), point(3.3, 4.4)); box --------------------- (3.3,4.4),(1.1,2.2) (1 row)
  • 路径 路径由一系列连接的点组成。路径可能是开放的,也就是认为列表中第一个点和最后一个点没有连接,也可能是闭合的,这时认为第一个点和最后一个点连接起来。 用下面的语法描述path的数值: [ ( x1 , y1 ) , ... , ( xn , yn ) ] ( ( x1 , y1 ) , ... , ( xn , yn ) ) ( x1 , y1 ) , ... , ( xn , yn ) ( x1 , y1 , ... , xn , yn ) x1 , y1 , ... , xn , yn 点表示组成路径的线段的端点,点的数值类型为float8类型。方括号([])表明一个开放的路径,圆括号(())表明一个闭合的路径。当最外层的括号被省略,如在第三至第五语法,会假定一个封闭的路径。 路径的输出使用第一种或第二种语法输出。 示例: gaussdb=# SELECT path(polygon '((0,0),(1,1),(2,0))'); path --------------------- ((0,0),(1,1),(2,0)) (1 row)
  • PG_SECLABEL PG_SECLABEL系统表存储数据对象上的安全标签。 PG_SHSECLABEL的作用类似,只是它是用于在一个数据库内共享的数据库对象的安全标签上的。 表1 PG_SECLABEL字段 名称 类型 引用 描述 objoid oid 任意OID属性 这个安全标签所属的对象的OID。 classoid oid PG_CLASS.oid 出现这个对象的系统目录的OID。 objsubid integer - 出现在这个对象中的列的序号。 provider text - 与这个标签相关的标签提供程序。 label text - 应用于这个对象的安全标签。 父主题: 用户和权限管理
  • GS_ADM_ILMOBJE CTS GS_ADM_ILMOBJECTS视图反映所有存在ILM策略应用的数据对象与相应策略的概要信息,包含策略名称、数据对象名称、策略的来源、策略的启用删除状态。需要有系统管理员权限才可以访问此系统视图。 表1 GS_ADM_ILMOBJECTS字段 名称 类型 描述 policy_name character varying(128) ADO策略名称,系统自动生成,规则为:p+策略ID。 object_owner character varying(128) 数据对象所在Schema名称。 object_name character varying(128) 数据对象名称。 subobject_name character varying(128) 数据对象分区名称或二级分区名称。 object_type character varying(18) 数据对象类型: TABLE:表。 TABLE PARTITION:分区。 TABLE SUBPARTITION:二级分区。 inherited_from character varying(20) 当前策略是继承哪一个对象上的策略,取值范围: TABLE:表。 TABLE PARTITION:分区。 POLICY NOT INHERITED:不继承。 tbs_inherited_from character varying(30) 当前策略是继承哪一个TS上的策略。当前版本值为null。 enabled character varying(7) 该策略对当前对象是否开启。 deleted character varying(7) 标识该对象上的ILM策略被删除,实际操作结果是删除分区或者是删除分区上的策略,该条记录都会被删除(ILMOBJ)。 父主题: OLTP表压缩
  • 行表达式函数白名单 表1 为数据对象增加或修改策略ILM所支持的行表达式函数白名单 func_oid_value func_name 38 int2in 39 int2out 42 int4in 43 int4out 46 textin 47 textout 56 boollt 57 boolgt 60 booleq 61 chareq 63 int2eq 64 int2lt 65 int4eq 66 int4lt 67 texteq 70 charne 72 charle 73 chargt 74 charge 77 int4 78 char 84 boolne 111 numeric_fac 141 int4mul 144 int4ne 145 int2ne 146 int2gt 147 int4gt 148 int2le 149 int4le 150 int4ge 151 int2ge 152 int2mul 153 int2div 154 int4div 155 int2mod 156 int4mod 157 textne 158 int24eq 159 int42eq 160 int24lt 161 int42lt 162 int24gt 163 int42gt 164 int24ne 165 int42ne 166 int24le 167 int42le 168 int24ge 169 int42ge 170 int24mul 171 int42mul 172 int24div 173 int42div 176 int2pl 177 int4pl 178 int24pl 179 int42pl 180 int2mi 181 int4mi 182 int24mi 183 int42mi 202 float4mul 203 float4div 204 float4pl 205 float4mi 206 float4um 207 float4abs 209 float4larger 211 float4smaller 212 int4um 213 int2um 216 float8mul 217 float8div 218 float8pl 219 float8mi 220 float8um 221 float8abs 223 float8larger 224 float8smaller 228 dround 229 dtrunc 235 float8 236 float4 237 int2 238 int2 244 timepl 245 timemi 248 intinterval 249 tintervalrel 251 abstimeeq 252 abstimene 253 abstimelt 254 abstimegt 255 abstimele 256 abstimege 257 reltimeeq 258 reltimene 259 reltimelt 260 reltimegt 261 reltimele 262 reltimege 263 tintervalsame 264 tintervalct 265 tintervalov 266 tintervalleneq 267 tintervallenne 268 tintervallenlt 269 tintervallengt 270 tintervallenle 271 tintervallenge 273 tintervalend 275 isfinite 279 float48mul 280 float48div 281 float48pl 282 float48mi 283 float84mul 284 float84div 285 float84pl 286 float84mi 287 float4eq 288 float4ne 289 float4lt 290 float4le 291 float4gt 292 float4ge 293 float8eq 294 float8ne 295 float8lt 296 float8le 297 float8gt 298 float8ge 299 float48eq 300 float48ne 301 float48lt 302 float48le 303 float48gt 304 float48ge 305 float84eq 306 float84ne 307 float84lt 308 float84le 309 float84gt 310 float84ge 311 float8 312 float4 313 int4 314 int2 316 float8 317 int4 318 float4 319 int4 350 btint2cmp 351 btint4cmp 354 btfloat4cmp 355 btfloat8cmp 357 btabstimecmp 358 btcharcmp 360 bttextcmp 377 cash_cmp 380 btreltimecmp 381 bttintervalcmp 385 regexp_count 386 regexp_count 387 regexp_count 400 hashtext 432 hash_numeric 449 hashint2 450 hashint4 451 hashfloat4 452 hashfloat8 454 hashchar 458 text_larger 459 text_smaller 461 int8out 462 int8um 463 int8pl 464 int8mi 465 int8mul 466 int8div 467 int8eq 468 int8ne 469 int8lt 470 int8gt 471 int8le 472 int8ge 474 int84eq 475 int84ne 476 int84lt 477 int84gt 478 int84le 479 int84ge 480 int4 481 int8 482 float8 483 int8 630 regexp_instr 631 regexp_instr 632 regexp_instr 633 regexp_instr 634 regexp_instr 652 float4 654 hashint1_numeric 665 hashint2_numeric 667 hashint16 676 mktinterval 682 hashint4_numeric 714 int2 720 octet_length 721 get_byte 722 set_byte 723 get_bit 724 set_bit 740 text_lt 741 text_le 742 text_gt 743 text_ge 754 int8 755 hashint8_numeric 766 int4inc 768 int4larger 769 int4smaller 770 int2larger 771 int2smaller 784 tintervaleq 785 tintervalne 786 tintervallt 787 tintervalgt 788 tintervalle 789 tintervalge 792 btint12cmp 793 btint14cmp 794 btint18cmp 795 btint116cmp 796 btint1numericcmp 797 btint21cmp 798 btint216cmp 799 btint2numericcmp 800 btint41cmp 801 btint416cmp 802 btint4numericcmp 803 btint81cmp 804 btint816cmp 805 btint8numericcmp 837 int82pl 838 int82mi 839 int82mul 840 int82div 841 int28pl 842 btint8cmp 846 cash_mul_flt4 847 cash_div_flt4 848 flt4_mul_cash 849 position 852 int48eq 853 int48ne 854 int48lt 855 int48gt 856 int48le 857 int48ge 860 bpchar 862 int4_mul_cash 863 int2_mul_cash 864 cash_mul_int4 865 cash_div_int4 866 cash_mul_int2 867 cash_div_int2 868 strpos 870 lower 871 upper 877 substr 883 substr 888 cash_eq 889 cash_ne 890 cash_lt 891 cash_le 892 cash_gt 893 cash_ge 894 cash_pl 895 cash_mi 896 cash_mul_flt8 897 cash_div_flt8 898 cashlarger 899 cashsmaller 919 flt8_mul_cash 935 cash_words 936 substring 937 substring 940 mod 941 mod 942 int28mi 943 int28mul 944 char 945 int8mod 947 mod 948 int28div 949 hashint8 1026 timezone 1048 bpchareq 1049 bpcharlt 1050 bpcharle 1051 bpchargt 1052 bpcharge 1053 bpcharne 1063 bpchar_larger 1064 bpchar_smaller 1078 bpcharcmp 1080 hashbpchar 1102 time_lt 1103 time_le 1104 time_gt 1105 time_ge 1106 time_ne 1107 time_cmp 1116 regexp_replace 1117 regexp_replace 1118 regexp_replace 1119 regexp_replace 1145 time_eq 1152 timestamptz_eq 1153 timestamptz_ne 1154 timestamptz_lt 1155 timestamptz_le 1156 timestamptz_ge 1157 timestamptz_gt 1158 to_timestamp 1159 timezone 1162 interval_eq 1163 interval_ne 1164 interval_lt 1165 interval_le 1166 interval_ge 1167 interval_gt 1168 interval_um 1169 interval_pl 1170 interval_mi 1172 date_part 1173 timestamptz 1177 interval 1180 abstime 1188 timestamptz_mi 1194 reltime 1195 timestamptz_smaller 1196 timestamptz_larger 1197 interval_smaller 1198 interval_larger 1199 age 1200 interval 1218 date_trunc 1219 int8inc 1230 int8abs 1236 int8larger 1237 int8smaller 1238 texticregexeq 1239 texticregexne 1246 charlt 1251 int4abs 1253 int2abs 1254 textregexeq 1256 textregexne 1271 overlaps 1273 date_part 1274 int84pl 1275 int84mi 1276 int84mul 1277 int84div 1278 int48pl 1279 int48mi 1280 int48mul 1281 int48div 1282 quote_ident 1283 quote_literal 1289 quote_nullable 1299 now 1304 overlaps 1308 overlaps 1309 overlaps 1310 overlaps 1311 overlaps 1314 timestamptz_cmp 1315 interval_cmp 1316 time 1326 interval_div 1342 round 1343 trunc 1352 timetz_eq 1353 timetz_ne 1354 timetz_lt 1355 timetz_le 1356 timetz_ge 1357 timetz_gt 1358 timetz_cmp 1359 timestamptz 1370 interval 1373 isfinite 1374 octet_length 1375 octet_length 1377 time_larger 1378 time_smaller 1379 timetz_larger 1380 timetz_smaller 1384 date_part 1385 date_part 1389 isfinite 1390 isfinite 1394 abs 1395 abs 1396 abs 1397 abs 1398 abs 1419 time 1481 tinterval 1581 biteq 1582 bitne 1592 bitge 1593 bitgt 1594 bitle 1595 bitlt 1596 bitcmp 1608 degrees 1618 interval_mul 1620 ascii 1621 chr 1622 repeat 1623 similar_escape 1624 mul_d_interval 1633 texticlike 1634 texticnlike 1637 like_escape 1656 bpcharicregexeq 1657 bpcharicregexne 1658 bpcharregexeq 1659 bpcharregexne 1660 bpchariclike 1661 bpcharicnlike 1666 varbiteq 1667 varbitne 1668 varbitge 1669 varbitgt 1670 varbitle 1671 varbitlt 1672 varbitcmp 1673 bitand 1674 bitor 1675 bitxor 1676 bitnot 1677 bitshiftleft 1678 bitshiftright 1679 bitcat 1680 substring 1682 octet_length 1683 bit 1684 int4 1685 bit 1687 varbit 1688 time_hash 1690 time_mi_time 1691 boolle 1692 boolge 1693 btboolcmp 1696 timetz_hash 1697 interval_hash 1698 position 1699 substring 1702 numeric_out 1703 numeric 1704 numeric_abs 1705 abs 1706 sign 1707 round 1709 trunc 1710 trunc 1711 ceil 1712 floor 1718 numeric_eq 1719 numeric_ne 1720 numeric_gt 1721 numeric_ge 1722 numeric_lt 1723 numeric_le 1724 numeric_add 1725 numeric_sub 1726 numeric_mul 1727 numeric_div 1728 mod 1729 numeric_mod 1740 numeric 1742 numeric 1743 numeric 1744 int4 1745 float4 1746 float8 1747 time_pl_interval 1748 time_mi_interval 1749 timetz_pl_interval 1750 timetz_mi_interval 1752 trunc 1753 trunc 1764 numeric_inc 1766 numeric_smaller 1767 numeric_larger 1769 numeric_cmp 1771 numeric_uminus 1781 numeric 1782 numeric 1783 int2 1810 bit_length 1811 bit_length 1812 bit_length 1840 int2_sum 1841 int4_sum 1842 int8_sum 1845 to_ascii 1846 to_ascii 1848 interval_pl_time 1850 int28eq 1851 int28ne 1852 int28lt 1853 int28gt 1854 int28le 1855 int28ge 1856 int82eq 1857 int82ne 1858 int82lt 1859 int82gt 1860 int82le 1861 int82ge 1874 btint161cmp 1875 btint162cmp 1876 btint164cmp 1877 btint168cmp 1878 btnumericint1cmp 1879 btnumericint2cmp 1880 btnumericint4cmp 1881 btnumericint8cmp 1882 btint16cmp 1892 int2and 1893 int2or 1894 int2xor 1895 int2not 1896 int2shl 1897 int2shr 1898 int4and 1899 int4or 1900 int4xor 1901 int4not 1902 int4shl 1903 int4shr 1904 int8and 1905 int8or 1906 int8xor 1907 int8not 1908 int8shl 1909 int8shr 1910 int8up 1911 int2up 1912 int4up 1913 float4up 1914 float8up 1915 numeric_uplus 1946 encode 1961 timestamp 1967 timestamptz 1968 time 1969 timetz 1973 div 1980 numeric_div_trunc 2009 like_escape 2012 substring 2013 substring 2014 position 2020 date_trunc 2021 date_part 2024 timestamp 2025 timestamp 2031 timestamp_mi 2032 timestamp_pl_interval 2033 timestamp_mi_interval 2035 timestamp_smaller 2036 timestamp_larger 2038 timezone 2039 timestamp_hash 2041 overlaps 2042 overlaps 2043 overlaps 2044 overlaps 2045 timestamp_cmp 2046 time 2048 isfinite 2052 timestamp_eq 2053 timestamp_ne 2054 timestamp_lt 2055 timestamp_le 2056 timestamp_ge 2057 timestamp_gt 2058 age 2069 timezone 2070 timezone 2073 substring 2074 substring 2075 bit 2076 int8 2089 to_hex 2090 to_hex 2160 text_pattern_lt 2161 text_pattern_le 2163 text_pattern_ge 2164 text_pattern_gt 2166 bttext_pattern_cmp 2167 ceiling 2174 bpchar_pattern_lt 2175 bpchar_pattern_le 2177 bpchar_pattern_ge 2178 bpchar_pattern_gt 2180 btbpchar_pattern_cmp 2188 btint48cmp 2189 btint84cmp 2190 btint24cmp 2191 btint42cmp 2192 btint28cmp 2193 btint82cmp 2194 btfloat48cmp 2195 btfloat84cmp 2308 ceil 2309 floor 2310 sign 2320 ceiling 2515 booland_statefunc 2516 boolor_statefunc 2547 interval_pl_timetz 2548 interval_pl_timestamp 2557 bool 2558 int4 2765 regexp_split_to_table 2766 regexp_split_to_table 2805 int8inc_float8_float8 2906 timestamptypmodout 2908 timestamptztypmodout 2910 timetypmodout 2912 timetztypmodout 2996 int8_sum_to_int8 3032 get_bit 3033 set_bit 3062 reverse 3167 instr 3168 instr 3169 instr 3170 multiply 3171 multiply 3175 lengthb 3176 lengthb 3177 int8_bool 3178 bool_int8 3180 int2_bool 3181 bool_int2 3182 substring_inner 3183 substring_inner 3226 timestamp_diff 3227 timestamp_diff 3343 int8_mul_cash 3344 cash_mul_int8 3345 cash_div_int8 3822 cash_div_cash 3922 int4range_subdiff 3923 int8range_subdiff 3924 numrange_subdiff 3925 daterange_subdiff 3929 tsrange_subdiff 3930 tstzrange_subdiff 4162 varchar_date 4163 bpchar_date 4164 text_date 4166 int2_text 4167 int4_text 4168 int8_text 4169 float4_text 4170 float8_text 4171 numeric_text 5580 smalldatetime_eq 5581 smalldatetime_ne 5582 smalldatetime_lt 5583 smalldatetime_le 5584 smalldatetime_ge 5585 smalldatetime_gt 5586 smalldatetime_cmp 5587 smalldatetime_hash 5809 b_db_last_day 5810 b_db_last_day 5811 b_db_last_day 5816 b_db_last_day 5858 weekofyear 5859 weekofyear 5860 weekofyear 5861 weekofyear 6407 int16 6408 int2 6409 int16 6410 int4 6411 int16 6412 int8 6413 int16 6414 float8 6415 int16 6416 float4 6419 int16 6420 int16_bool 6421 int16 6422 numeric 6423 int16eq 6424 int16ne 6425 int16lt 6426 int16le 6427 int16gt 6428 int16ge 6429 int16pl 6430 int16mi 6431 int16mul 6432 int16div 6433 numeric 6434 numeric_bool 6438 int21gt 6439 int21le 6440 int21ge 6441 int216eq 6442 int216ne 6443 int216lt 6444 int216gt 6445 int216le 6446 int216ge 6447 int2numericeq 6448 int2numericne 6449 int2numericlt 6450 int2numericgt 6451 int2numericle 6452 int2numericge 6453 int41eq 6454 int41ne 6455 int41lt 6456 int41gt 6457 int41le 6458 int41ge 6459 int416eq 6460 int416ne 6461 int416lt 6462 int416gt 6463 int416le 6464 int416ge 6465 int4numericeq 6466 int4numericne 6467 int4numericlt 6468 int4numericgt 6469 int4numericle 6470 int4numericge 6471 int81eq 6472 int81ne 6473 int81lt 6474 int81gt 6475 int81le 6476 int81ge 6477 int816eq 6478 int816ne 6479 int816lt 6480 int816gt 6481 int816le 6482 int816ge 6483 int8numericeq 6484 int8numericne 6485 int8numericlt 6486 int8numericgt 6487 int8numericle 6488 int8numericge 6539 int21eq 6540 int21ne 6578 b_timestampdiff 6579 b_timestampdiff 6582 b_timestampdiff 6583 b_timestampdiff 6584 b_timestampdiff 6585 b_timestampdiff 6586 b_timestampdiff 6587 b_timestampdiff 6588 b_timestampdiff 6589 b_timestampdiff 6590 b_timestampdiff 6591 b_timestampdiff 6592 b_timestampdiff 6593 b_timestampdiff 6594 b_timestampdiff 6595 b_timestampdiff 6635 int21lt 6814 int12eq 6815 numericint1eq 6853 int168ge 7747 numericint2le 7748 numericint2ge 7749 numericint4eq 7750 numericint4ne 7751 numericint4lt 7752 numericint4gt 7753 numericint4le 7754 numericint4ge 7755 numericint8eq 7756 numericint8ne 7757 numericint8lt 7758 numericint8gt 7759 numericint8le 7760 numericint8ge 7761 int161eq 7762 int161ne 7763 int161lt 8751 int161gt 8752 int161le 8753 int161ge 8754 int162eq 8755 int162ne 8756 int162lt 8757 int162gt 8758 int162le 8759 int162ge 8760 int164eq 8761 int164ne 8762 int164lt 8763 int164gt 8764 int164le 8765 int164ge 8766 int168eq 8767 int168ne 8768 int168lt 8769 int168gt 8770 int168le 9011 smalldatetime_smaller 9012 smalldatetime_larger 9558 int12ne 9559 int12lt 9560 int12gt 9561 int12le 9562 int12ge 9563 int14eq 9564 int14ne 9566 int14lt 9567 int14gt 9568 int14le 9569 int14ge 9573 int18eq 9574 int18ne 9575 int18lt 9576 int18gt 9584 int18le 9585 int18ge 9586 int116eq 9587 int116ne 9588 int116lt 9589 int116gt 9590 int116le 9591 int116ge 9592 int1numericeq 9593 int1numericne 9594 int1numericlt 9595 int1numericgt 9596 int1numericle 9597 int1numericge 9624 numericint1ne 9625 numericint1lt 9626 numericint1gt 9627 numericint1le 9628 numericint1ge 9629 numericint2eq 9630 numericint2ne 9631 numericint2lt 9632 numericint2gt 9910 substring_index 父主题: 附录
  • 美元引用的字符串常量 如果在字符串序列中包含有'(单引号),那么应当将'(单引号)加倍为''(两个单引号),否则SQL语句很可能无法执行。 如果字符串中包含很多单引号或者反斜杠,那么理解字符串的内容可能就会变得很苦涩,并且容易出错,因为单引号都要加倍。 为了让这种场合下的查询更具可读性,允许另外一种称作美元符界定的字符串常量书写办法。一个通过美元符界定声明的字符串常量由一个美元符号($)、零个或多个字符组成的记号、另一个美元符号、组成字符串常量的任意字符序列、一个美元符号、与前面相同的记号、一个美元符号组成的。 gaussdb=# SELECT $$it's an example$$; ?column? ----------------- it's an example (1 row) 父主题: 附录
  • GS_GLOBAL_CONFIG GS_GLOBAL_CONFIG记录了数据库实例初始化时,用户指定的参数值。除此之外,还存放了用户设置的弱口令,支持数据库初始用户通过ALTER和DROP语法对系统表中的参数进行写入、修改和删除。此系统表默认只有初始用户、系统管理员和安全管理员可以访问,其他用户默认无权访问。 表1 GS_GLOBAL_CONFIG字段 名称 类型 描述 name name 数据库实例初始化时系统内置的指定参数名称、弱口令名称、或用户需要使用的参数。 value text 数据库实例初始化时系统内置的指定参数值、弱口令名称、或用户需要使用的参数值。 父主题: 其他系统表
  • 参数说明 WITH [ RECURSIVE ] with_query [, ...] 用于声明一个或多个可以在主查询中通过名称引用的子查询,相当于临时表。 如果声明了RECURSIVE,那么允许SELECT子查询通过名称引用它自己。 with_query_name指定子查询生成的结果集名称,在查询中可使用该名称访问子查询的结果集。 column_name指定子查询结果集中显示的列名。 每个子查询可以是SELECT、VALUES、INSERT、UPDATE或DELETE语句。 用户可以使用MATERIALIZED或NOT MATERIALIZED对CTE进行修饰。 如果声明为MATERIALIZED,则WITH查询将被物化,生成一个子查询结果集的复制,在引用处直接查询该复制,因此WITH子查询无法和主干SELECT语句进行联合优化(如谓词下推、等价类传递等),对于此类场景可以使用NOT MATERIALIZED进行修饰,如果WITH查询语义上可以作为子查询内联执行,则可以进行上述优化。 如果用户没有显示声明物化属性则遵守此规则:如果CTE只在所属主干语句中被引用一次,且语义上支持内联执行,则会被改写为子查询内联执行,否则以CTE Scan的方式物化执行。 plan_hint 以/*+ */的形式在DELETE关键字后,用于对DELETE对应的语句块生成的计划进行hint调优,详细用法请参见章节使用Plan Hint进行调优。每条语句中只有第一个/*+ plan_hint */注释块会作为hint生效,里面可以写多条hint。 ONLY 如果指定ONLY则只有该表被删除,如果没有声明,则该表和它的所有子表将都被删除。 table_name 目标表的名称(可以有模式修饰)。 取值范围:已存在的表名。 支持使用DATABASE LINK方式对远端表进行操作,使用方式详情请见DATABASE LINK。 subquery 删除目标对象可以是子查询,在对子查询中的数据进行删除时,会将子查询当成一个临时视图,支持在子查询后面加CHECK OPTION选项。 如果子查询中只有一张表,则对该表做删除;如果子查询中有多张表或有嵌套关系,则通过判断是否有保留键表确定是否可以进行删除操作。关于保留键表和WITH CHECK OPTION请参见CREATE VIEW。 view_name 目标视图的名称。 对视图和子查询的删除,有如下约束: 只有直接引用基表用户列的列可进行DELETE操作。 子查询或视图必须至少包含一个可更新列,关于可更新列请参见CREATE VIEW。 不支持在顶层包含DISTINCT、GROUP BY、HAVING、LIMIT、OFFSET子句的视图和子查询。 不支持在顶层包含集合运算(UNION、INTERSECT、EXCEPT、MINUS)的视图和子查询。 不支持目标列表中包含聚集函数、窗口函数、返回集合函数(array_agg、json_agg、generate_series等)的视图和子查询。 不支持仅带有BEFORE/AFTER触发器,没有INSTEAD OF触发器或INSTEAD规则的视图。 视图和子查询中支持的表类型包括普通表、临时表、全局临时表、分区表、二级分区表、ustore表、astore表。 连接视图或子查询只能对视图或子查询中的保留键表做删除操作,如果只存在一张保留键表,则删除该表数据,如果存在多张保留键表,仅删除from后的第一张保留键表的数据。 如果连接视图或子查询中指定了CHECK OPTION选项,且基表重复,重复的基表在视图或子查询中保留键表属性不一致,则无法从连接视图或子查询中删除行。关于保留键表请参见CREATE VIEW。 不支持对系统视图进行DELETE操作。 不支持多表删除功能。 partition_clause 指定分区删除操作。 PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) } | SUBPARTITION { ( subpartition_name ) | FOR ( subpartition_value [, ...] ) } 关键字详见SELECT章节介绍。 示例详见CREATE TABLE SUBPARTITION。 partitions_clause 指定多个分区删除操作。 PARTITION { ( { partition_name | subpartition_name } [, ...] ) } 此语法仅在参数sql_compatibility='B'时生效。 关键字详见SELECT章节介绍。 示例详见CREATE TABLE SUBPARTITION。 alias 目标表的别名。 取值范围:字符串,符合标识符命名规范。 using_list using子句。 当参数sql_compatibility='B'或删除多张目标表时,using_list指定关联表的集合时可以同时出现目标表,并且可以定义表的别名并在目标表中使用。其他情况下则目标表不可重复出现在using_list中。 condition 一个返回Boolean值的表达式,用于判断哪些行需要被删除。不建议使用int等数值类型作为condition,因为int等数值类型可以隐式转换为bool值(非0值隐式转换为true,0转换为false),可能导致非预期的结果。 WHERE CURRENT OF cursor_name 当cursor指向表的某一行时,可以使用此语法删除cursor当前指向的行。使用限制及约束请参考UPDATE章节对此语法介绍。 ORDER BY 关键字详见SELECT章节介绍。 LIMIT 关键字详见SELECT章节介绍。 output_expr DELETE命令删除行之后计算输出结果的表达式,该表达式可以使用表的任意字段,可以使用*返回被删除行的所有字段。 output_name 一个字段的输出名称。 取值范围:字符串,符合标识符命名规范。
  • 示例 删除部分数据 --建表。 gaussdb=# CREATE TABLE test_t1(col1 INT,col2 INT); gaussdb=# INSERT INTO test_t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (4, 6); --删除表中部分记录。 gaussdb=# DELETE FROM test_t1 WHERE col1 = 4; --查询。 gaussdb=# SELECT * FROM test_t1; col1 | col2 ------+------ 1 | 1 2 | 2 3 | 3 (3 rows) 删除所有数据 --删除所有的数据。 gaussdb=# DELETE FROM test_t1; --查询。 gaussdb=# SELECT * FROM test_t1; col1 | col2 ------+------ (0 rows) --删除表。 gaussdb=# DROP TABLE test_t1; WITH [ RECURSIVE ] with_query [, ...] --学生表。 gaussdb=# CREATE TABLE student(id INT,name varchar(50)); --成绩表。 gaussdb=# CREATE TABLE grade(id INT,score CHAR); gaussdb=# INSERT INTO student VALUES (1, 'tom'), (2, 'jerry'), (3, 'david'); gaussdb=# INSERT INTO grade VALUES (1, 'A'), (2, 'B'), (3, 'b'); --在学生表中删除id=2的数据同时删除该学生在成绩表中的数据。 gaussdb=# WITH del_stu AS(DELETE FROM student WHERE id = 2 RETURNING id) DELETE FROM grade WHERE id = (SELECT id FROM del_stu); --查询数据。 gaussdb=# SELECT * FROM student; id | name ----+------- 1 | tom 3 | david (2 rows) gaussdb=# SELECT * FROM grade; id | score ----+------- 1 | A 3 | b (2 rows) --删除表。 gaussdb=# DROP TABLE grade; gaussdb=# DROP TABLE student; 删除视图或子查询 示例1:删除子查询 --创建SCHEMA。 gaussdb=# CREATE SCHEMA del_subqry; CREATE SCHEMA。 gaussdb=# SET CURRENT_SCHEMA = 'del_subqry'; SET --创建表并插入数据。 gaussdb=# CREATE TABLE t1 (x1 int, y1 int); CREATE TABLE gaussdb=# CREATE TABLE t2 (x2 int PRIMARY KEY, y2 int); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t2_pkey" for table "t2" CREATE TABLE gaussdb=# CREATE TABLE tdata (x INT PRIMARY KEY, y INT); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "tdata_pkey" for table "tdata" CREATE TABLE gaussdb=# CREATE TABLE tinfo (z INT PRIMARY KEY, comm VARCHAR2(20)); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "tinfo_pkey" for table "tinfo" CREATE TABLE gaussdb=# INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (5, 5); INSERT 0 4 gaussdb=# INSERT INTO t2 VALUES (1, 1), (2, 2), (3, 3), (5, 5); INSERT 0 4 gaussdb=# INSERT INTO tdata VALUES (1, 1), (2, 2), (3, 3); INSERT 0 3 gaussdb=# INSERT INTO tinfo VALUES (1,'one'), (2, 'two'), (3, 'three'), (5, 'wrong three'); INSERT 0 4 --通过子查询删除t1中的数据。 gaussdb=# DELETE FROM (SELECT * FROM t1) where y1 = 3; DELETE 1 --子查询带READ ONLY,无法删除数据。 gaussdb=# DELETE FROM (SELECT * FROM t1 WITH READ ONLY) WHERE y1 = 1; ERROR: cannot perform a DML operation on a read-only subquery. --对多表连接的子查询删除。 gaussdb=# SELECT * FROM t1, t2 WHERE x1 = x2; x1 | y1 | x2 | y2 ----+----+----+---- 1 | 1 | 1 | 1 2 | 2 | 2 | 2 5 | 5 | 5 | 5 (3 rows) gaussdb=# DELETE FROM (SELECT * FROM t1, t2 WHERE x1 = x2) WHERE y2 = 5; DELETE 1 gaussdb=# SELECT * FROM t1, t2 WHERE x1 = x2; x1 | y1 | x2 | y2 ----+----+----+---- 1 | 1 | 1 | 1 2 | 2 | 2 | 2 (2 rows) --子查询带CHECK OPTION,tdata表重复,其中 td1不是保留键表,td2是保留键表。 gaussdb=# DELETE FROM (SELECT td1.x x1, td1.y y1, td2.x x2, td2.y y2 FROM tdata td1, tdata td2, tinfo WHERE td2.y=tinfo.z AND td1.x=td2.y WITH CHECK OPTION) WHERE y1 = 2; ERROR: cannot delete from view without exactly one key-preserved table --不带CHECK OPTION,创建同样结构的子查询,删除成功。 gaussdb=# DELETE FROM (SELECT td1.x x1, td1.y y1, td2.x x2, td2.y y2 FROM tdata td1, tdata td2, tinfo WHERE td2.y=tinfo.z AND td1.x=td2.y) WHERE y1 = 2; DELETE 1 --删除SCHEMA。 gaussdb=# RESET CURRENT_SCHEMA; RESET gaussdb=# DROP SCHEMA del_subqry CASCADE; NOTICE: drop cascades to 4 other objects DETAIL: drop cascades to table del_subqry.t1 drop cascades to table del_subqry.t2 drop cascades to table del_subqry.tdata drop cascades to table del_subqry.tinfo DROP SCHEMA 示例2: 删除视图 --创建SCHEMA。 gaussdb=# CREATE SCHEMA del_view; CREATE SCHEMA gaussdb=# SET CURRENT_SCHEMA = 'del_view'; SET --创建表并插入数据。 gaussdb=# CREATE TABLE t1 (x1 int, y1 int); CREATE TABLE gaussdb=# CREATE TABLE t2 (x2 int PRIMARY KEY, y2 int); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t2_pkey" for table "t2" CREATE TABLE gaussdb=# CREATE TABLE tdata (x INT PRIMARY KEY, y INT); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "tdata_pkey" for table "tdata" CREATE TABLE gaussdb=# CREATE TABLE tinfo (z INT PRIMARY KEY, comm VARCHAR2(20)); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "tinfo_pkey" for table "tinfo" CREATE TABLE gaussdb=# INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (5, 5); INSERT 0 4 gaussdb=# INSERT INTO t2 VALUES (1, 1), (2, 2), (3, 3), (5, 5); INSERT 0 4 gaussdb=# INSERT INTO tdata VALUES (1, 1), (2, 2), (3, 3); INSERT 0 3 gaussdb=# INSERT INTO tinfo VALUES (1,'one'), (2, 'two'), (3, 'three'), (5, 'wrong three'); INSERT 0 4 --创建单表视图。 gaussdb=# CREATE VIEW v_del1 AS SELECT * FROM t1; CREATE VIEW gaussdb=# CREATE VIEW v_del_read AS SELECT * FROM t1 WITH READ ONLY; CREATE VIEW --通过视图删除t1中的数据。 gaussdb=# DELETE FROM v_del1 where y1 = 3; DELETE 1 --视图带READ ONLY,无法删除数据。 gaussdb=# DELETE FROM v_del_read WHERE y1 = 1; ERROR: cannot perform a DML operation on a read-only subquery. --创建多表连接视图。 gaussdb=# CREATE VIEW vvt1t2 AS SELECT * FROM t1, t2 WHERE x1 = x2; CREATE VIEW gaussdb=# CREATE VIEW vv_dup AS SELECT td1.x x1, td1.y y1, td2.x x2, td2.y y2 FROM tdata td1, tdata td2, tinfo WHERE td2.y=tinfo.z AND td1.x=td2.y; CREATE VIEW gaussdb=# CREATE VIEW vv_dup_wco AS SELECT td1.x x1, td1.y y1, td2.x x2, td2.y y2 FROM tdata td1, tdata td2, tinfo WHERE td2.y=tinfo.z AND td1.x=td2.y WITH CHECK OPTION; CREATE VIEW --对多表连接的视图做删除操作。 gaussdb=# SELECT * FROM vvt1t2; x1 | y1 | x2 | y2 ----+----+----+---- 1 | 1 | 1 | 1 2 | 2 | 2 | 2 5 | 5 | 5 | 5 (3 rows) gaussdb=# DELETE FROM vvt1t2 WHERE y2 = 5; DELETE 1 gaussdb=# SELECT * FROM vvt1t2; x1 | y1 | x2 | y2 ----+----+----+---- 1 | 1 | 1 | 1 2 | 2 | 2 | 2 (2 rows) --视图带CHECK OPTION,tdata表重复,其中 td1不是保留键表,td2是保留键表。 gaussdb=# DELETE FROM vv_dup_wco WHERE y1 = 2; ERROR: cannot delete from view without exactly one key-preserved table --不带CHECK OPTION,创建同样结构的视图,删除成功。 gaussdb=# DELETE FROM vv_dup WHERE y1 = 2; DELTE 1 --删除SCHEMA。 gaussdb=# RESET CURRENT_SCHEMA; RESET gaussdb=# DROP SCHEMA del_view CASCADE; NOTICE: drop cascades to 9 other objects DETAIL: drop cascades to table del_view.t1 drop cascades to table del_view.t2 drop cascades to table del_view.tdata drop cascades to table del_view.tinfo drop cascades to view del_view.v_del1 drop cascades to view del_view.v_del_read drop cascades to view del_view.vvt1t2 drop cascades to view del_view.vv_dup drop cascades to view del_view.vv_dup_wco DROP SCHEMA
  • 注意事项 表的所有者、被授予表DELETE权限的用户或被授予DELETE ANY TABLE权限的用户有权删除表中数据,当三权分立开关关闭时,系统管理员默认拥有此权限。同时也必须有USING子句引用的表以及condition上读取表的SELECT权限。 对于多表删除语法,暂时不支持对视图和含有RULE的表进行多表删除。 对于子查询是STREAM计划的DELETE语句,不支持删除的行数据同时进行UPDATE更新操作。
  • 语法格式 单表删除: [ WITH [ RECURSIVE ] with_query [, ...] ] DELETE [/*+ plan_hint */] [FROM] [ ONLY ] {table_name [ * ] [ [ [partition_clause] [ [ AS ] alias ] ] | [ [ [ AS ] alias ] [partitions_clause] ] ] | subquery [ [ AS ] alias ] | view_name [ [ AS ] alias ]} [ USING using_list ] [ WHERE condition | WHERE CURRENT OF cursor_name ] [ ORDER BY { expression [ ASC | DESC | USING operator ] } ] [ LIMIT { count } ] [ RETURNING { * | { output_expr [ [ AS ] output_name ] } [, ...] } ];
  • 示例 --创建一个表tb_for_masking。 gaussdb=# CREATE TABLE tb_for_masking(idx int, col1 text, col2 text, col3 text, col4 text, col5 text, col6 text, col7 text,col8 text); --给表tb_for_masking插入数据。 gaussdb=# INSERT INTO tb_for_masking VALUES(1, '9876543210', 'usr321usr', 'abc@huawei.com', 'abc@huawei.com', '1234-4567-7890-0123', 'abcdef 123456 ui 323 jsfd321 j3k2l3', '4880-9898-4545-2525', 'this is a llt case'); 、 --创建资源标签标记敏感列col1。 gaussdb=# CREATE RESOURCE LABEL mask_lb1 ADD COLUMN(tb_for_masking.col1); --创建资源标签标记敏感列col2。 gaussdb=# CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2); --创建资源标签标记敏感列col3。 gaussdb=# CREATE RESOURCE LABEL mask_lb3 ADD COLUMN(tb_for_masking.col3); --创建一个名为maskpol1的脱敏策略。 gaussdb=# CREATE MASKING POLICY maskpol1 maskall ON LABEL(mask_lb1); --创建一个名为maskpol2的脱敏策略。 gaussdb=# CREATE MASKING POLICY maskpol2 randommasking ON LABEL(mask_lb2); --创建一个名为maskpol3的脱敏策略。 gaussdb=# CREATE MASKING POLICY maskpol3 basicemailmasking ON LABEL(mask_lb3); --删除一个脱敏策略。 gaussdb=# DROP MASKING POLICY IF EXISTS maskpol1; --删除一组脱敏策略。 gaussdb=# DROP MASKING POLICY IF EXISTS maskpol2, maskpol3; --删除资源标签 gaussdb=# DROP RESOURCE LABEL mask_lb1; gaussdb=# DROP RESOURCE LABEL mask_lb2; gaussdb=# DROP RESOURCE LABEL mask_lb3; --删除表 gaussdb=# DROP TABLE tb_for_masking;
  • 示例 --创建并切换至测试数据库。 gaussdb=# CREATE DATABASE test_event WITH DBCOMPATIBILITY = 'b'; gaussdb=# \c test_event --创建表。 test_event=# CREATE TABLE t_ev(num int); --创建一个执行一次的定时任务,五秒后执行一次,执行完后定时任务自动删除。 test_event=# CREATE EVENT IF NOT EXISTS event_e1 ON SCHEDULE AT sysdate + interval 5 second DO INSERT INTO t_ev VALUES(0); --五秒后查询表。 test_event=# SELECT * FROM t_ev; num ----- 0 (1 row) --创建一个每隔一分钟执行一次的定时任务。 test_event=# CREATE EVENT IF NOT EXISTS event_e2 ON SCHEDULE EVERY 1 minute DO INSERT INTO t_ev VALUES(1); --每隔一分钟查询表,会看到新增一条数据。 test_event=# SELECT * FROM t_ev; num ----- 0 1 1 (3 rows) --删除定时任务。 test_event=# DROP EVENT event_e2; --删除表。 test_event=# DROP TABLE t_ev; --切换回初始数据库,并删除测试数据库。请用真实的数据库名替换postgres。 test_event=#\c postgres gaussdb=# DROP DATABASE test_event;
  • 语法格式 LOAD DATA [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_name [PARTITION (partition_name [, partition_name] ...)] [CHARACTER SET charset_name] [{FIELDS | COLUMNS} [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] [IGNORE number {LINES | ROWS}] [(col_name_or_user_var [, col_name_or_user_var] ...)] [SET col_name={expr | DEFAULT} [, col_name={expr | DEFAULT}] ...]
  • 参数说明 LOCAL 指定导入文件的位置。 不指定LOCAL时,若'file_name'为相对路径,则默认导入路径为数据目录; 若指定LOCAL参数则需要指定'file_name'为绝对路径,当指定为相对路径时默认导入路径为数据库二进制所在路径,即$GAUSSHOME/bin/。 当导入数据与表中数据冲突或文件中字段数小于指定表中字段数时,指定LOCAL与指定IGNORE作用一致。 REPLACE | IGNORE 当导入数据与表中原有数据冲突时,若指定REPLACE,则替换冲突行数据;若指定IGNORE则跳过冲突行数据,继续导入。若数据冲突但不指定REPLACE,IGNORE或LOCAL中任意一个则终止导入并报错。 若文件字段数小于指定表列数,指定LOCAL或IGNORE参数会为剩余列赋默认值。不指定IGNORE或LOCAL参数会报错。 PARTITION 当导入表为分区表时,此参数用来指定分区。若数据与指定分区范围不一致则报错。 CHARACTER SET 指定数据文件的编码格式名称,缺省为当前客户端编码格式。 FIELDS | COLUMNS TERMINATED BY 指定两列之间分隔符,缺省为'\t'。 指定换行符不能与分隔符相同。 [OPTIONALLY] ENCLOSED BY 指定引号字符,缺省为''。 OPTIONALLY参数为可选参数,无实际作用。 引号符仅支持单字符,不支持字符串。 ESCAPED BY 指定转义符,缺省为'\'。 转义字符仅支持单字符,不支持字符串。 LINES STARTING BY 指定导入数据文件起始字段样式。 TERMINATED BY 指定导入数据文件换行符样式。 IGNORE 指定数据导入时,跳过数据文件的前 number行。 col_name_or_user_var 可选的待复制字段列表。 取值范围:如果没有声明字段列表,将使用所有字段。 指定列参数不支持重复指定列。 LOAD DATA语法指定列时,col_name_or_user_var支持指定为表中存在列或用户变量。若指定为用户变量,需设置GUC参数b_format_behavior_compat_options值包含enable_set_variables(set b_format_behavior_compat_options = 'enable_set_variables')。 SET 指定列值,可以指定为表达式或DEFAULT。 表达式中不支持列名。 若表达式结果类型与被赋值列对应类型之间不存在隐式转换函数则报错。
  • 示例 --创建表。 gaussdb=# CREATE TABLE load_data_tbl1(load_col1 INT UNIQUE, load_col2 INT, load_col3 CHAR(10)); --向表中插入一条数据。 gaussdb=# INSERT INTO load_data_tbl1 VALUES(0,0,'load0'); --从文件/home/omm/load1.csv中复制数据到load_data_tbl表,指定列名,设置.load_col3列值统一为"load"。 gaussdb=# LOAD DATA INFILE '/home/omm/load1.csv' INTO TABLE load_data_tbl1(load_col1, load_col2) SET load_col3 = 'load'; --后面导入数据load_col3列值均为'load' gaussdb=# SELECT * FROM load_data_tbl1; load_col1 | load_col2 | load_col3 -----------+-----------+------------ 0 | 0 | load0 3 | 3 | load 1 | 1 | load 2 | 2 | load (4 rows) --从文件/home/omm/load2.csv中复制数据到load_data_tbl表.,指定IGNORE忽略冲突 gaussdb=# LOAD DATA INFILE '/home/omm/load2.csv' IGNORE INTO TABLE load_data_tbl1; --表load_data_tbl1中数据不变,冲突数据跳过。 gaussdb=# SELECT * FROM load_data_tbl1; load_col1 | load_col2 | load_col3 -----------+-----------+------------ 0 | 0 | load0 3 | 3 | load 1 | 1 | load 2 | 2 | load (4 rows) --创建分区表 gaussdb=# CREATE TABLE load_data_tbl2 ( load_col_col1 INT, load_col_col2 INT ) PARTITION BY RANGE (load_col_col2) ( PARTITION load_p1 VALUES LESS THAN(3), PARTITION load_p2 VALUES LESS THAN(9), PARTITION load_p3 VALUES LESS THAN(MAXVALUE) ); --从文件/home/omm/load3.csv中复制数据到load_data_tbl2表.,指定PARTITION。 gaussdb=# LOAD DATA INFILE '/home/omm/load3.csv' INTO TABLE load_data_tbl2 PARTITION (load_p2); --数据导入到load_data_tbl2表中指定分区 gaussdb=# SELECT * FROM load_data_tbl2; load_col_col1 | load_col_col2 ---------------+--------------- 4 | 4 5 | 5 (2 rows) --创建表 gaussdb=# CREATE TABLE load_data_tbl3(load_col_col1 CHAR(30)); --从文件/home/omm/load4.csv中复制数据到load_data_tbl3表.,指定FIELDS ENCLOSED BY; gaussdb=# LOAD DATA INFILE '/home/omm/load4.csv' INTO TABLE load_data_tbl3 FIELDS ENCLOSED BY '"'; --数据"load test quote"双引号被去掉,'load test single_quote'单引号保留 gaussdb=# select * from load_data_tbl3; load_col_col1 -------------------------------- load test quote 'load test single_quote' (2 rows) --删除表。 gaussdb=# drop table load_data_tbl1; gaussdb=# DROP TABLE load_data_tbl2; gaussdb=# DROP TABLE load_data_tbl3;
  • GS_STAT_XACT_ALL_PARTITIONS GS_STAT_XACT_ALL_PARTITIONS视图显示命名空间中所有分区表分区的事务状态信息,此视图信息通过gs_stat_get_xact_all_partitions_stats()函数查询。 表1 GS_STAT_XACT_ALL_PARTITIONS字段 名称 类型 描述 partition_oid oid 分区的OID。 schemaname name 该分区的模式名。 relname name 该分区所在表的表名。 partition_name name 该分区所在一级分区名。 sub_partition_name name 该分区所在二级分区名。 seq_scan bigint 该分区发起的顺序扫描数。 seq_tup_read bigint 顺序扫描抓取的活跃行数。 idx_scan bigint 该分区发起的索引扫描数。 idx_tup_fetch bigint 索引扫描抓取的活跃行数。 n_tup_ins bigint 插入行数。 n_tup_upd bigint 更新行数。 n_tup_del bigint 删除行数。 n_tup_hot_upd bigint 热更新行数(比如没有更新所需的单独索引)。 父主题: 分区表
  • DV_SESSIONS DV_SESSIONS视图显示当前所有活动的后台线程的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 DV_SESSIONS字段 名称 类型 描述 sid bigint 当前活动的后台线程的OID。 serial# integer 当前活动的后台线程的序号,在GaussDB中为0。 user# oid 登录此后台线程的用户的OID。oid为0表示此后台线程为全局辅助线程(auxiliary)。 username name 登录此后台线程的用户名。username为空表示此后台线程为全局辅助线程(auxiliary)。 可以通过和pg_stat_get_activity()关联查询,识别出application_name。 例如: SELECT s.*,a.application_name FROM DV_SESSIONS AS s LEFT JOIN pg_stat_get_activity(NULL) AS a ON s.sid=a.sessionid; 父主题: 其他系统视图
共100000条