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

SQL语法

  1. ABORT

功能描述

回滚当前事务并且撤销所有当前事务中所做的更改。

作用等同于ROLLBACK,更推荐使用ROLLBACK。

语法格式

ABORT [ WORK | TRANSACTION ]

参数说明

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

注意事项

在事务外部执行ABORT语句不会影响事务的执行,但是会产生一个警告信息。

范例

SELECT * FROM customer;

 id |  name  |  birthday  |    tel

----+--------+------------+-----------

  3 | 张飞   | 2020-04-03 | 142356789

  5 | 孙坚   | 2020-04-05 | 145623789

  1 | 刘备   | 2020-04-01 | 123456789

  4 | 曹操   | 2020-04-04 | 154623789

  8 | 周瑜   |            |

  9 | 黄忠   |            |

 10 | 陶谦   |            |

  2 | 关羽   | 2020-04-02 | 132456789

  6 | 孙策   | 2020-04-06 | 154687923

  7 | 诸葛亮 | 2020-04-07 | 456789123

(10 rows)

--事务开始

BEGIN;

BEGIN

INSERT INTO customer VALUES(11,'曹仁');

INSERT 0 1

--事务回滚

ABORT;

ROLLBACK

--再次查询,数据表未变更

SELECT * FROM customer;

 id |  name  |  birthday  |    tel

----+--------+------------+-----------

  3 | 张飞   | 2020-04-03 | 142356789

  5 | 孙坚   | 2020-04-05 | 145623789

  1 | 刘备   | 2020-04-01 | 123456789

  4 | 曹操   | 2020-04-04 | 154623789

  8 | 周瑜   |            |

  9 | 黄忠   |            |

 10 | 陶谦   |            |

  2 | 关羽   | 2020-04-02 | 132456789

  6 | 孙策   | 2020-04-06 | 154687923

  7 | 诸葛亮 | 2020-04-07 | 456789123

(10 rows)

相关语法

BEGINCOMMITROLLBACK

  1. ALTER AGGREGATE

功能描述

修改一个聚集函数的参数。

要使用ALTER AGGREGATE需要注意用户权限,拥有创建、修改权限。

语法格式

ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name

ALTER AGGREGATE name ( aggregate_signature )

                OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

ALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema

其中 aggregate_signature 是:

* |

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

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

参数说明

  1. name:现有聚集函数的名称(可以被模式修饰);
  2. argmode:参数的模式:IN或VARIADIC。缺省情况默认IN;
  3. argname:参数的名称,无意义,可省略;
  4. argtype:聚集函数的输入的数据类型。无参数的聚集函数,直接标*。引用有序集聚聚集函数,在直接参数说明和聚集参数说明之间加ORDER BY;
  5. new_name:新的聚集函数名称;
  6. new_owner:新的聚集函数的所有者;
  7. new_schema:新的聚集函数的模式。

注意事项

引用有序集聚聚集函数的推荐语法是在直接参数说明和聚集参数说明之间加ORDER BY。也可以将直接参数说明和聚集参数说明放到一个单一列表中,并省略ORDER BY(这种情况下,如果直接参数说明和聚集参数说明中都使用了VARIADIC "any",只需要写一次VARIADIC "any")。

范例

ALTER AGGREGATE sum (integer) RENAME TO my_sum;

ALTER AGGREGATE

语法兼容

在 SQL 标准中没有ALTER AGGREGATE语句。

相关语法

CREATE AGGREGATEDROP AGGREGATE

  1. ALTER COLLATION

功能描述

更改排序规则的参数。

语法格式

ALTER COLLATION name REFRESH VERSION

ALTER COLLATION name RENAME TO new_name

ALTER COLLATION name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

ALTER COLLATION name SET SCHEMA new_schema

参数说明

  1. name:现有排序规则的名称,可以被模式修饰;
  2. new_name:排序规则的新名称;
  3. new_owner:排序规则的新所有者;
  4. new_schema:排序规则的新模式;
  5. REFRESH VERSION:更新排序规则的版本。

注意事项

使用ICU库提供的排序规则时,创建排序规则对象时,系统目录中会记录排序规则的特定ICU版本。使用排序规则时,将根据记录的版本检查当前版本,并在发生不匹配时告警。

范例

ALTER COLLATION "french1" RENAME TO french2;

ALTER COLLATION

语法兼容

在 SQL 标准中没有ALTER COLLATION语句。

相关语法

CREATE COLLATIONDROP COLLATION

  1. ALTER CONVERSION

功能描述

更改编码转换的参数。

语法格式

ALTER CONVERSION name RENAME TO new_name

ALTER CONVERSION name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

ALTER CONVERSION name SET SCHEMA new_schema

参数说明

  1. name:现有的编码转换的名称,可以被模式修饰;
  2. new_name:新的编码转换的名称;
  3. new_owner:编码转换的新的所有者;
  4. new_schema:编码转换的新模式。

