功能描述
修改类型的参数。
语法格式
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 ]
参数说明
注意事项
使用ALTER TYPE必须是该类型的所有者。
范例
ALTER TYPE compfoo RENAME TO g_compfoo;
ALTER TYPE
语法兼容
ALTER TYPE新增和删除是SQL属于SQL标准,其他参数是PostgreSQL 扩展。
相关语法
功能描述
修改数据库用户的属性。
语法格式
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 USER, DROP USER, ALTER ROLE
功能描述
更改视图的各种辅助属性。
语法格式
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 [, ... ] )
参数说明
注意事项
要使用ALTER VIEW必须是该视图的所有者。
要改变视图的模式,用户必须要有新模式的CREATE权限。
要改变视图的所有者,用户必须是新所属角色的直接或者间接的成员,并且此角色必须有视图模式的CREATE权限。
管理员用户可以更改任何视图的所属关系。
范例
ALTER VIEW g_view RENAME TO gc_view;
ALTER VIEW
语法兼容
ALTER VIEW是一种PostgreSQL 的 SQL 标准扩展。
相关语法
功能描述
用于收集与数据库中普通表内容相关的统计信息。
语法格式
ANALYZE [ VERBOSE ] [ table_name [ ( 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语句。
相关语法
功能描述
BEGIN用于开始一个事务。
语法格式
BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]
其中 transaction_mode 是以下之一:
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
READ WRITE | READ ONLY
[ NOT ] DEFERRABLE
参数说明
其他参数的含义请参考 SET TRANSACTION。
注意事项
START TRANSACTION具有和BEGIN 相同的功能。
使用COMMIT或者 ROLLBACK来终止一个事务块。
在已经在一个事务块中时发出BEGIN将触发警告,此时事务状态不会被影响。要在一个事务块中嵌套事务,可以使用保存点(SAVEPOINT)。
由于向后兼容,连续的transaction_modes之间的逗号可以被省略。
范例
开始一个事务:
BEGIN;
语法兼容
BEGIN是PostgreSQL语言扩展,等效于SQL 标准的START TRANSACTION。
相关语法
COMMIT, ROLLBACK, END, START TRANSACTION, SAVEPOINT
功能描述
检查点(CHECKPOINT)是一个事务日志中的点,所有数据文件都在该点被更新以反映日志中的信息,所有数据文件都将被刷新到磁盘。
设置事务日志检查点。预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。
语法格式
CHECKPOINT
注意事项
只有系统管理员能够调用CHECKPOINT。
CHECKPOINT在本地CN和所有DN节点上执行。
范例
CHECKPOINT;
CHECKPOINT
语法兼容
CHECKPOINT命令是一种 PostgreSQL语言扩展。
功能描述
当数据库有异常时,用来清理数据库连接。
语法格式
CLEAN CONNECTION TO { COORDINATOR ( nodename [, ... ] ) | NODE ( nodename [, ... ] ) | ALL {FORCE} }
[ FOR DATABASE dbname ]
[ TO USER username ]
参数说明
范例
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 标准
功能描述
释放和一个游标关联的所有资源。
语法格式
CLOSE { name | ALL }
注意事项
当创建游标的事务用COMMIT或ROLLBACK终止之后,每个不可保持的已打开游标都隐含关闭。
当创建游标的事务通过ROLLBACK退出之后,每个可以保持的游标都将隐含关闭。
GBase 8c没有明确打开游标的OPEN语句,因为一个游标在使用CURSOR命令定义的时候就打开了。可以通过查询系统视图pg_cursors看到所有可用的游标。
语法兼容
CLOSE完全服从SQL标准。CLOSE ALL是一种PostgreSQL 扩展。
相关语法
功能描述
根据一个索引对表进行聚簇排序。
语法格式
CLUSTER [VERBOSE] table_name [ USING index_name ]
CLUSTER [VERBOSE]
参数说明
注意事项
只有行存B-tree索引支持CLUSTER操作。
如果用户只是随机访问表中的行,那么表中数据的实际存储顺序是无关紧要的。但是,如果对某些数据的访问多于其它数据,而且有一个索引将这些数据分组,那么将使用CLUSTER中会有所帮助。如果从一个表中请求一定索引范围的值, 或者是一个索引值对应多行,CLUSTER也会有助于应用,因为如果索引标识出第一匹配行所在的存储页,所有其它行也可能已经在同一个存储页里了,这样便节省了磁盘访问的时间,加速了查询。
在聚簇过程中,系统先创建一个按照索引顺序建立的表的临时拷贝。同时也建立表上的每个索引的临时拷贝。因此,需要磁盘上有足够的剩余空间, 至少是表大小和索引大小的和。
因为CLUSTER记忆聚集信息,可以在第一次的时候手工对表进行聚簇,然后设置一个类似VACUUM的时间,这样就可以周期地自动对表进行聚簇操作。
因为优化器记录着有关表的排序的统计,所以建议在新近聚簇的表上运行ANALYZE。否则,优化器可能会选择很差劲的查询规划。
CLUSTER不允许在事务中执行。
CLUSTER也将在所有数据节点上执行。
范例
CLUSTER customer USING gcustomer_idx;
CLUSTER
语法兼容
在 SQL 标准中没有CLUSTER语句。
功能描述
定义或修改一个对象的注释。
语法格式
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 [ , ... ]
参数说明
注意事项
目前注释浏览没有安全机制:任何连接到某数据库上的用户都可以看到所有该数据库对象的注释。共享对象(比如数据库、角色、表空间)的注释是全局存储的,连接到任何数据库的任何用户都可以看到它们。因此,不要在注释里存放与安全有关的敏感信息。
范例
COMMENT ON TABLE customer IS 'This is my customer.';
COMMENT
语法兼容
SQL 标准中没有COMMENT命令。