GBASE 8C——SQL参考6 sql语法(4)

  1. ALTER TYPE

功能描述

修改类型的参数。

语法格式

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

这里action 是以下之一:

    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. name:需要修改的现有的类型的名字,可以被模式修饰;
  2. new_name:该类型的新名称;
  3. new_owner:新所有者的用户名;
  4. new_schema:该类型的新模式;
  5. attribute_name:拟增加、更改或删除的属性的名称;
  6. new_attribute_name:拟改名的属性的新名称;
  7. data_type:拟新增属性的数据类型,或是拟更改的属性的新类型名;
  8. new_enum_value:枚举类型新增加的标签值,需要被引号引用;
  9. neighbor_enum_value:一个已有枚举标签值,新值应该被增加在紧接着该枚举值之前或者之后的位置上;
  10. existing_enum_value:现有的要重命名的枚举值,需要被引号引用;
  11. CASCADE:自动级联更新需更新类型以及相关联的记录和继承它们的子表;
  12. RESTRICT:如果需联动更新类型是已更新类型的关联记录,则拒绝更新,这是默认选项;

注意事项

使用ALTER TYPE必须是该类型的所有者。

范例

ALTER TYPE compfoo RENAME TO g_compfoo;

ALTER TYPE

语法兼容

ALTER TYPE新增和删除是SQL属于SQL标准,其他参数是PostgreSQL 扩展。

相关语法

CREATE TYPEDROP TYPE

  1. ALTER USER

功能描述

修改数据库用户的属性。

语法格式

ALTER USER role_specification [ WITH ] option [ ... ]

其中 option 可以是:

      SUPERUSER | NOSUPERUSER

    | CREATEDB | NOCREATEDB

    | CREATEROLE | NOCREATEROLE

    | INHERIT | NOINHERIT

    | LOGIN | NOLOGIN

    | REPLICATION | NOREPLICATION

    | BYPASSRLS | NOBYPASSRLS

    | CONNECTION LIMIT connlimit

    | [ ENCRYPTED ] PASSWORD 'password'

    | VALID UNTIL 'timestamp'

ALTER USER name RENAME TO new_name

ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }

ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT

ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] RESET configuration_parameter

ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] RESET ALL

其中 role_specification 可以是:

    role_name

  | CURRENT_USER

  | SESSION_USER

注意事项

ALTER USER现在是 ALTER ROLE的一个别名。详见ALTER ROLE

语法兼容

ALTER USER语句是一种 PostgreSQL扩展。

相关语法

CREATE USERDROP USERALTER ROLE

  1. ALTER VIEW

功能描述

更改视图的各种辅助属性。

语法格式

ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression

ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT

ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

ALTER VIEW [ IF EXISTS ] name RENAME TO new_name

ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema

ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )

ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )

参数说明

  1. name:现有的视图名称,可以用模式修饰;
  2. IF EXISTS:如果视图不存在不报错,仅提示;
  3. SET/DROP DEFAULT:设置或删除一个列的缺省值;
  4. new_owner:视图新所有者的用户名称;
  5. new_name:视图的新名称;
  6. new_schema:视图的新模式;
  7. SET ( view_option_name [= view_option_value] [, ... ] ) | RESET ( view_option_name [, ... ] ):为视图指定一个可选的参数,参数可选:
    1. check_option (string):更改视图的检查选项,可选的值为local或者cascaded;
    2. security_barrier (boolean):指定视图行级安全性;

注意事项

要使用ALTER VIEW必须是该视图的所有者。

要改变视图的模式,用户必须要有新模式的CREATE权限。

要改变视图的所有者,用户必须是新所属角色的直接或者间接的成员,并且此角色必须有视图模式的CREATE权限。

管理员用户可以更改任何视图的所属关系。

范例

ALTER VIEW g_view RENAME TO gc_view;

ALTER VIEW

语法兼容

ALTER VIEW是一种PostgreSQL 的 SQL 标准扩展。