注意事项

用户需要拥有使用ALTER CONVERSION的权限。

范例

要把转换iso_8859_1_to_utf8重命名为latin1_to_unicode:

ALTER CONVERSION iso_8859_1_to_utf8 RENAME TO latin1_to_unicode;

要把转换iso_8859_1_to_utf8的所有者改成joe:

ALTER CONVERSION iso_8859_1_to_utf8 OWNER TO joe;

语法兼容

在 SQL 标准中没有ALTER CONVERSION语句。

相关语法

CREATE CONVERSIONDROP CONVERSION

  1. ALTER DATABASE

功能描述

修改数据库的属性,包括它的名称、所有者、连接数限制、对象隔离属性等。

语法格式

ALTER DATABASE name [ [ WITH ] option [ ... ] ]

这里 option 可以是:

    ALLOW_CONNECTIONS allowconn

    CONNECTION LIMIT connlimit

    IS_TEMPLATE istemplate

ALTER DATABASE name RENAME TO new_name

ALTER DATABASE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

ALTER DATABASE name SET TABLESPACE new_tablespace

ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT }

ALTER DATABASE name SET configuration_parameter FROM CURRENT

ALTER DATABASE name RESET configuration_parameter

ALTER DATABASE name RESET ALL

参数说明

  1. name:需要修改属性的数据库名称;
  2. allowconn:为false则数据库不可连接,为true则允许连接;
  3. connlimit:数据库可以接受的并发连接数,默认-l表示无限制;
  4. istemplate:为true则所有具有CREATEDB权限的用户都可以克隆这个数据库,为false则只有系统管理员可以克隆这个数据库;
  5. new_name:数据库的新名称;
  6. new_owner:数据库的新所有者;
  7. new_tablespace:数据库新的默认表空间,该表空间为数据库中已经存在的表空间;
  8. configuration_parameter

value

把指定的数据库会话参数值设置为给定的值,如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置;

范例

要在数据库中默认禁用索引扫描:

ALTER DATABASE gbasedbt SET enable_indexscan TO off;

ALTER DATABASE

语法兼容

ALTER DATABASE语句是一个PostgreSQL扩展。

相关语法

CREATE DATABASEDROP DATABASESETCREATE TABLESPACE

  1. ALTER DEFAULT PRIVILEGES

功能描述

设置默认访问权限(这不会影响分配到已有对象中的权限)。

语法格式

ALTER DEFAULT PRIVILEGES

    [ FOR { ROLE | USER } target_role [, ...] ]

    [ IN SCHEMA schema_name [, ...] ]

    abbreviated_grant_or_revoke

其中abbreviated_grant_or_revoke是下列之一:

GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }

    [, ...] | ALL [ PRIVILEGES ] }

    ON TABLES

    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

GRANT { { USAGE | SELECT | UPDATE }

    [, ...] | ALL [ PRIVILEGES ] }

    ON SEQUENCES

    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }

    ON FUNCTIONS

    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

GRANT { USAGE | ALL [ PRIVILEGES ] }

    ON TYPES

    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

GRANT { USAGE | CREATE | ALL [ PRIVILEGES ] }

    ON SCHEMAS

    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

REVOKE [ GRANT OPTION FOR ]

    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }

    [, ...] | ALL [ PRIVILEGES ] }

    ON TABLES

    FROM { [ GROUP ] role_name | PUBLIC } [, ...]

    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]

    { { USAGE | SELECT | UPDATE }

    [, ...] | ALL [ PRIVILEGES ] }

    ON SEQUENCES

    FROM { [ GROUP ] role_name | PUBLIC } [, ...]

    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]

    { EXECUTE | ALL [ PRIVILEGES ] }

    ON FUNCTIONS

    FROM { [ GROUP ] role_name | PUBLIC } [, ...]

    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]

    { USAGE | ALL [ PRIVILEGES ] }

    ON TYPES

    FROM { [ GROUP ] role_name | PUBLIC } [, ...]

    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]

    { USAGE | CREATE | ALL [ PRIVILEGES ] }

    ON SCHEMAS

    FROM { [ GROUP ] role_name | PUBLIC } [, ...]

    [ CASCADE | RESTRICT ]

参数说明

  1. target_role:已有角色的名称。如果省略FOR ROLE/USER,则缺省值为当前角色/用户;
  2. schema_name:现有模式的名称,target_role必须有schema_name的CREATE权限。
  3. role_name:被授予或者取消权限角色的名称。

注意事项

使用gsql的\ddp命令可以获得关于默认特权的现有分配信息。特权值的含义和GRANT下为\dp命令描述的相同。

如果想删除一个被赋予了默认权限的角色,有必要恢复改变的缺省权限或者使用DROPOWNED BY来为角色脱离缺省的权限记录。

