• 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 TYPE, DROP 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 USER, DROP USER, ALTER 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 VIEW, DROP 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语句。

    相关语法

    VACUUM, EXPLAIN

    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。

    相关语法

    COMMIT, ROLLBACK, END, START TRANSACTION, SAVEPOINT

    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 扩展。

    相关语法

    DECLARE, FETCH, MOVE

    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命令。

  • 相关阅读:
    远程桌面控制组件封装使用的microsoft terminal services active 1.0
    java运算符(算数、关系、逻辑、条件、赋值)
    星戈瑞FITC-Cytochrome C:荧光标记细胞色素C的研究与应用
    ThinkPHP3.2.3反序列化链子分析
    聚观早报 | 中国新能源车企组团“出海”;盒马鲜生门店突破350家
    C++ 函数
    针对《VPP实现策略路由》的修正
    Docker Rootfs
    C++算法 —— 动态规划(3)多状态
    Linux mmap 的作用是什么?
  • 原文地址:https://blog.csdn.net/aisirea/article/details/125478850