将列更新为 NULL
当您使用 UPDATE 语句时,请使用 NULL 关键字来修改列值。例如,对于其先前的地址需要两个地址行但现在仅需要一个的客户,您可以使用下列条目:
UPDATE customer
SET address1 = '123 New Street',
SET address2 = null,
city = 'Palo Alto',
zipcode = '94303'
WHERE customer_num = 134;
两次更新同一列
您可在 SET 子句中指定同一列一次以上。如果您这么做,则将该列设置为您为该列指定的最后的值。在下一示例中,fname 列在 SET 子句中出现两次。对于客户编号为 101 的行,用户先将 fname 设置为 gary 然后又设置为 harry。在该 UPDATE 语句执行之后,fname 的值为 harry。
UPDATE customer
SET fname = "gary", fname = "harry"
WHERE customer_num = 101;
多列格式
使用 SET 子句的多列格式来罗列多个列并将它们设置等于相应的表达式。
多列格式
元素 | 描述 | 限制 | 语法 |
column | 要被更新的列的名称 | 不可为序列类型或 ROW 类型。column 名称的数目必须等于返回到 = 号右边的值的数目。 | 标识符 |
expression | 为 column 返回值的表达式 | 不可包括聚集函数 | 表达式 |
singleton_select | 正好返回一行的子查询 | 子查询返回的值必须对应于 column 列表中的列 | SELECT 语句 |
SPL function | 返回一个或多个值的 SPL 例程 | 返回的值必须与 column 列表中的列一一对应 | 标识符 |
SET 子句的多列格式为罗列您想要更新的列的集合提供下列选项:
您必须显式地罗列每一表达式,在表达式之间放置逗号(,)分隔符,并将表达式的集合括在圆括号之间。列的数目必须等于表达式列表所返回的值的数目,除非该表达式列表包括一 SQL 子查询。
下列示例展示 SET 子句的多列格式:
UPDATE customer
SET (fname, lname) = ('John', 'Doe') WHERE customer_num = 101;
UPDATE manufact
SET * = ('HNT', 'Hunter') WHERE manu_code = 'ANZ';