华为云用户手册

  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 13 ALTER EXCEPT RULE except_rule_name WITH ( | BLOCKTIME = VALUE, | CPUTIME = VALUE, | ELAPSEDTIME = VALUE, | CPUSKEWPERCENT = VALUE, | SPILLSIZE = VALUE, | BROADCASTSIZE = VALUE, | MEMSIZE = VALUE, | CPUAVGPERCENT = VALUE, | BANDW IDT H = VALUE, | ACTION = ['abort' | 'penalty'] );
  • 示例 创建列存表指定存储格式和压缩方式: 1 2 3 4 5 6 7 8 9 10 11 12 DROP TABLE IF EXISTS customer_address; CREATE TABLE customer_address ( ca_address_sk INTEGER NOT NULL , ca_address_id CHARACTER(16) NOT NULL , ca_street_number CHARACTER(10) , ca_street_name CHARACTER varying(60) , ca_street_type CHARACTER(15) , ca_suite_number CHARACTER(10) ) WITH (ORIENTATION = COLUMN, COMPRESSION=HIGH,COLVERSION=2.0) DISTRIBUTE BY HASH (ca_address_sk); 修改表名: 1 RENAME TABLE customer_address TO new_customer_address;
  • 参数说明 表1 DROP VIEW参数说明 参数 描述 取值范围 IF EXISTS 如果指定的视图不存在,则发出一个notice而不是抛出一个错误。 - view_name 要删除的视图名字。 已存在的视图。 CASCADE | RESTRICT 当执行删除操作时,如何处理依赖对象中的相关数据。 CASCADE:级联删除依赖此视图的对象(比如其他视图)。 RESTRICT:如果有依赖对象存在,则拒绝删除此视图。此选项为缺省值。
  • 什么是SQL SQL是用于访问和处理数据库的标准计算机语言。 SQL提供了各种任务的语句,包括: 查询数据。 在表中插入、更新和删除行。 创建、替换、更改和删除对象。 控制对数据库及其对象的访问。 保证数据库的一致性和完整性。 SQL语言由用于处理数据库和数据库对象的命令和函数组成。该语言还会强制实施有关数据类型、表达式和文本使用的规则。因此在SQL参考章节,除了SQL语法参考外,还会看到有关数据类型、表达式、函数和操作符等信息。
  • SQL发展简史 SQL发展简史如下: 1986年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86 1989年,ANSI X3.135-1989,ISO/IEC 9075:1989,SQL-89 1992年,ANSI X3.135-1992,ISO/IEC 9075:1992,SQL-92(SQL2) 1999年,ISO/IEC 9075:1999,SQL:1999(SQL3) 2003年,ISO/IEC 9075:2003,SQL:2003(SQL4) 2011年,ISO/IEC 9075:200N,SQL:2011(SQL5)
  • 注意事项 使用ROLLBACK TO SAVEPOINT回滚到一个保存点。使用RELEASE SAVEPOINT删除一个保存点,但是保留该保存点建立后执行的命令的效果。 保存点只能在一个事务块里面建立。在一个事务里面可以定义多个保存点。 函数、匿名块和存储过程中不支持使用SAVEPOINT语法。 由于节点故障或者通信故障引起的分布式节点线程或进程退出导致的报错,以及由于COPY FROM操作中源数据与目标表的表结构不一致导致的报错,均不能正常回滚到保存点之前,而是整个事务回滚。 SQL标准要求,使用savepoint建立一个同名保存点时,需要自动删除前面那个同名保存点。在 GaussDB (DWS)数据库里,将保留旧的保存点,但是在回滚或者释放的时候,只使用最近的那个。释放了新的保存点将导致旧的再次成为ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT可以访问的保存点。除此之外,SAVEPOINT是完全符合SQL标准的。
  • 示例 建立一个保存点,然后撤销建立保存点后执行的所有命令的效果: 1 2 3 4 5 6 7 START TRANSACTION; INSERT INTO table1 VALUES (1); SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (2); ROLLBACK TO SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (3); COMMIT; 查询表的内容,会同时看到1和3,不能看到2,因为2被回滚。 建立并随后销毁一个保存点: 1 2 3 4 5 6 START TRANSACTION; INSERT INTO table1 VALUES (3); SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (4); RELEASE SAVEPOINT my_savepoint; COMMIT; 查询表的内容,会同时看到3和4。
  • 参数说明 表1 ALTER REDACTION POLICY参数说明 参数 描述 取值范围 policy_name 待修改的脱敏策略名。 已存在的脱敏策略名。 table_name 待修改的脱敏策略应用的表对象名。 已存在的表名。 when_expression 脱敏策略新的生效表达式。 - ENABLE | DISABLE 当前脱敏策略是否生效。 ENABLE,使之前失效的表对象的脱敏策略重新生效。 DISABLE,使当前应用在表对象的脱敏策略失效。 - new_policy_name 新的脱敏策略名。 字符串,需符合标识符命名规范。 column_name 脱敏表对象的列字段名。 如果新增脱敏列,则指定列字段尚未绑定任何脱敏函数。 如果修改脱敏列,则指定列字段为已存在的脱敏列。 如果删除脱敏列,则指定列字段为已存在的脱敏列。 - redaction_function_name 脱敏函数名。 支持的函数请参考数据脱敏函数。 arguments 脱敏函数的参数列表。 MASK_NONE,表示不进行任何脱敏处理。 MASK_FULL,表示全脱敏成固定值。 MASK_PARTIAL,表示按指定的字符类型,数值类型或时间类型进行部分脱敏处理。 支持的函数请参考数据脱敏函数。
  • 示例 创建用户test_role和示例表emp并插入数据。 1 CREATE ROLE test_role PASSWORD '{Password}'; 1 2 3 DROP TABLE IF EXISTS emp; CREATE TABLE emp(id int, name varchar(20), salary NUMERIC(10,2)); INSERT INTO emp VALUES(1, 'July', 1230.10), (2, 'David', 999.99); 为表对象emp创建脱敏策略mask_emp,字段salary对用户test_role不可见。 1 CREATE REDACTION POLICY mask_emp ON emp WHEN(current_user = 'test_role') ADD COLUMN salary WITH mask_full(salary); 修改脱敏策略生效表达式,使其对指定角色生效(若不指定用户,默认对当前用户生效)。 1 2 ALTER REDACTION POLICY mask_emp ON emp WHEN (pg_has_role(current_user, 'redact_role', 'member')); ALTER REDACTION POLICY mask_emp ON emp WHEN (pg_has_role('redact_role', 'member')); 修改脱敏策略生效表达式,使其对所有用户均生效。 1 ALTER REDACTION POLICY mask_emp ON emp WHEN (1=1); 修改脱敏策略,使其失效。 1 ALTER REDACTION POLICY mask_emp ON emp DISABLE; 重新使脱敏策略生效。 1 ALTER REDACTION POLICY mask_emp ON emp ENABLE; 重命名脱敏策略为mask_emp_new。 1 ALTER REDACTION POLICY mask_emp ON emp RENAME TO mask_emp_new; 新增脱敏列。 1 ALTER REDACTION POLICY mask_emp_new ON emp ADD COLUMN name WITH mask_partial(name, '*', 1, length(name)); 修改脱敏列name,采用脱敏函数MASK_FULL对name字段数据全脱敏。 1 ALTER REDACTION POLICY mask_emp_new ON emp MODIFY COLUMN name WITH mask_full(name); 删除已存在的脱敏列。 1 ALTER REDACTION POLICY mask_emp_new ON emp DROP COLUMN name;
  • 参数说明 表1 DROP FUNCTION参数说明 参数 描述 取值范围 IF EXISTS 如果指定的外表不存在,则发出一个notice而不是抛出一个错误。 - function_name 要删除的函数名字。 已存在的函数名。 argmode 函数参数的模式。 - argname 函数参数的名称。 - argtype 函数参数的数据类型。 - CASCADE | RESTRICT 当执行删除操作时,如何处理依赖对象中的相关数据。 CASCADE:级联删除依赖于函数的对象(比如操作符) 。 RESTRICT:如果有任何依赖对象存在,则拒绝删除该函数(缺省行为)。
  • 参数说明 表1 UPDATE参数说明 参数 描述 取值范围 plan_hint子句 以/*+ */的形式在关键字后,用于对指定语句块生成的计划进行hint调优,详细用法请参见使用Plan Hint进行调优。 - table_name 要更新的表名,可以使用模式修饰。 已存在的表名称。 alias 目标表的别名。 字符串,符合标识符命名规范。详情请参见标识符命名规范。 partition_name 分区名。仅8.2.1及以上集群版本支持该选项。 已存在的分区名。 partition_key_value 分区键值。 通过PARTITION FOR ( partition_key_value [, ...] )子句指定的这一组值,可以唯一确定一个分区。 需要进行重命名分区的分区键的取值范围。 column_name 要修改的字段名。 支持使用目标表的表名加字段名来引用这个字段。例如: 1 UPDATE foo SET foo.col_name = 'GaussDB'; 支持使用目标表的别名加字段名来引用这个字段。例如: 1 UPDATE foo AS f SET f.col_name = 'GaussDB'; 已存在的字段名。 expression 赋给字段的值或表达式。 - DEFAULT 用对应字段的缺省值填充该字段。 如果没有缺省值,则为NULL。 sub_query 子查询。 使用同一数据库里其他表的信息来更新一个表可以使用子查询的方法。其中SELECT子句具体介绍请参考SELECT。 - from_list 一个表的表达式列表,允许在WHERE条件里使用其他表的字段。与在一个SELECT语句的FROM子句里声明表列表类似。 须知: 目标表绝对不能出现在from_list里,除非在使用一个自连接(此时它必须以from_list的别名出现)。 - condition 一个返回boolean类型结果的表达式。只有这个表达式返回true的行才会被更新。 - output_expression 在所有需要更新的行都被更新之后,UPDATE命令用于计算返回值的表达式。 使用任何table以及FROM中列出的表的字段。*表示返回所有字段。 output_name 字段的返回名称。 -
  • 注意事项 要修改表,用户必须对该表有UPDATE权限。 对expression或condition条件里涉及到的任何表要有SELECT权限。 不允许对表的分布列(distribute column)进行修改。 对于列存表,暂时不支持RETURNING子句。 列存表不支持结果不确定的更新(non-deterministic update)。试图对列存表用多行数据更新一行时会报错。 列存表的更新操作,旧记录空间不会回收,需要执行VACUUM FULL table_name进行清理。 UPDATE操作频繁的表不建议创建为复制表。 对于列存表,支持轻量化UPDATE操作。轻量化UPDATE只重写更新列,减少空间使用量。列存轻量化UPDATE通过GUC参数enable_light_colupdate控制是否开启,默认关闭。 列存轻量化UPDATE在以下场景不能使用:更新索引列,更新主键列,更新分区列,更新PCK列和在线扩容,会自动转化为普通UPDATE方式。 列存轻量化UPDATE与后台列存AUTOVACUUM并发会小概率报错,可以通过ALTER TABLE设置表级参数enable_column_autovacuum_garbage为off来避免。需要注意的是设置表级参数enable_column_autovacuum_garbage为off会关闭该表的后台列存AUTOVACUUM。 避免使用UPDATE/DELETE大批量刷新和删除数据,考虑使用TRUNCATE PARTITION/DROP PARTITION代替。 避免UPDATE/UPSERT并发更新同一张列存表。 更多开发设计规范参见总体开发设计规范。
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 UPDATE [/*+ plan_hint */] [ ONLY ] table_name [ * ] [ [ AS ] alias ] [ PARTITION ( partition_name ) | PARTITION FOR ( partition_key_value [, ...] ) ] SET {column_name = { expression | DEFAULT } |( column_name [, ...] ) = {( { expression | DEFAULT } [, ...] ) |sub_query }}[, ...] [ FROM from_list] [ WHERE condition ] [ RETURNING {* | {output_expression [ [ AS ] output_name ]} [, ...] }]; where sub_query can be: SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] { * | {expression [ [ AS ] output_name ]} [, ...] } [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY grouping_element [, ...] ] [ HAVING condition [, ...] ]
  • 功能描述 SET CONSTRAINTS设置当前事务检查行为的约束条件。 IMMEDIATE约束是在每条语句后面进行检查。DEFERRED约束一直到事务提交时才检查。每个约束都有自己的模式。 从创建约束条件开始,一个约束总是设定为DEFERRABLE INITIALLY DEFERRED,DEFERRABLE INITIALLY IMMEDIATE,NOT DEFERRABLE三个特性之一。第三种总是IMMEDIATE,并且不会受SET CONSTRAINTS影响。前两种以指定的方式启动每个事务,但是其行为可以在事务里用SET CONSTRAINTS改变。 带着一个约束名列表的SET CONSTRAINTS改变这些约束的模式(都必须是可推迟的)。如果有多个约束匹配某个名字,则所有都会被影响。SET CONSTRAINTS ALL改变所有可推迟约束的模式。 当SET CONSTRAINTS把一个约束从DEFERRED改成IMMEDIATE的时候,新模式反作用式地起作用:任何将在事务结束准备进行的数据修改都将在SET CONSTRAINTS的时候执行检查。如果违反了任何约束,SET CONSTRAINTS都会失败(并且不会修改约束模式)。因此,SET CONSTRAINTS可以用于强制在事务中某一点进行约束检查。 目前,只有外键约束被该设置影响。检查和唯一约束总是不可推迟的。
  • 语法格式 根据指定的名称修改EXTERNAL SCHEMA。 1 2 3 4 5 6 7 8 ALTER EXTERNAL SCHEMA schema_name WITH [ SOURCE source_name ] [ DATABASE 'database_name' ] [ SERVER server_name ] [ CATA LOG 'catalog_name' ] [ OPTIONS ( { option_name ' value ' } [, ...] ) ] [ METAADDRESS 'address'] [ CONFIGURATION 'confpath'];
  • 参数说明 表1 ALTER EXTERNAL SCHEMA参数说明 参数 描述 取值范围 schema_name 需要修改的外部模式的名称。 已有的模式名。 SOURCE 外部元数据存储引擎的类型。 当前source_type仅支持dli,lakeformation,hive。 DATABASE 指定外部SCHEMA所对应的要访问的数据库。 - SERVER 通过external schema关联foreign server以达到访问外部数据的目的。 已存在的foreign server且type类型为lf、dli、obs或hdfs。 CATALOG Lakeformation中对应的要访问的catalog。 - OPTIONS 指定外表数据的各类参数。该参数仅8.3.0及以上版本支持。 dli_project_id, DLI 服务对应的项目编号,可在管理控制台上获取项目ID,该参数仅支持server类型为DLI时设置。 METAADDRESS Hive Metastore通讯接口。该参数仅9.1.0及以上版本支持。 - CONFIGURATION Hive Metastore相关配置文件存放路径。该参数仅9.1.0及以上版本支持。 说明: 如果当前搜索路径上的模式中存在同名对象时,需要明确指定引用对象所在的模式。可以通过命令SHOW SEARCH_PATH来查看当前搜索路径上的模式。
  • 参数说明 表1 DROP SEQUENCE参数说明 参数 描述 取值范围 IF EXISTS 如果指定的序列不存在,则发出一个notice而不是抛出一个错误。 - name 要删除的序列名称。 已存在的序列名称。 CASCADE | RESTRICT 当执行删除操作时,如何处理依赖对象中的相关数据。 CASCADE:级联删除依赖序列的对象。 RESTRICT:如果存在任何依赖的对象,则拒绝删除序列(缺省行为)。
  • 功能描述 为当前事务做两阶段提交的准备。 在命令之后,事务就不再和当前会话关联了;它的状态完全保存在磁盘上,它被提交成功的可能性非常高,即使是在请求提交之前数据库发生了崩溃也如此。 一旦准备好了,一个事务就可以在稍后用COMMIT PREPARED或 ROLLBACK PREPARED命令分别进行提交或者回滚。这些命令可以从任何会话中发出,而不光是最初执行事务的那个会话。 从发出命令的会话的角度来看,PREPARE TRANSACTION不同于ROLLBACK:在执行它之后,就不再有活跃的当前事务了,并且预备事务的效果无法见到 (在事务提交的时候其效果会再次可见)。 如果PREPARE TRANSACTION因为某些原因失败,那么它就会变成一个ROLLBACK,当前事务被取消。
  • 语法格式 1 2 ALTER RESOURCE POOL pool_name WITH ({MEM_PERCENT=pct | CONTROL_GROUP='group_name' | ACTIVE_STATEMENTS=stmt | MAX_DOP = dop | MEMORY_LIMIT='memory_size' | io_limits=io_limits | io_priority='priority' | nodegroup='nodegroup_name' | except_rule='except_rule' | weight=bandwidth_weight | enable_concurrency_scaling=boolean}[, ... ]);
  • 示例 创建示例资源池pool_test,其控制组为“DefaultClass”组下属的“Medium”Timeshare Workload控制组。 1 2 DROP RESOURCE POOL IF EXISTS pool_test; CREATE RESOURCE POOL pool_test; 修改资源池pool_test,其控制组指定为“DefaultClass”组下属的“High”Timeshare Workload控制组。 1 ALTER RESOURCE POOL pool_test WITH (CONTROL_GROUP="High"); 关闭指定资源池作业的弹性并发扩展功能。 1 ALTER RESOURCE POOL pool_test WITH (enable_concurrency_scaling=false);
  • 参数说明 表1 ALTER RESOURCE POOL参数说明 参数 描述 取值范围 pool_name 需要修改的资源池名称。 已存在的资源池。 group_name 控制组名称。 已存在的控制组。 stmt 资源池语句执行的最大并发数量。 数值型,-1~INT_MAX。 dop 资源池简单语句执行的最大并发数量。 数值型,1~INT_MAX。 memory_size 资源池最大使用内存。 字符串,范围1KB~2047GB。 mem_percent 资源池可用内存占全部内存或者组用户内存使用的比例。 普通用户的mem_percent范围为0-100的整数,默认值为0。 io_limits 该参数8.1.2集群版本中已废弃,为兼容历史版本保留该参数。 - io_priority 该参数8.1.2集群版本中已废弃,为兼容历史版本保留该参数。 - except_rule 异常规则集。 - weight 资源池网络带宽权重。 - enable_concurrency_scaling 弹性并发扩展功能开关。该功能仅9.1.0.100及以上集群版本支持。默认值为false。 true或false。 true,表示开启该资源池作业的弹性并发扩展功能。 false,表示关闭该资源池作业的弹性并发扩展功能。 设置控制组名称“group_name”时,语法可以使用双引号,也可以使用单引号。 group_name对大小写敏感。 不指定group_name时,默认指定的字符串为 "Medium",代表指定DefaultClass控制组的 "Medium" Timeshare控制组。 若数据库用户指定Timeshare控制组代表的字符串,即"Rush"、"High"、"Medium"或"Low"其中一种,如control_group的字符串为"High";代表资源池指定到DefaultClass控制组下的"High" Timeshare控制组。
  • 参数说明 表1 ALTER SCHEMA参数说明 参数 描述 取值范围 schema_name 需要修改的模式的名称。 已存在的模式名。 new_name 模式的新名称。 字符串,需符合标识符命名规范。 new_owner 模式的新所有者。 已存在的用户名/角色名。 WITH PERM SPACE 'space_limit' 模式的永久表存储空间上限。 字符串格式为正整数+单位,单位当前支持K/M/G/T/P。解析后的数值以K为单位,且范围不能够超过64比特表示的有符号整数,即1KB~9007199254740991KB。
  • 示例 创建示例模式schema_test和用户user_a: 1 2 CREATE SCHEMA schema_test; CREATE USER user_a PASSWORD '{Password}'; 将当前模式schema_test更名为schema_test1: 1 ALTER SCHEMA schema_test RENAME TO schema_test1; 将schema_test1的所有者修改为user_a: 1 ALTER SCHEMA schema_test1 OWNER TO user_a;
  • 示例 创建模式ds: 1 CREATE SCHEMA ds; 设置模式搜索路径: 1 SET SEARCH_PATH TO ds, public; 设置日期时间风格为传统的POSTGRES风格(日在月前): 1 SET DATESTYLE TO postgres, dmy; 设置当前会话的字符编码为UTF8: 1 ALTER SESSION SET NAMES 'UTF8'; 设置时区为加州伯克利: 1 SET TIME ZONE 'PST8PDT'; 设置时区为意大利: 1 SET TIME ZONE 'Europe/Rome'; 设置当前模式: 1 ALTER SESSION SET CURRENT_SCHEMA TO tpcds; 设置XML OPTION为DOCUMENT: 1 ALTER SESSION SET XML OPTION DOCUMENT; 创建角色joe,并设置会话的角色为joe: 1 2 CREATE ROLE joe WITH PASSWORD '{password}'; ALTER SESSION SET SESSION AUTHORIZATION joe PASSWORD '{password}'; 切换到默认用户: 1 ALTER SESSION SET SESSION AUTHORIZATION default;
  • 参数说明 表1 ALTER SESSION参数说明 参数 描述 取值范围 SESSION 声明的参数只对当前会话起作用。如果SESSION和LOCAL都没出现,则SESSION为缺省值。 如果在事务中执行了此命令,命令的产生影响将在事务回滚之后消失。如果该事务已提交,影响将持续到会话的结束,除非被另外一个SET命令重置参数。 - config_parameter 可设置的运行时参数的名称。可用的运行时参数可以使用SHOW ALL命令查看。 说明: 部分通过SHOW ALL查看的参数不能通过SET设置。如max_datanodes。 - value config_parameter的新值。 可以声明为字符串常量、标识符、数字,或者逗号分隔的列表。DEFAULT用于把这些参数设置为它们的缺省值。 TIME ZONE timezone 用于指定当前会话的本地时区。 有效的本地时区。该选项对应的运行时参数名称为TimeZone,DEFAULT缺省值为PRC。 CURRENT_SCHEMA CURRENT_SCHEMA用于指定当前的模式。 已存在的模式名称。 SCHEMA schema 同CURRENT_SCHEMA。此处的schema是个字符串。 例如:set schema 'public'; - NAMES encoding_name 用于设置客户端的字符编码。等价于set client_encoding to encoding_name。 有效的字符编码。该选项对应的运行时参数名称为client_encoding,默认编码为UTF8。 XML OPTION option 用于设置XML的解析方式。 CONTENT(缺省) DOCUMENT
  • 语法格式 设置会话的事务参数。 1 2 ALTER SESSION SET [ SESSION CHARACTERIS TICS AS ] TRANSACTION { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED } | { READ ONLY | READ WRITE } } [, ...] ; 设置会话的其他运行时参数。 1 2 3 4 5 6 7 8 9 10 ALTER SESSION SET {{config_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }} | CURRENT_SCHEMA [ TO | = ] { schema | DEFAULT } | TIME ZONE time_zone | SCHEMA schema | NAMES encoding_name | ROLE role_name PASSWORD 'password' | SESSION AUTHORIZATION { role_name PASSWORD 'password' | DEFAULT } | XML OPTION { DOCUMENT | CONTENT } } ;
  • 背景 目前在互联网、教育、游戏等行业都有实时精准营销的需求。通过系统生成用户画像,在营销时通过条件组合筛选用户,快速提取目标群体。例如: 在电商行业中,商家在进行营销活动前,需要根据活动的目的,圈选一批满足特定特征的目标用户群体进行广告推送。 在教育行业中,需要根据学生不同的特征,推送有针对性的练习题目,帮助学生查漏补缺。 在搜索、视频、门户网站中,根据用户关注的热点,推送不同的内容。 这些业务场景都有一些共同的特点: 数据量庞大,运算量极大。 用户规模庞大,标签多,字段多,占用存储空间也多。 圈选的特征条件多样化,很难找到固定索引,如果每个字段一个索引,存储空间又会暴增。 性能要求高,因为实时营销要求秒级响应。 数据更新时效要求高,用户画像几乎要求实时更新。 针对上述业务场景特点,GaussDB(DWS)的roaringbitmap可以高效生成、压缩、解析位图数据,支持最常见的位图聚合操作(与、或、非、异或),满足用户在亿级以上、千万级标签的大数据量下实时精准营销、快速圈选用户的需求。
  • 示例 创建示例复合类型test,枚举类型testdata和用户user_t。 1 2 3 CREATE TYPE test AS (col1 int, col text); CREATE TYPE testdata AS ENUM ('create', 'modify', 'closed'); CREATE USER user_t PASSWORD '{Password}'; 重命名数据类型test为test1。 1 ALTER TYPE test RENAME TO test1; 修改用户定义类型test1的所有者为user_t。 1 ALTER TYPE test1 OWNER TO user_t; 把用户定义类型test1的模式改为user_t。 1 ALTER TYPE test1 SET SCHEMA user_t; 给用户定义类型test1添加一个新的属性col3。 1 ALTER TYPE user_t.test1 ADD ATTRIBUTE col3 int; 给枚举类型testdata添加一个标签值。 1 ALTER TYPE testdata ADD VALUE IF NOT EXISTS 'regress' BEFORE 'closed'; 重命名枚举类型testdata的一个标签值。 1 ALTER TYPE testdata RENAME VALUE 'create' TO 'new';
  • 语法格式 修改类型。 1 2 3 4 5 6 7 8 9 10 11 12 ALTER TYPE name action [, ... ]; ALTER TYPE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }; ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ]; ALTER TYPE name RENAME TO new_name; ALTER TYPE name SET SCHEMA new_schema; ALTER TYPE name ADD VALUE [ IF NOT EXISTS ] new_enum_value [ { BEFORE | AFTER } neighbor_enum_value ]; ALTER TYPE name RENAME VALUE existing_enum_value TO new_enum_value; where action is one of: ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]; DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE | RESTRICT ]; ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]; 给复合类型增加新的属性。 1 ALTER TYPE name ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ];
  • 参数说明 表1 ALTER TYPE参数说明 参数 描述 取值范围 name 需要修改的现有类型的名称,可以用模式修饰。 有效的类型名称。 new_name 类型的新名称。 字符串。 new_owner 类型新所有者的用户名 。 有效的用户名。 new_schema 类型的新模式 。 有效的模式名。 attribute_name 要增加、更改或删除的属性的名称。 - new_attribute_name 要重命名的属性的新名称。 - data_type 要新增属性的数据类型,或是要更改的属性的新类型名。 - new_enum_value 枚举类型新增加的标签值。 字符串。非空且长度不超过64个字节。 neighbor_enum_value 一个已有枚举标签值,新值应该被增加在紧接着该枚举值之前或者之后的位置上。 - existing_enum_value 现有的要重命名的枚举值。 字符串。非空且长度不超过64个字节。 CASCADE 自动级联更新需更新类型以及相关联的记录和继承它们的子表。 - RESTRICT 如果需级联更新类型是已更新类型的关联记录,则拒绝更新。RESTRICT为缺省选项。 -
共100000条
提示

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