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

  1. DECLARE

功能描述

定义一个游标。

语法格式

DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]

    CURSOR [ { WITH | WITHOUT } HOLD ] FOR query

参数说明

  1. name:要创建的游标的名称;
  2. BINARY:使游标返回二进制数据而不返回文本格式数据;
  3. INSENSITIVE:从游标中检测的数据不受其底层表上数据更新的影响;
  4. SCROLL | NO SCROLL:SCROLL表示游标可以用非顺序(例如反向)的方式进行检索,NO SCROLL表示游标只能以顺序的方式从进行检索;
  5. WITH HOLD | WITHOUT HOLD:WITH HOLD表示游标在创建它的事务提交后还可以继续使用,WITHOUT HOLD表示不能在创建它的事务之外使用,默认值为WITHOUT HOLD;
  6. query:提供该游标返回的SELECT或者VALUES命令;

注意事项

关键词BINARY、INSENSITIVE和SCROLL可以以任意顺序出现。

游标命令需要在事务之间被指定,只有使用了WITH HOLD的游标可以保留至事务提交后,其余游标均在事务提交时移除。

当查询包括FOR UPDATE或FOR SHARE时,不能指定WITH HOLD。

当查询包括FOR UPDATE或FOR SHARE时,不能指定 SCROLL。

可以通过查询pg_cursors系统视图可以看到所有可用的游标。

范例

DECLARE dc_customer CURSOR FOR SELECT * FROM customer;

DECLARE CURSOR

语法兼容

SQL标准只允许在嵌入式SQL和模块中使用游标。PostgreSQL允许以交互的方式使用游标。

相关语法

CLOSE,FETCH,MOVE

  1. DELETE

功能描述

从指定的表里删除行。

语法格式

[ WITH [ RECURSIVE ] with_query [, ...] ]

DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ]

    [ USING using_list ]

    [ WHERE condition | WHERE CURRENT OF cursor_name ]

    [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]

参数说明

  1. with_query:GBase 8c暂不支持。用于声明一个或多个可以在主查询中通过名字引用的子查询,相当于临时表;
  2. table_name:目标表的名字,可以被模式修饰;
  3. alias:目标表的别名;
  4. using_list:using子句;
  5. condition:一个返回boolean值的表达式,用于判断哪些行需要被删除;
  6. cursor_name:要在WHERE CURRENT OF情况中使用的游标的名称;
  7. output_expression:DELETE命令删除行之后计算输出结果的表达式,该表达式可以使用表的任意字段,可以使用*返回被删除行的所有字段;
  8. output_name:字段的输出名称。

注意事项

要删除表中的数据,用户必须对它有DELETE权限。同样也必须有USING子句引用的表以及condition上读取的表的SELECT权限。

范例

DELETE FROM customer WHERE id=9;

DELETE 1

语法兼容

这个命令符合SQL标准,USING和RETURNING子句以及在DELETE中使用WITH是PostgreSQL扩展。

相关语法

TRUNCATE

  1. DISCARD

功能描述

丢弃会话状态。

语法格式

DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP }

参数说明

  1. PLANS:释放所有已缓存的查询计划,强制在下一次使用相关预备语句时重新做计划。
  2. SEQUENCES:丢弃所有已缓存的序列相关的状态,包括currval()/lastval()信息以及任何还未被nextval()返回的预分配的序列值(预分配序列值的描述请见CREATE SEQUENCE);
  3. TEMPORARY | TEMP:删除当前会话中创建的所有临时表;
  4. ALL:释放与当前会话相关的所有临时资源并且把会话重置为初始状态。

注意事项

DISCARD ALL不能在事务内执行。

范例

DISCARD ALL;

DISCARD ALL

语法兼容

DISCARD是一种 PostgreSQL扩展。

  1. DO

功能描述

执行匿名代码块。

代码块被看做是没有参数的一段函数体,返回值类型是void。它的解析和执行是同一时刻发生的。

语法格式

DO [ LANGUAGE lang_name ] code

参数说明

  1. code:程序语言代码可以被执行的,程序语言必须指定为字符串;
  2. lang_name:用来解析代码的程序语言的名字,如果缺省,默认的语言是plpgsql;

注意事项

程序语言在使用之前,必须通过命令CREATE LANGUAGE安装到当前的数据库中。 plpgsql是默认的安装语言,其它语言安装时必须指定。

如果语言是不受信任的,用户必须有使用程序语言的USAGE权限,或者是系统管理员。

范例

授予用户gbasedbt对模式public下视图的所有操作权限:

DO $$DECLARE r record;

BEGIN

    FOR r IN SELECT table_schema, table_name FROM information_schema.tables

             WHERE table_type = 'VIEW' AND table_schema = 'public'

    LOOP

        EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO gbasedbt';

    END LOOP;

END$$;

DO