相关语法

CREATE VIEWDROP VIEW

  1. ANALYZE

功能描述

用于收集与数据库中普通表内容相关的统计信息。

语法格式

ANALYZE [ VERBOSE ] [ table_name [ ( column_name [, ...] ) ] ]

参数说明

  1. VERBOSE:启用显示进度信息;
  2. table_name:需要分析的特定表的表名(可能会带模式名),如果省略,将对数据库中的所有表(除外部表)进行分析;
  3. column_name:需要分析特定列的列名,默认为所有列。

注意事项

如果没有指定参数,ANALYZE会分析当前数据库中的每个表和分区表。

范例

ANALYZE VERBOSE orders;

INFO:  analyzing "public.orders" inheritance tree

INFO:  analyzing "public.orders_history"

INFO:  analyzing "public.orders_202003"

INFO:  analyzing "public.orders_202004"

ANALYZE

语法兼容

SQL 标准中没有ANALYZE语句。

相关语法

VACUUMEXPLAIN

  1. BEGIN

功能描述

BEGIN用于开始一个事务。

语法格式

BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]

其中 transaction_mode 是以下之一:

    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }

    READ WRITE | READ ONLY

    [ NOT ] DEFERRABLE

参数说明

  1. WORK | TRANSACTION:可选关键字,除了增加可读性没有其他任何作用。

其他参数的含义请参考 SET TRANSACTION

注意事项

START TRANSACTION具有和BEGIN 相同的功能。

使用COMMIT或者 ROLLBACK来终止一个事务块。

在已经在一个事务块中时发出BEGIN将触发警告,此时事务状态不会被影响。要在一个事务块中嵌套事务,可以使用保存点(SAVEPOINT)。

由于向后兼容,连续的transaction_modes之间的逗号可以被省略。

范例

开始一个事务:

BEGIN;

语法兼容

BEGIN是PostgreSQL语言扩展,等效于SQL 标准的START TRANSACTION。

相关语法

COMMITROLLBACKENDSTART TRANSACTIONSAVEPOINT

  1. CHECKPOINT

功能描述

检查点(CHECKPOINT)是一个事务日志中的点,所有数据文件都在该点被更新以反映日志中的信息,所有数据文件都将被刷新到磁盘。

设置事务日志检查点。预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。

语法格式

CHECKPOINT

注意事项

只有系统管理员能够调用CHECKPOINT。

CHECKPOINT在本地CN和所有DN节点上执行。

范例

CHECKPOINT;

CHECKPOINT

语法兼容

CHECKPOINT命令是一种 PostgreSQL语言扩展。

  1. CLEAN CONNECTION

功能描述

当数据库有异常时,用来清理数据库连接。

语法格式

CLEAN CONNECTION TO { COORDINATOR ( nodename [, ... ] ) | NODE ( nodename [, ... ] ) | ALL {FORCE} }

    [ FOR DATABASE dbname ]

    [ TO USER username ]

参数说明

  1. FORCE:仅在节点列表为TO ALL时可以指定,如果指定该参数,会在清理连接之前检查数据库是否被其他会话连接访问,此参数主要用于DROP DATABASE之前的连接访问检查,如果发现有其他会话连接,则将报错并停止删除数据库;
  2. dbname:删除指定数据库上的连接,如果不指定则删除所有数据库的连接;
  3. username:删除指定用户上的连接,如果不指定则删除所有用户的连接;
  4. nodename:删除指定节点上的连接,三种场景:
    1. 删除指定CN上的连接;
    2. 删除指定DN上的连接时,需要指定DN组名;
    3. 删除所有节点上的连接,包括CN和DN。

范例

CLEAN CONNECTION TO ALL FORCE FOR DATABASE gbase TO USER gbase1;

CLEAN CONNECTION

CLEAN CONNECTION TO NODE (dn2) TO USER gbase1;

CLEAN CONNECTION

语法兼容

