南大通用GBase8s 常用SQL语句(289)

为目标表声明别名

您可为目标表声明别名。该别名可引用本地或远程表、视图或同义词的完全符合条件的数据库对象。

别名是不注册在数据库的系统目录中的临时名称,仅在 UPDATE 语句正在运行时保持。

如果您声明作为别名的名称还是 UPDATE 语句的关键字,则您必须使用 AS 关键字来阐明语法:

UPDATE stock AS set

        SET unit_price = unit_price * 0.94;

下列 UPDATE 语句引用在目标子句中和在两个子查询中表的符合要求的名称:

UPDATE nmosdb@wnmserver1:test

        SET name=(SELECT name FROM test

        WHERE test.id = nmosdb@wnmserver1:test.id)

        WHERE EXISTS(

        SELECT 1 FROM test WHERE test.id = nmosdb@wnmserver1:test.id

        );

下一 UPDATE 语句在逻辑上等同于前一示例,但为符合条件的表名称声明 r_t 别名:

UPDATE nmosdb@wnmserver1:test r_t

        SET name=(SELECT name FROM test

        WHERE test.id = r_t.id)

        WHERE EXISTS(

        SELECT 1 FROM test WHERE test.id = r_t.id

        );

声明表别名会简化上述第二个示例的标记。

SET 子句

使用 SET 子句来标识要更新的列并将值指定给每一列。

SET 子句支持下列语法格式:

  1. 单列格式,它将每一列与单个表达式配对
  2. 多列格式,它将多列的列表与通过一个或多个表达式返回的值相关联

SET 子句

 

单列格式

使用单列格式来将一列与单个表达式配对。

单列格式

 

元素

描述

限制

语法

column

要被更新的列

不可为序列数据类型

标识符

collection_var

主变量或程序变量

必须声明作为集合数据类型

特定于语言

expression

column 返回一值

不可包含聚集函数

表达式

singleton _select

正好返回一行的子查询

返回的子查询值必须与 column 列表一一对应

SELECT 语句

您可使用此语法来更新有 ROW 数据类型的列。

您可包括任意数量的 "single column = single expression" 词语。expression 可为返回单个行的 SQL 子查询(括在圆括号之间),假如对应的 column 为可从子查询返回的行存储该值(或值的集合)的数据类型。

要在 SET 子句中指定 ROW 类型列的值,请参阅 更新 ROW 类型列。下列示例说明 SET 子句的单列格式。

UPDATE customer

   SET address1 = '1111 Alder Court', city = 'Palo Alto',

      zipcode = '94301' WHERE customer_num = 103;

UPDATE stock

   SET unit_price = unit_price * 1.07;

使用子查询来更新单列

您可以子查询返回的值更新在 SET 子句中指定的列。

UPDATE orders

          SET ship_charge =

          (SELECT SUM(total_price) * .07 FROM items

          WHERE orders.order_num = items.order_num)

          WHERE orders.order_num = 1001;

如果您正在更新表层级中的超级表,则 SET 子句不可包括引用子表的子查询。如果您正在更新表层级中的子表,则 SET 子句中的子查询可引用超级表,如果它仅引用超级表的话。也就是说,子查询必须使用 SELECT … FROM ONLY (supertable) 语法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值