范例

ALTER DEFAULT PRIVILEGES IN SCHEMA gbaseschema GRANT SELECT ON TABLES TO PUBLIC;

ALTER DEFAULT PRIVILEGES

语法兼容

在 SQL 标准中没有ALTER DEFAULT PRIVILEGES语句。

相关语法

GRANTREVOKE

  1. ALTER DOMAIN

功能描述

更改域的参数。

语法格式

ALTER DOMAIN name

    { SET DEFAULT expression | DROP DEFAULT }

ALTER DOMAIN name

    { SET | DROP } NOT NULL

ALTER DOMAIN name

    ADD domain_constraint [ NOT VALID ]

ALTER DOMAIN name

    DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ]

ALTER DOMAIN name

     RENAME CONSTRAINT constraint_name TO new_constraint_name

ALTER DOMAIN name

    VALIDATE CONSTRAINT constraint_name

ALTER DOMAIN name

    OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

ALTER DOMAIN name

    RENAME TO new_name

ALTER DOMAIN name

    SET SCHEMA new_schema

参数说明

  1. name:域的名称,可以被模式修饰;
  2. domain_constraint:新的域约束;
  3. constraint_name:待删除或重命名的现有的域约束的名称;
  4. NOT VALID:不为约束的合法性验证现有的数据;
  5. CASCADE:自动删除依赖于该约束的对象,以及依赖于那些对象的所有对象;
  6. RESTRICT:默认值,如果有任何依赖对象则拒绝删除该约束;
  7. new_name:新的域名称;
  8. new_constraint_name:约束的新名称;
  9. new_owner:域的新所有者的名称;
  10. new_schema:域的新模式;

注意事项

ALTER DOMAIN有几种形式:

  1. SET/DROP DEFAULT

设置或移除域的默认值,该变更只影响后续的INSERT命令,不影响现有行。

  1. SET/DROP NOT NULL

将域标记为是否允许NULL,只有当使用该域的列均不含空值时才能设置SET NOT NULL。

  1. ADD domain_constraint [ NOT VALID ]

为域增加新的约束,相当于CREATE DOMAIN。增加新约束时,该域中所有列都会根据新约束进行检查,NOT VALID选项可以规避该检查,新约束在可以使用ALTER DOMAIN ... VALIDATE CONSTRAINT变为可用约束。所有新的插入和更新的行均会按照约束进行检查。只有CHECK约束接受NOT VALID。

  1. DROP CONSTRAINT [ IF EXISTS ]

删除域约束。指定IF EXISTS则当约束不存在时,不报错仅提示。

  1. RENAME CONSTRAINT

修改域上约束的名称。

  1. VALIDATE CONSTRAINT

验证以NOT VALID增加的约束,验证该域的数据满足指定约束。

  1. OWNER

更改域所有者。

  1. RENAME

域重命名。

  1. SET SCHEMA

修改域模式,与该域关联的约束也会移动到新的模式中。

范例

ALTER DOMAIN us_postal_code SET NOT NULL;

ALTER DOMAIN

语法兼容

ALTER DOMAIN conforms to the SQL standard, except for the 除OWNER、RENAME、SET SCHEMA 以及VALIDATE CONSTRAINT变体之外(它们是 PostgreSQL的扩展), ALTER DOMAIN符合SQL标准。 ADD CONSTRAINT变体的NOT VALID子句也是一个 PostgreSQL扩展。

相关语法

CREATE DOMAINDROP DOMAIN

  1. ALTER EXTENSION

功能描述

修改扩展的参数。

语法格式

ALTER EXTENSION name UPDATE [ TO new_version ]

ALTER EXTENSION name SET SCHEMA new_schema

ALTER EXTENSION name ADD member_object

ALTER EXTENSION name DROP member_object

其中 member_object 是:

  ACCESS METHOD object_name |

  AGGREGATE aggregate_name ( aggregate_signature ) |

  CAST (source_type AS target_type) |

  COLLATION object_name |

  CONVERSION object_name |

  DOMAIN object_name |

  EVENT TRIGGER object_name |

  FOREIGN DATA WRAPPER object_name |

  FOREIGN TABLE object_name |

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

  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 |

  [ PROCEDURAL ] LANGUAGE object_name |

  SCHEMA object_name |

  SEQUENCE object_name |

  SERVER object_name |

  TABLE 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 |

  TYPE object_name |

  VIEW object_name

并且 aggregate_signature 是:

* |

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

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