CLEAN CONNECTION 不符合 SQL 标准

  1. CLOSE

功能描述

释放和一个游标关联的所有资源。

语法格式

CLOSE { name | ALL }

注意事项

当创建游标的事务用COMMIT或ROLLBACK终止之后,每个不可保持的已打开游标都隐含关闭。

当创建游标的事务通过ROLLBACK退出之后,每个可以保持的游标都将隐含关闭。

GBase 8c没有明确打开游标的OPEN语句,因为一个游标在使用CURSOR命令定义的时候就打开了。可以通过查询系统视图pg_cursors看到所有可用的游标。

语法兼容

CLOSE完全服从SQL标准。CLOSE ALL是一种PostgreSQL 扩展。

相关语法

DECLAREFETCHMOVE

  1. CLUSTER

功能描述

根据一个索引对表进行聚簇排序。

语法格式

CLUSTER [VERBOSE] table_name [ USING index_name ]

CLUSTER [VERBOSE]

参数说明

  1. table_name:表名称,可以被模式修饰;
  2. index_name:索引名称;
  3. VERBOSE:在对表进行聚簇排序时打印进度报告。

注意事项

只有行存B-tree索引支持CLUSTER操作。

如果用户只是随机访问表中的行,那么表中数据的实际存储顺序是无关紧要的。但是,如果对某些数据的访问多于其它数据,而且有一个索引将这些数据分组,那么将使用CLUSTER中会有所帮助。如果从一个表中请求一定索引范围的值, 或者是一个索引值对应多行,CLUSTER也会有助于应用,因为如果索引标识出第一匹配行所在的存储页,所有其它行也可能已经在同一个存储页里了,这样便节省了磁盘访问的时间,加速了查询。

在聚簇过程中,系统先创建一个按照索引顺序建立的表的临时拷贝。同时也建立表上的每个索引的临时拷贝。因此,需要磁盘上有足够的剩余空间, 至少是表大小和索引大小的和。

因为CLUSTER记忆聚集信息,可以在第一次的时候手工对表进行聚簇,然后设置一个类似VACUUM的时间,这样就可以周期地自动对表进行聚簇操作。

因为优化器记录着有关表的排序的统计,所以建议在新近聚簇的表上运行ANALYZE。否则,优化器可能会选择很差劲的查询规划。

CLUSTER不允许在事务中执行。

CLUSTER也将在所有数据节点上执行。

范例

CLUSTER customer USING gcustomer_idx;

CLUSTER

语法兼容

在 SQL 标准中没有CLUSTER语句。

  1. COMMENT

功能描述

定义或修改一个对象的注释。

语法格式

COMMENT ON