语法兼容

SQL 标准中没有DO语句。

相关语法

CREATE LANGUAGE

  1. DROP ACCESS METHOD

功能描述

移除一种访问方法。

语法格式

DROP ACCESS METHOD [ IF EXISTS ] name [ CASCADE | RESTRICT ]

参数说明

  1. IF EXISTS:如果访问方法不存在,不报错仅提示;
  2. name:现有的访问方法的名称;
  3. CASCADE:自动删除依赖于该访问方法的对象(例如操作符类、操作符族以及索引),以及所有依赖于那些对象的对象;
  4. RESTRICT:如果有任何对象依赖于该访问方法,则拒绝删除,此为默认设置。

注意事项

只有系统管理员能够删除访问方法。

范例

DROP ACCESS METHOD heptree;

语法兼容

DROP ACCESS METHOD是一种PostgreSQL扩展。

相关语法

CREATE ACCESS METHOD

  1. DROP AGGREGATE

功能描述

移除一个聚集函数。

语法格式

DROP AGGREGATE [ IF EXISTS ] name ( aggregate_signature ) [, ...] [ CASCADE | RESTRICT ]

这里aggregate_signature是:

* |

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

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

参数说明

  1. IF EXISTS:如果该聚集函数不存在不报错,仅提示;
  2. name:现有聚集函数的名称,可以被模式修饰;
  3. argmode:参数的模式,可选的参数:IN或VARIADIC,缺省默认为IN;
  4. argname:参数的名称,无意义,可省略;
  5. argtype:聚集函数的输入的数据类型。无参数的聚集函数,直接标*。引用有序集聚聚集函数,在直接参数说明和聚集参数说明之间加ORDER BY;
  6. CASCADE:自动删除依赖于该聚集函数的对象(例如视图),以及所有依赖于那些对象的对象;
  1. RESTRICT:如果有任何对象依赖于该聚集函数,则拒绝删除,此为默认设置。

范例

DROP AGGREGATE sum2(integer);

DROP AGGREGATE

语法兼容

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

相关语法

ALTER AGGREGATECREATE AGGREGATE

  1. DROP CAST

功能描述

移除一个转换。

语法格式

DROP CAST [ IF EXISTS ] (source_type AS target_type) [ CASCADE | RESTRICT ]

参数说明

  1. IF EXISTS:如果该转换不存在不报错仅提示;
  2. source_type:该转换的源数据类型的名称;
  3. target_type:该转换的目标数据类型的名称;
  4. CASCADE | RESTRICT:转换没有依赖关系,这些关键词无意义。

注意事项

要删除转换,必须为源数据类型和目标数据类型的所有者。

范例

DROP CAST (text AS int);

语法兼容

DROP CAST命令符合SQL标准。

相关语法

CREATE CAST

  1. DROP COLLATION

功能描述

移除一个排序规则。

语法格式

DROP COLLATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]

参数说明

  1. IF EXISTS:如果该排序规则不存在,不报错仅提示;
  2. name:排序规则的名称,可以被模式修饰;
  1. CASCADE:自动删除依赖于该排序规则的对象,以及所有依赖于那些对象的对象;
  1. RESTRICT:如果有任何对象依赖于该排序规则,则拒绝删除,此为默认设置。

注意事项

要删除一个排序规则,必须是该规则的所有者。

范例

DROP COLLATION german1;

DROP COLLATION

语法兼容

除了IF EXISTS选项之外,DROP COLLATION命令符合SQL标准。IF EXISTS是一个PostgreSQL扩展。

相关语法

ALTER COLLATIONCREATE COLLATION

  1. DROP CONVERSION

功能描述

移除一个编码转换。

语法格式

DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRICT ]

参数说明

  1. IF EXISTS:如果该转换不存在,不报错仅提示;
  2. name:转换的名称,可以被模式修饰;
  3. CASCADE | RESTRICT:转换没有依赖关系,这些关键词无意义。

注意事项

要删除一个编码转换,必须是其拥有者。

范例

DROP CONVERSION myconv;

语法兼容

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

相关语法

ALTER CONVERSIONCREATE CONVERSION

  1. DROP DATABASE

功能描述

删除一个数据库。

语法格式

DROP DATABASE [ IF EXISTS ] name

参数说明

  1. IF EXISTS:如果该数据库不存在,不报错仅提示;
  2. name:要移除的数据库的名称。

注意事项

只有数据库管理员有权限移除数据库。

移除数据库时,会删除该数据库的系统目录及目录文件,且该操作不可撤销,请谨慎处理。

DROP DATABASE不能在事务内执行,且不能在连接到该数据库时执行。

范例

DROP DATABASE gbasedbt;

DROP DATABASE

语法兼容

SQL标准中没有DROP DATABASE语句。

相关语法

ALTER DATABASECREATE DATABASE

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值