华为云用户手册

  • 示例 --创建角色。 gaussdb=# CREATE ROLE bob PASSWORD '********'; --创建外部服务器。 gaussdb=# CREATE SERVER my_server FOREIGN DATA WRAPPER log_fdw; --创建USER MAPPING。 gaussdb=# CREATE USER MAPPING FOR bob SERVER my_server OPTIONS (user 'bob', password '********'); --修改USER MAPPING。 gaussdb=# ALTER USER MAPPING FOR bob SERVER my_server OPTIONS (SET password '********'); --删除USER MAPPING。 gaussdb=# DROP USER MAPPING FOR bob SERVER my_server; --删除外部服务器。 gaussdb=# DROP SERVER my_server; --删除角色。 gaussdb=# DROP ROLE bob;
  • 语法格式 ALTER USER MAPPING FOR { user_name | USER | CURRENT_USER | PUBLIC } SERVER server_name OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ); 在OPTIONS选项里,ADD、SET和DROP指定要执行的操作,未指定时默认为ADD操作。option和value为对应操作的参数及参数值。
  • 参数说明 user_name 该映射的用户名。 CURRENT_USER和USER匹配当前用户的名称。PUBLIC被用来匹配系统中所有当前以及未来的用户名。 server_name 该用户映射的服务器名。 OPTIONS 为该用户映射更改选项。新选项会覆盖任何之前指定的选项。ADD、 SET和DROP指定要被执行的动作。如果没有显式地指定操作,将假定为ADD。选项名称必须为唯一,该服务器的外部数据包装器也会验证选项。 用户的密码会加密后保存到系统表PG_USER_MAPPING中,加密时需要使用usermapping.key.cipher和usermapping.key.rand作为加密密码文件和加密因子。首次使用前需要通过如下命令创建这两个文件,并将这两个文件放入各节点的$GAUSSHOME/bin目录,且确保具有读权限。gs_ssh工具可以协助您快速将文件放入各节点对应目录下。 gs_ssh -c "gs_guc generate -o usermapping -S default -D $GAUSSHOME/bin" 其中-S参数指定default时会随机生成密码,用户也可为-S参数指定密码,此密码用于保证生成密码文件的安全性和唯一性,用户无需保存或记忆。其他参数详见工具参考中gs_guc工具说明。
  • 注意事项 当在OPTIONS中出现password选项时,需要保证 GaussDB 每个节点的$GAUSSHOME/bin目录下存在usermapping.key.cipher和usermapping.key.rand文件,如果不存在这两个文件,请使用gs_guc工具生成并使用gs_ssh工具发布到每个节点的$GAUSSHOME/bin目录下。具体操作请参考OPTIONS中的说明。 OPTIONS中的敏感字段(如password)在使用多层引号时,语义和不带引号的场景是不同的,因此不会被识别为敏感字段进行脱敏。
  • DBE_PLDEVELOPER.gs_source 用于记录PL/SQL对象(存储过程、函数、包、包体)相关信息,如表1所示。 gs_source表中只记录用户定义的原始对象语句,即使用户使用了ALTER改变了创建的SCHEMA或者名字,gs_source表中的信息也不会发生变化,如果用户更改了对象的SCHEMA或者名字,用户在删除对象后,对象会从gs_source表中被删除。 gs_source表中的owner表示创建的用户,不是用户创建存储过程或package时指定的用户。 设置GUC参数behavior_compat_options="skip_insert_gs_source"后,PL/SQL对象(存储过程、函数、包、包体)相关信息将不在gs_source中记录。 gs_source权限与pg_catalog下的系统表保持一致(系统管理员与普通用户不允许DROP、ALTER、DELETE、UPDATE、INSERT,允许SELECT),利用GUC参数allow_system_table_mods控制前向兼容(允许DROP、ALTER、DELETE、UPDATE、INSERT以及SELECT),此GUC参数默认为off,修改此GUC参数生效需要重启数据库。 数据库默认情况下没有对gs_source表中设置行级访问控制,如果用户需要使用数据库隔离性特性,请使用如下语句进行添加行级访问控制: ALTER TABLE dbe_pldeveloper.gs_source ENABLE ROW LEVEL SECURITY; CREATE ROW LEVEL SECURITY POLICY all_data_rls ON dbe_pldeveloper.gs_source USING(owner = (SELECT oid FROM gs_roles WHERE rolname=current_user)); 表1 DBE_PLDEVELOPER.gs_source字段 名称 类型 描述 id oid 对象id。 owner bigint 对象创建用户id。 nspid oid 对象的模式id。 name name 对象名。 type text 对象类型(procedure/function/package/package body)。 status boolean 是否创建成功。 src text 对象创建的原始语句。 父主题: DBE_PLDEVELOPER
  • 匿名块支持自治事务 自治事务可以在匿名块中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建匿名块语法相同,请参见匿名块,示例如下。 gaussdb=# CREATE TABLE t1(a INT ,B TEXT); CREATE TABLE gaussdb=# START TRANSACTION; START TRANSACTION gaussdb=# DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN DBE_OUTPUT.PRINT_LINE('JUST USE CALL.'); INSERT INTO t1 VALUES(1,'YOU ARE SO CUTE,WILL COMMIT!'); END; / JUST USE CALL. ANONYMOUS BLOCK EXECUTE gaussdb=# INSERT INTO t1 VALUES(1,'YOU WILL ROLLBACK!'); INSERT 0 1 gaussdb=# ROLLBACK; ROLLBACK gaussdb=# SELECT * FROM t1; a | b ---+------------------------------ 1 | YOU ARE SO CUTE,WILL COMMIT! (1 row) gaussdb=# DROP TABLE t1; DROP TABLE 上述例子,最后在回滚的事务块前执行包含自治事务的匿名块,直接说明了自治事务的特性,即主事务的回滚不会影响自治事务已经提交的内容。 父主题: 自治事务
  • 示例 前置条件 请参见EXPDP PLUGGABLE DATABASE章节的示例完成PDB文件的导出。 导入PDB --使用系统管理员连接postgres数据库,创建用户tom,登录密码为********。 gaussdb=# CREATE USER TOM PASSWORD '**********'; NOTICE: The encrypted password contains MD5 ciphertext, which is not secure. CREATE ROLE --使用系统管理员连接postgres数据库,执行PDB文件的导入。 gaussdb=# IMPDP PLUGGABLE DATABASE my_pdb1 CREATE SOURCE = '/data1/expdp/my_pdb' OWNER=tom; IMPDP PLUGGABLE DATABASE CREATE
  • PG_CAST PG_CAST系统表存储数据类型之间的转换关系。 表1 PG_CAST字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 castsource oid 源数据类型的OID。 casttarget oid 目标数据类型的OID。 castfunc oid 转换函数的OID。如果为零表明不需要转换函数。 castcontext "char" 源数据类型和目标数据类型间的转换方式: 'e':表示只能进行显式转换(使用CAST或::语法)。 'i':表示能进行隐式转换。 'a':表示类型间同时支持隐式和显式转换。 castmethod "char" 转换方法: 'f':使用castfunc字段中指定的函数进行转换。 'b':类型间是二进制强制转化,不使用castfunc。 父主题: 其他系统表
  • FencedUDFMemoryLimit 参数说明:控制每个fenced udf worker进程使用的虚拟内存。 参数类型:整型 参数单位:kB 取值范围:0 ~ 2147483647 默认值:0,表示不做内存控制。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。例如,设置为200,不带单位,表示200kB;设置为3MB,带单位,表示3MB。取值如果要带单位,必须为kB、MB、GB。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • UDFWorkerMemHardLimit 参数说明:控制FencedUDFMemoryLimit的最大值。 参数类型:整型 参数单位:kB 取值范围:0 ~ 2147483647 默认值:1048576(即1GB) 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。例如,设置为200,不带单位,表示200kB;设置为3MB,带单位,表示3MB。取值如果要带单位,必须为kB、MB、GB。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • udf_memory_limit 参数说明:控制每个数据库节点执行UDF时可用的最大物理内存量。该参数当前版本不生效,请使用FencedUDFMemoryLimit和UDFWorkerMemHardLimit参数控制fenced udf worker虚存。 参数类型:整型 参数单位:kB 取值范围:200*1024 ~ 2147483647 默认值:204800(即200MB) 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。例如,设置为204800,不带单位,表示204800kB;设置为300MB,带单位,表示300MB。取值如果要带单位,必须为kB、MB、GB。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • NOT IN expression NOT IN (value [, ...]) 右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果在列表中的内容没有符合左侧表达式结果的内容,则NOT IN的结果为true。如果有符合的内容,则NOT IN的结果为false。 示例如下: 1 2 3 4 5 gaussdb=# SELECT 8000+500 NOT IN (10000, 9000) AS RESULT; result ---------- t (1 row) 如果查询语句返回结果为空,或者表达式列表不符合表达式的条件且右侧表达式列表返回结果至少一处为空,则NOT IN的返回结果为null,而不是false。这样的处理方式和SQL返回空值的布尔组合规则是一致的。 在所有情况下X NOT IN Y等价于NOT(X IN Y)。 不支持对XML类型数据操作。
  • IN expression IN (value [, ...]) 右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果列表中的内容符合左侧表达式的结果,则IN的结果为true。如果没有相符的结果,则IN的结果为false。 示例如下: 1 2 3 4 5 gaussdb=# SELECT 8000+500 IN (10000, 9000) AS RESULT; result ---------- f (1 row) 如果表达式结果为null,或者表达式列表不符合表达式的条件且右侧表达式列表返回结果至少一处为空,则IN的返回结果为null,而不是false。这样的处理方式和SQL返回空值的布尔组合规则是一致的。 不支持对XML类型数据操作。
  • GLOBAL_STATIO_ALL_SEQUEN CES GLOBAL_STATIO_ALL_SEQUENCES包含各节点的数据库中每个序列的每一行,显示特定序列关于I/O的统计,如表1所示。 表1 GLOBAL_STATIO_ALL_SEQUENCES字段 名称 类型 描述 node_name name 节点名称。 relid oid 序列OID。 schemaname name 序列中模式名。 relname name 序列名。 blks_read bigint 从序列中读取的磁盘块数。 blks_hit bigint 序列中缓存命中数。 父主题: Cache/IO
  • V_MYSTAT V_MYSTAT视图显示数据库所有会话统计信息。该视图只有系统管理员可以访问,普通用户需要授权才能访问,该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 V_MYSTAT字段 名称 类型 描述 sid numeric 当前会话的ID。 statistic# numeric 暂不支持,值为NULL。 value numeric 暂不支持,值为NULL。 con_id numeric 暂不支持,值为NULL。 父主题: 其他系统视图
  • GS_DATABASE_DETAILS GS_DATABASE_DETAILS视图显示当前PG_DATABASE系统表中的所有信息,并展示其状态为开启或关闭。 表1 PG_DATABASE字段 名称 类型 描述 datname name 数据库名称。 datdba oid 数据库所有人,通常为其创建者。 encoding integer 数据库的字符编码方式。 datcollate name 数据库使用的排序顺序。 datctype name 数据库使用的字符分类。 datistemplate boolean 是否允许作为模板数据库。 true:允许作为模板数据库。 false:不允许作为模板数据库。 datallowconn boolean 控制是否允许用户连接数据库,用于保护template0/templatea数据库不被更改。 true:表示用户可以连接数据库。 false:表示用户不可以连接数据库。 datconnlimit integer 该数据库上允许的最大并发连接数,-1表示无限制。 datlastsysoid oid 数据库里最后一个系统OID 。 datfrozenxid xid32 用于跟踪该数据库是否需要为了防止事务ID重叠而进行清理。当前版本该字段已经废弃使用,为保持前向兼容,保留此字段,新增datfrozenxid64用于记录此信息。 dattablespace oid 数据库的缺省表空间。 datcompatibility name 数据库兼容模式,当前支持五种兼容模式:A、B、C、M、PG,分别表示兼容O、MY、TD、M-Compatibility和POSTGRES。 datacl aclitem[] 访问权限。 datfrozenxid64 xid 用于跟踪该数据库是否需要为了防止事务ID重叠而进行清理。 datminmxid xid 该数据库中所有在这个之前的多事务ID已经被一个事务ID替换。用于跟踪该数据库是否需要为了防止事务ID重叠或者允许收缩pg_clog而进行清理。它是此数据库中所有表的13.2.15.27 PG_CLASS中relminmxid的最小值。 dattimezone name 数据库时区信息,默认为PRC时区。 dattype "char" 数据库类型。 D:普通数据库。 P:PDB。 is_opened boolean PDB的开启状态。 true:代表开启PDB。 false:代表关闭PDB。 说明: 如果是CDB此字段为true。 父主题: 多租数据库
  • 使用LIKE进行模糊查找时如何忽略大小写? 答:可以将LIKE改为ILIKE,也可以使用upper或者lower函数。 示例如下: --前置操作创建表和插入数据。 gaussdb=# CREATE TABLE tbl_test1(c1 varchar); gaussdb=# INSERT INTO tbl_test1 VALUES ('EEE'),('ABC'),('abc'),('aabccd'); --使用like进行模糊查询,结果过滤了所有大写的字符串,不符合预期。 gaussdb=# SELECT * FROM tbl_test1 WHERE c1 LIKE 'ab%'; c1 ----- abc (1 row) --使用ILIKE进行模糊查询。 gaussdb=# SELECT * FROM tbl_test1 WHERE c1 ILIKE 'ab%'; c1 ----- ABC abc (2 rows) --使用upper()函数。 gaussdb=# SELECT * FROM tbl_test1 WHERE upper(c1) LIKE 'AB%'; c1 ----- ABC abc (2 rows) --删除。 gaussdb=# DROP TABLE tbl_test1; 父主题: FAQ
  • 案例环境准备 为了便于规则的使用场景演示,需准备建表语句如下: SET client_min_messages = warning; SET CLIENT_ENCODING = 'UTF8'; --清理环境。 DROP SCHEMA IF EXISTS costbased_rule_test cascade; CREATE SCHEMA costbased_rule_test; SET current_schema = costbased_rule_test; SET enable_codegen = off; DROP TABLE IF EXISTS costbased_rule_test.ct1; DROP TABLE IF EXISTS costbased_rule_test.ct2; DROP TABLE IF EXISTS costbased_rule_test.ct3; DROP TABLE IF EXISTS costbased_rule_test.ct4; --创建测试表。 CREATE TABLE ct1 (a INT, b INT, c INT, d INT); CREATE TABLE ct2 (a INT, b INT, c INT, d INT); CREATE TABLE ct3 (a INT, b INT, c INT, d INT); CREATE TABLE ct4 (a INT, b INT, c INT, d INT); CREATE INDEX idx_ct1_b ON ct1(b); CREATE INDEX idx_ct2_c ON ct2(c); CREATE INDEX idx_ct3_c ON ct3(c); --插入数据。 INSERT INTO ct1 (a, b, c) VALUES (generate_series(1, 100), generate_series(200, 300), left(random()::int, 100)); INSERT INTO ct2 VALUES(1,2,3,4),(3,4,5,6); INSERT INTO ct3 (a, b, c, d) VALUES (generate_series(1, 10), generate_series(20, 30), left(random()::int, 10), left(random()::int, 10)); --更新统计信息。 ANALYZE ct1; ANALYZE ct2; ANALYZE ct3;
  • pg_terminate_session(pid int64, sessionid int64) 描述:线程池模式下,终止一个后台session。多租场景下,PDB中调用该函数仅能终止本PDB的会话,Non-PDB调用该函数可对全局进行操作。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户、会话所连接的数据库的属主、会话的属主、或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。若执行该函数后未成功终止目标会话,则会强制关闭该会话和客户端的socket连接。 当入参pid和sessionid相同,且均为线程id时,该函数可终止非线程池的线程、活跃状态的线程池线程。 当入参pid和sessionid不同时,该函数可终止活跃状态的会话,或关闭非活跃状态会话和客户端的socket连接。
  • pg_terminate_backend(pid int) 描述:终止一个后台线程。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。若执行该函数后未成功终止目标会话,则会强制关闭该会话和客户端的socket连接。 该函数可终止非线程池的线程、活跃状态的线程池线程,但无法终止非活跃状态的线程池线程。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT pid from pg_stat_activity; pid ----------------- 140657876268816 (1 rows) gaussdb=# SELECT pg_terminate_backend(140657876268816); pg_terminate_backend ---------------------- t (1 row)
  • pg_terminate_active_session_socket(pid int64, sessionid int64) 描述:关闭一个活跃session和客户端的socket连接。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。
  • pg_cancel_backend(pid int) 描述:取消一个后端线程正在执行的语句。 返回值类型:Boolean 备注:pg_cancel_backend向由pid标识的后端线程发送一个查询取消(SIGINT)信号。一个活动的后端线程的PID可以从PG_STAT_ACTIVITY视图的pid字段找到,或者在服务器上用ps列出数据库线程。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。
  • pg_cancel_session(pid bigint, sessionid bigint) 描述:线程池模式下,取消一个活跃状态会话正在执行的语句。多租场景下,PDB中调用该函数仅能取消本PDB的会话,Non-PDB调用该函数可对全局进行操作。 返回值类型:Boolean 备注:pg_cancel_session的入参可以通过pg_stat_activity中的pid字段和sessionid的字段查询,可以取消线程池模式下,活跃状态会话正在执行的语句。当入参pid和sessionid相同,且均为线程id时,功能和pg_cancel_backend相同。
  • 优化建议 UNLOGGED UNLOGGED表和表上的索引因为数据写入时不通过WAL日志机制,写入速度远高于普通表。因此,可以用于缓冲存储复杂查询的中间结果集,增强复杂查询的性能。 UNLOGGED表无主备机制,在系统故障或异常断点等情况下,会有数据丢失风险,因此,不可用来存储基础数据。 TEMPORARY | TEMP 临时表只在当前会话可见,会话结束后会自动删除。 LIKE 新表自动从这个表中继承所有字段名及其数据类型和非空约束,新表与源表之间在创建动作完毕之后是完全无关的。 LIKE INCLUDING DEFAULTS 源表上的字段缺省表达式只有在指定INCLUDING DEFAULTS时,才会复制到新表中。缺省是不包含缺省表达式的,即新表中的所有字段的缺省值都是NULL。 LIKE INCLUDING CONSTRAINTS 源表上的CHECK约束仅在指定INCLUDING CONSTRAINTS时,会复制到新表中,而其他类型的约束永远不会复制到新表中。非空约束总是复制到新表中。此规则同时适用于表约束和列约束。 LIKE INCLUDING INDEXES 如果指定了INCLUDING INDEXES,则源表上的索引也将在新表上创建,默认不建立索引。 LIKE INCLUDING STORAGE 如果指定了INCLUDING STORAGE,则复制列的STORAGE设置会复制到新表中,默认情况下不包含STORAGE设置。 LIKE INCLUDING COMMENTS 如果指定了INCLUDING COMMENTS,则源表列、约束和索引的注释会复制到新表中。默认情况下,不复制源表的注释。 LIKE INCLUDING PARTITION 如果指定了INCLUDING PARTITION,则源表的分区定义会复制到新表中,同时新表将不能再使用PARTITION BY子句。默认情况下,不复制源表的分区定义。 列表/哈希分区表暂不支持LIKE INCLUDING PARTITION。 LIKE INCLUDING RELOPTIONS 如果指定了INCLUDING RELOPTIONS,则源表的存储参数(即源表的WITH子句)会复制到新表中。默认情况下,不复制源表的存储参数。 LIKE INCLUDING IDENTITY 如果指定了INCLUDING IDENTITY,则创建一个和源表SEQUENCE参数相同的SEQUENCE来实现IDENTITY,并且IDENTITY类型与源表相同。默认情况下,不复制源表的IDENTITY。 LIKE INCLUDING ALL INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION、INCLUDING RELOPTIONS、INCLUDING IDENTITY和INCLUDING ILM的内容。 ORIENTATION ROW 创建行存表,行存储适合于OLTP业务,此类型的表上交互事务比较多,一次交互会涉及表中的多个列,用行存查询效率较高。
  • 注意事项 如果在建表过程中数据库系统发生故障,系统恢复后可能无法自动清除之前已创建的、大小为0的磁盘文件。此种情况出现概率小,不影响数据库系统的正常运行。 使用JDBC时,支持通过PreparedStatement对DEFAULT值进行参数化设置。 被授予CREATE ANY TABLE权限的用户,可以在public模式和用户模式下创建表。如果想要创建包含serial类型列的表,还需要授予CREATE ANY SEQUENCE创建序列的权限。 XML类型不能作为主键、外键。 在为数据对象增加或者变更ILM策略的时候,如果追加了行级表达式,需要注意行表达式目前只支持白名单中列出的函数。具体白名单函数列表参考行表达式函数白名单。 在ILM策略的ON(EXPR)行级表达式支持的函数中,有部分函数的输出可能会受兼容性参数影响。例如,upper函数在B兼容模式下设置b_format_version='5.7'和b_format_dev_version='s2'后,将无法转大写。 表约束个数不能超过32767个。
  • 建表示例 创建普通表 gaussdb=# CREATE TABLE tbl_test1( id int, name varchar(50), province varchar (60), --省 country varchar (60) DEFAULT 'China' --国籍 ); gaussdb=# DROP TABLE tbl_test1; WITH子句为表或者索引设置存储参数 --建表指定填充因子。 gaussdb=# CREATE TABLE tbl_test2( id int, name varchar(50), province varchar (60), --省 country varchar (60) DEFAULT 'China' --国籍 ) WITH (FILLFACTOR = 70); --建表指定存储引擎。 gaussdb=# CREATE TABLE tbl_test3( id int, name varchar(50), province varchar (60), --省 country varchar (60) DEFAULT 'China' --国籍 ) WITH (STORAGE_TYPE = ASTORE); --删除。 gaussdb=# DROP TABLE tbl_test2; gaussdb=# DROP TABLE tbl_test3; 临时表 --创建临时表。 gaussdb=# CREATE GLOBAL TEMP TABLE test_t1( id CHAR(7), name VARCHAR(20), province VARCHAR(60), country VARCHAR(30) DEFAULT 'China' ); --在当前会话中插入数据。 gaussdb=# INSERT INTO test_t1 VALUES ('0000009','Jack','Guangzhou','China'); --临时表里面的数据只在当前会话中可见,所以在另一个会话中查看该表中没有数据。 gaussdb=# SELECT * FROM test_t1; id | name | province | country ----+------+----------+--------- (0 rows) --创建临时表,并指定提交事务时删除该临时表数据。 gaussdb=# CREATE TEMPORARY TABLE test_t2( id CHAR(7), name VARCHAR(20), province VARCHAR(60), --省 country VARCHAR(30) DEFAULT 'China' --国籍 ) ON COMMIT DELETE ROWS; --删除表。 gaussdb=# DROP TABLE test_t1; gaussdb=# DROP TABLE test_t2; 建表时指定字符集字符序 --创建前置数据库。 gaussdb=# CREATE DATABASE testdb1 DBCOMPATIBILITY = 'B' ENCODING = 'UTF8'; gaussdb=# \c testdb1 --创建t1表,设置t1的默认字符集为utf8mb4,默认字符序为utf8mb4_bin,设置c1字段为表的默认字符集字符序,设置c2字段的字符集为utf8mb4,字符序为utf8mb4_unicode_ci。 testdb1=# CREATE TABLE t1(c1 text, c2 text charset utf8mb4 collate utf8mb4_unicode_ci) charset utf8mb4 collate utf8mb4_bin; --删除。 testdb1=# DROP TABLE t1; testdb1=# \c postgres gaussdb=# DROP DATABASE testdb1; IF NOT EXISTS关键字 使用该关键字,表不存在时报NOTICE;如不用该关键字,则报ERROR。两种情况下表都不会创建成功。 gaussdb=# CREATE TABLE test_t3(id INT); --创建一个已经存在同名的表test_t3。 gaussdb=# CREATE TABLE test_t3(id INT); ERROR: Relation test_t3 already exists in schema public. DETAIL: Creating new table with existing name in the same schema. --使用IF NOT EXISTS关键字。 gaussdb=# CREATE TABLE IF NOT EXISTS test_t3(id INT); NOTICE: Relation test_t3 already exists, skipping. CREATE TABLE --删除表。 gaussdb=# DROP TABLE test_t3; 建表时指定表空间 --创建表空间。 gaussdb=# CREATE TABLESPACE ds_tbs1 RELATIVE LOCATION 'tablespace/tablespace_1'; --创建表时,指定表空间。 gaussdb=# CREATE TABLE test(id CHAR(7), name VARCHAR(20)) TABLESPACE ds_tbs1; --删除表和表空间。 gaussdb=# DROP TABLE test; gaussdb=# DROP TABLESPACE ds_tbs1;
  • 语法格式 创建表。 CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name { ( { column_name data_type [ CHARACTER SET | CHARSET charset ] [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] | table_constraint | LIKE source_table [ like_option [...] ] } [, ... ] ) | LIKE source_table } [ table_option [ [ , ] ... ] ] [ htap_option ] [ WITH ( {storage_parameter = value} [, ... ] ) ] [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] [ ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER n { day | month | year } OF NO MODIFICATION [ ON ( EXPR )]] [ TABLESPACE tablespace_name ]; 其中table_option为: { COMMENT [ = ] 'string' | AUTO_INCREMENT [ = ] value | [ DEFAULT ] CHARACTER SET | CHARSET [ = ] default_charset | [ DEFAULT ] COLLATE [ = ] default_collation | ENGINE [ = ] { InnoDB | 'InnoDB' | "InnoDB" }} 其中htap_option为: { COLVIEW [ PRIORITY { HIGH | LOW | NONE } ] | NOCOLVIEW [ PRIORITY { HIGH | LOW | NONE } ]} 其中列约束column_constraint为: [ CONSTRAINT constraint_name ] { NOT NULL | NULL | CHECK ( expression ) | DEFAULT default_expr | ON UPDATE update_expr | GENERATED ALWAYS AS ( generation_expr ) [STORED] | GENERATED [ ALWAYS | BY DEFAULT [ ON NULL ] ] AS IDENTITY [ ( identity_options ) ] | AUTO_INCREMENT | COMMENT 'string' | COLVIEW | NOCOLVIEW | UNIQUE [KEY] index_parameters | PRIMARY KEY index_parameters | ENCRYPTED WITH ( COLUMN_ENCRYPTION_KEY = column_encryption_key, ENCRYPTION_TYPE = encryption_type_value ) | REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中列的压缩可选项compress_mode为: { DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS } 其中表约束table_constraint为: [ CONSTRAINT [ constraint_name ] ] { CHECK ( expression ) | UNIQUE [ index_name ] [ USING method ] ( { { column_name [ ( length ) ] | ( expression ) } [ ASC | DESC ] } [, ... ] ) index_parameters | PRIMARY KEY [ USING method ] ( { column_name [ ASC | DESC ] } [, ... ] ) index_parameters | FOREIGN KEY [ index_name ] ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] { [ COMMENT 'string' ] [ ... ] } 其中like选项like_option为: { INCLUDING | EXCLUDING } { DEFAULTS | GENERATED | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | PARTITION | RELOPTIONS | UPDATE | IDENTITY | ILM | ALL } 其中索引参数index_parameters为: [ WITH ( {storage_parameter = value} [, ... ] ) ] [ USING INDEX TABLESPACE tablespace_name ] 其中update_expr为: { CURRENT_TIMESTAMP | LOCALTIMESTAMP | NOW() }
  • GS_PDB GS_PDB系统表存储关于PDB的信息。 字段名称 字段类型 说明 id oid PDB的逻辑ID。 name name PDB名称,与其对应的database同名。 is_opened boolean PDB的开启状态。 true:表示开启。 false:表示关闭。 grp_respool_oid oid PDB对应的资源池ID。 acl aclitem[] 访问权限。 父主题: 多租数据库
  • GS_SQLAPPLY_SKIP GS_SQLAPPLY_SKIP系统表存储逻辑回放可跳过执行的规则。 表1 GS_SQLAPPLY_SKIP字段 字段名称 字段类型 说明 createtime timestamp 新建时间戳。 originid int4 复制源标识。 skiptype int4 SKIP类型: 1:SKIP OBJ 2:SKIP TXN 3:SKIP ERR dumpcontext char 转储事务到文件: 'a':转储整个事务。 'n':不转储。 's':仅转储事务跳过的变更。 param1 text 参考表2表3中的字段说明。 param2 text 参考表2表3中的字段说明。 param3 text 参考表2中的字段说明。 param4 text 参考表2中的字段说明。 param5 text 预留字段。 表2 SKIP OBJ或SKIP ERR时,param1-4的字段 字段名称 字段类型 说明 db_name text 数据库名称。 schema_name text 模式名称。 object_name text 对象名称。 stmt_type text SQL语句类型。 表3 SKIP TXN时,param1-2字段 字段名称 字段类型 说明 csn text 事务序列号。 xid text 事务ID。 父主题: 逻辑解码
  • 参数 表1 SQLGetDiagRec参数 关键字 参数说明 HandleType 句柄类型标识符,它说明诊断所要求的句柄类型。必须为下列值之一: SQL_HANDLE_ENV SQL_HANDLE_DBC SQL_HANDLE_STMT SQL_HANDLE_DESC Handle 诊断数据结构的句柄,其类型由HandleType来指出。如果HandleType是SQL_HANDLE_ENV,Handle可以是共享的或非共享的环境句柄。 RecNumber 指出应用从查找信息的状态记录。状态记录从1开始编号。 SQLState 输出参数:指向缓冲区的指针,该缓冲区存储着有关RecNumber的五字符的SQLSTATE码。 NativeErrorPtr 输出参数:指向缓冲区的指针,该缓冲区存储着本地的错误码。 MessageText 指向缓冲区的指针,该缓冲区存储着诊断信息文本串。 BufferLength MessageText的长度。 TextLengthPtr 输出参数:指向缓冲区的指针,返回MessageText中的字节总数。如果返回字节数大于BufferLength,则MessageText中的诊断信息文本被截断成BufferLength减去NULL结尾字符的长度。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全