3.2.?更新数据

修改已经存储在数据库中的数据的行为叫做更新。你可以更新单个行,也可以更新表中所有的行,还可以更新其中的一部分行。 澳门游戏平台注册网站可以独立地更新每个列,而其他的列则不受影响。

要更新现有的行,使用UPDATE命令。这需要提供三部分信息:

  1. 表的名字和要更新的列名

  2. 列的新值

  3. 要更新的是哪(些)行

澳门游戏平台注册网站在第?2?章里说过,SQL 通常并不为行提供唯一标识符。因此澳门游戏平台注册网站无法总是直接指定需要更新哪一行。但是,澳门游戏平台注册网站可以通过指定一个被更新的行必须满足的条件。只有在表里面存在主键的时候(不管你声明它还是不声明它),澳门游戏平台注册网站才能可靠地通过选择一个匹配主键的条件来指定一个独立的行。图形化的数据库访问工具就靠这允许澳门游戏平台注册网站独立地更新某些行。

例如,这条命令把所有价格为5的产品的价格更新为10:

UPDATE products SET price = 10 WHERE price = 5;

这样做可能导致零行、一行或者更多行被更新。如果澳门游戏平台注册网站试图做一个不匹配任何行的更新,那也不算错误。

让澳门游戏平台注册网站仔细看看这个命令。首先是关键字UPDATE, 然后跟着表名字。和平常一样,表名字也可以是用模式限定的, 否则会从路径中查找它。然后是关键字SET, 后面跟着列名、一个等号以及新的列值。新的列值可以是劝拿庞蜗菲教ㄗ⒉嵬锯标量表达式, 而不仅仅是常量。例如,如果你想把所有产品的价格提高 10%,你可以用:

UPDATE products SET price = price * 1.10;

如你所见,用于新值的表达式也可以引用行中现有的值。澳门游戏平台注册网站还忽略了WHERE子句。如果澳门游戏平台注册网站忽略了这个子句, 那么就意味着表中的所有行都要被更新。如果出现了WHERE子句, 那么只有匹配它后面的条件的行被更新。请注意在SET子句中的等号是一个赋值, 而在WHERE子句中的等号是比较,不过这样并不会导致任何歧义。当然WHERE条件不一定非得是等值测试。许多其他操作符也都可以使用(参阅第?6?章)。但是表达式必须得出一个布尔结果。

你还可以在一个UPDATE命令中更新更多的列, 方法是在SET子句中列出更多赋值。例如:

UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0;

XML 地图 | Sitemap 地图