4-3.数据的更新(UPDATE语句的使⽤⽅法)
null官方更新地址UPDATE语句的基本语法
使⽤ INSERT 语句向表中插⼊数据之后,有时却想要再更改数据,例如“将商品销售单价登记错了”等的时候。这时并不需要把数据删除之后再重新插⼊,使⽤ UPDATE 语句就可以改变表中的数据了。
和 INSERT 语句、DELETE 语句⼀样,UPDATE 语句也属于 DML 语句。通过执⾏该语句,可以改变表中的数据。
改变表中数据的UPDATE语句
将更新对象的列和更新后的值都记述在 SET ⼦句中。我们还是以 Product(商品)表为例,
接下来,让我们尝试把 regist_date 列(登记⽇期)的所有数据统⼀更新为“2009-10-10”。具体的 SQL 语句请参见下列代码清单
表中的数据有何变化呢?我们通过 SELECT 语句来确认⼀下吧。
此时,连登记⽇期原本为 NULL 的数据⾏(运动 T 恤)的值也更新为 2009-10-10 了。
指定条件的UPDATE语句(搜索型UPDATE)
接下来,让我们看⼀看指定更新对象的情况。更新数据时也可以像 DELETE 语句那样使⽤ WHERE ⼦句,这种指定更新对象的 UPDATE 语句称为搜索型 UPDATE 语句。该语句的语法如下所⽰(与 DELETE 语句⼗分相似)。
更新部分数据⾏的搜索型UPDATE
例如,将商品种类(product_type)为厨房⽤具的记录的销售单价(sale_price)更新为原来的 10 倍,请参见下列代码清单。
将商品种类为厨房⽤具的记录的销售单价更新为原来的10倍
我们可以使⽤如下 SELECT 语句来确认更新后的内容。
该语句通过 WHERE ⼦句中的“product_type = '厨房⽤具'” 条件,将更新对象限定为 3 ⾏。然后通过 SET ⼦句中的表达式 sale_ price * 10,将原来的单价扩⼤了 10 倍。SET ⼦句中赋值表达式的右边不仅可以是单纯的值,还可以是包含列的表达式。
使⽤NULL进⾏更新
使⽤ UPDATE 也可以将列更新为 NULL(该更新俗称为 NULL 清空)。此时只需要将赋值表达式右边的值直接写为 NULL 即可。例如,我们可以将商品编号(product_id)为 0008 的数据(圆珠笔)的登记⽇期(regist_date)更新为 NULL。
将商品编号为0008的数据(圆珠笔)的登记⽇期更新为NULL
和 INSERT 语句⼀样,UPDATE 语句也可以将 NULL 作为⼀个值来使⽤。
但是,只有未设置 NOT NULL 约束和主键约束的列才可以清空为 NULL。如果将设置了上述约束的列更新为 NULL,就会出错,这点与INSERT 语句相同。
使⽤UPDATE语句可以将值清空为NULL(但只限于未设置NOT NULL约束的列)。
多列更新
UPDATE 语句的 SET ⼦句⽀持同时将多个列作为更新对象。例如我们刚刚将销售单价(sale_price)更新为原来的 10 倍,如果想同时将进货单价(purchase_price)更新为原来的⼀半,该怎么做呢?
⽅法①:
⽅法②:
执⾏上述两种 UPDATE 语句,都可以得到相同的结果:只有厨房⽤具的销售单价(sale_price)和进货单价(purchase_price)被更新了。
当然,SET ⼦句中的列不仅可以是两列,还可以是三列或者更多。
需要注意的是第⼀种⽅法——使⽤逗号将列进⾏分隔排列,这⼀⽅法在所有的DBMS中都可以使⽤。但是第⼆种⽅法——将列清单化,这⼀⽅法在某些DBMS中是⽆法使⽤的。因此,实际应⽤中通常都会使⽤第⼀种⽅法。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论