参数说明

  1. name:已安装的扩展的名称;
  2. new_version:扩展的新版本号;
  3. new_schema:扩展的新模式;
  4. object_name | aggregate_name | function_name | operator_name:要从扩展中增加或移除的对象名称,可以是:表、聚集、域、外部表、函数、操作符、操作符类、操作符族、序列、文本搜索对象、类型和视图,可以被模式修饰;
  5. source_type:该转换的源数据类型的名称;
  6. target_type:转换的目标数据类型的名称;
  7. argmode:函数或聚集的模式,可选的参数为:IN、OUT、INOUT或者VARIADIC,默认为IN;
  8. argname:函数或聚集的名称;
  9. argtype:函数或聚集的数据类型;
  10. left_type | right_type:操作符参数的数据类型,可以被模式修饰;
  11. type_name:该转换的数据类型的名称;
  12. lang_name:该转换的语言的名称;

注意事项

ALTER EXTENSION更的几种形式:

  1. UPDATE

这种形式把该扩展更新到一个新版本,需要提供更新脚本。

  1. SET SCHEMA

将该扩展的对象移动到另一个模式中,要求该扩展是可重定位的。

  1. ADD member_object

将一个已有的对象加入到扩展中。

  1. DROP member_object

从扩展中移除一个成员对象。

范例

ALTER EXTENSION hstore SET SCHEMA gbaseschema;

ALTER EXTENSION

语法兼容

ALTER EXTENSION是一个PostgreSQL 扩展。

相关语法

CREATE EXTENSIONDROP EXTENSION

  1. ALTER FUNCTION

功能描述

更改一个函数的参数。

语法格式

ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]

    action [ ... ] [ RESTRICT ]

ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]

    RENAME TO new_name

ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]

    OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]

    SET SCHEMA new_schema

ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]

    DEPENDS ON EXTENSION extension_name

其中 action 是以下之一:

    CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT

    IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF

    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER

    PARALLEL { UNSAFE | RESTRICTED | SAFE }

    COST execution_cost

    ROWS result_rows

    SET configuration_parameter { TO | = } { value | DEFAULT }

    SET configuration_parameter FROM CURRENT

    RESET configuration_parameter

    RESET ALL

参数说明

  1. name:现有函数的名称,可以被模式修饰;
  2. argmode:函数参数的模式,取值范围:IN、OUT、INOUT或者VARIADIC,缺省为IN;
  3. argname:函数参数的名称,取值范围:字符串;
  4. argtype:函数参数的数据类型;
  5. new_name:该函数的新名称,要修改函数的所属模式,必须拥有新模式的CREATE权限;
  6. new_owner:该函数的新所有者,要修改函数的所有者,新所有者必须拥有该函数所属模式的CREATE权限;
  7. new_schema:函数的新模式;
  8. extension_name:该函数所依赖的扩展名;
  9. CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT:CALLED ON NULL INPUT表明该函数的某些参数是NULL的时候可以按照正常的方式调用,缺省时与指定此参数的作用相同。STRICT用于指定如果函数的某个参数是NULL,此函数总是返回NULL。如果声明了这个参数,则如果存在NULL参数时不会执行该函数;而只是自动假设一个NULL结果。RETURNS NULL ON NULL INPUT和STRICT的功能相同;
  10. IMMUTABLE | STABLE | VOLATILE:更改函数设置,详见CREATE FUNCTION
  11. [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER:函数权限设置,详见CREATE FUNCTION
  12. PARALLEL:表示该函数是否可以下推到DN上执行,详见CREATE FUNCTION
  13. LEAKPROOF:更改该函数是否被认为是防泄漏的,详见CREATE FUNCTION
  14. COST execution_cost:更改该函数的估计执行代价,详见CREATE FUNCTION
  15. ROWS result_rows:估计函数返回的行数,详见CREATE FUNCTION
  16. configuration_parameter | value:把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置,OFF关闭设置。取值范围:DEFAULT、OFF、RESET;
  17. RESTRICT:无意义参数。

注意事项

只有该函数的所有者,才有权限执行该命令,系统管理员默认拥有该权限。

范例

ALTER FUNCTION add(integer, integer) RENAME TO gadd;

ALTER FUNCTION

语法兼容

部分兼容SQL标准中的ALTER FUNCTION语句。SQL标准允许修改函数的更多属性,但不提供重命名、标记安全性、附加配置参数或更改所有者、模式或稳定性等功能。

相关语法

CREATE FUNCTIONDROP FUNCTION

  1. ALTER GROUP

功能描述

修改一个用户组的属性。

语法格式

ALTER GROUP role_specification ADD USER user_name [, ... ]

ALTER GROUP role_specification DROP USER user_name [, ... ]

其中 role_specification 可以是:

    role_name

  | CURRENT_USER

  | SESSION_USER

ALTER GROUP group_name RENAME TO new_name

参数说明

参考ALTER ROLE的参数说明。

注意事项

ALTER GROUP是ALTER ROLE的别名。

语法兼容

在 SQL 标准中没有ALTER GROUP语句。

相关语法

GRANTREVOKEALTER ROLE

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值