{

  ACCESS METHOD object_name |

  AGGREGATE aggregate_name ( aggregate_signature ) |

  CAST (source_type AS target_type) |

  COLLATION object_name |

  COLUMN relation_name.column_name |

  CONSTRAINT constraint_name ON table_name |

  CONSTRAINT constraint_name ON DOMAIN domain_name |

  CONVERSION object_name |

  DATABASE object_name |

  DOMAIN object_name |

  EXTENSION object_name |

  EVENT TRIGGER object_name |

  FOREIGN DATA WRAPPER object_name |

  FOREIGN TABLE object_name |

  FUNCTION function_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |

  INDEX object_name |

  LARGE OBJECT large_object_oid |

  MATERIALIZED VIEW object_name |

  OPERATOR operator_name (left_type, right_type) |

  OPERATOR CLASS object_name USING index_method |

  OPERATOR FAMILY object_name USING index_method |

  POLICY policy_name ON table_name |

  [ PROCEDURAL ] LANGUAGE object_name |

  ROLE object_name |

  RULE rule_name ON table_name |

  SCHEMA object_name |

  SEQUENCE object_name |

  SERVER object_name |

  TABLE object_name |

  TABLESPACE object_name |

  TEXT SEARCH CONFIGURATION object_name |

  TEXT SEARCH DICTIONARY object_name |

  TEXT SEARCH PARSER object_name |

  TEXT SEARCH TEMPLATE object_name |

  TRANSFORM FOR type_name LANGUAGE lang_name |

  TRIGGER trigger_name ON table_name |

  TYPE object_name |

  VIEW object_name

} IS 'text'

  ACCESS METHOD object_name |

  AGGREGATE aggregate_name ( aggregate_signature ) |

  CAST (source_type AS target_type) |

  COLLATION object_name |

  COLUMN relation_name.column_name |

  CONSTRAINT constraint_name ON table_name |

  CONSTRAINT constraint_name ON DOMAIN domain_name |

  CONVERSION object_name |

  DATABASE object_name |

  DOMAIN object_name |

  EXTENSION object_name |

  EVENT TRIGGER object_name |

  FOREIGN DATA WRAPPER object_name |

  FOREIGN TABLE object_name |

  FUNCTION function_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |

  INDEX object_name |

  LARGE OBJECT large_object_oid |

  MATERIALIZED VIEW object_name |

  OPERATOR operator_name (left_type, right_type) |

  OPERATOR CLASS object_name USING index_method |

  OPERATOR FAMILY object_name USING index_method |

  POLICY policy_name ON table_name |

  [ PROCEDURAL ] LANGUAGE object_name |

  PUBLICATION object_name |

  ROLE object_name |

  RULE rule_name ON table_name |

  SCHEMA object_name |

  SEQUENCE object_name |

  SERVER object_name |

  STATISTICS object_name |

  SUBSCRIPTION object_name |

  TABLE object_name |

  TABLESPACE object_name |

  TEXT SEARCH CONFIGURATION object_name |

  TEXT SEARCH DICTIONARY object_name |

  TEXT SEARCH PARSER object_name |

  TEXT SEARCH TEMPLATE object_name |

  TRANSFORM FOR type_name LANGUAGE lang_name |

  TRIGGER trigger_name ON table_name |

  TYPE object_name |

  VIEW object_name

} IS 'text'

其中 aggregate_signature 是:

* |

[ argmode ] [ argname ] argtype [ , ... ] |

[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]

参数说明

  1. object_name:对象名;
  2. relation_name.column_name:定义/修改注释的列名称,前缀可加表名称;
  3. aggregate_name:聚集函数的名称;
  4. constraint_name:定义/修改注释的表约束的名称;
  5. function_name:定义/修改注释的函数名称;
  6. operator_name:操作符名称;
  7. policy_name:安全性策略名称;
  8. rule_name:规则名称;
  9. trigger_name:触发器名称。
  10. table_name:表的名称
  11. domain_name:当在一个约束、触发器、规则或者策略上创建一段注释时,这些参数指定在其上定义该对象的表或域的名称
  12. source_type:类型转换的源数据类型;
  13. target_type:类型转换的目标数据类型;
  14. argmode:函数参数的模式,可选参数:IN、 OUT、INOUT或者VARIADIC,默认为IN;
  15. argname:函数参数的名称;
  16. argtype:函数参数的类型;
  17. large_object_oid:定义/修改注释的大对象的OID值;
  18. left_type | right_type:操作参数的数据类型,可以被模式修饰,当前置或者后置操作符不存在时,可以增加NONE选项;
  19. PROCEDURAL:噪声词;
  20. type_name:该转换的数据类型的名称;
  21. lang_name:该转换的语言的名称;
  22. text:注释。

注意事项

目前注释浏览没有安全机制:任何连接到某数据库上的用户都可以看到所有该数据库对象的注释。共享对象(比如数据库、角色、表空间)的注释是全局存储的,连接到任何数据库的任何用户都可以看到它们。因此,不要在注释里存放与安全有关的敏感信息。

范例

COMMENT ON TABLE customer IS 'This is my customer.';

COMMENT

语法兼容

SQL 标准中没有COMMENT命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值