应用数据库中的数据经常需要更新,UPDATE语句可以用来更新数据库的记录,一次可以修改一行或多行记录数据,也可以修改特定记录数据。
使用UPDATE命令方式修改数据库表的数据。
UPDATE命令语句语法规则,如示例代码4-14所示。
参数说明:
table_name:需要修改数据表的名称。
view_name:需要修改数据视图的名称。通过view_name来引用的视图必须是可更新的。
SET:指定要修改的列或变量名称的列表。
column_name={EXPRESSION | DEFAULT |NULL}由表达式的值、默认值或空值去修改指定的列值。
@variable=expression:将变量的值修改成表达式的值,变量是已经声明的变量。
@variable=column=expression:将变量和列的值修改成表达式的值,变量为已经声明的变量。
FROM {<table_source>:指定用表作为更新操作的数据源。
WHERE <search-condition>:指明只对满足条件的行进行修改,若省略该子句则对表中所有行作修改。
WHERE CURMENT OF:表明修改在指定游标的当前位置进行。
cursor_variable_name:游标变量名称。
1.更新数据库表中所有的行
假如需要修改电子商城购物系统的customer表中的CusPassWord为统一的初始密码“999999”,那么需要更新“客户信息表”中的所有数据行中的“客户密码字段”。
打开“新查询编辑器窗口”,输入SQL:UPDATE语句,然后点击工具栏命令按钮,执行成功,所有记录行被修改,示例代码如4-15,执行结果如图4-9所示。
图4-9 修改数据库表中所有记录
我们从修改的结果发现,customer表中所有记录的CusPassWord字段都被修改为“999999”。(www.xing528.com)
2.更新数据库表中特定的行
所谓更新表中特定的行,是指按特定条件更新数据库表中的符合查询条件的数据行。此时,需要修改的数据行只是特定行数据,所以我们需要用“WHERE”条件来限定访问的数据结果集。
假如需要修改电子商城购物系统的customer表中CusID为“1006”的CusPassWord为“888888”。
打开“新查询编辑器窗口”,输入SQL:UPDATE语句,然后点击工具栏命令按钮,执行成功,特定记录行被修改,示例代码如4-16,执行结果如图4-10所示。
图4-10 修改特定数据行的数据
3.更新数据库表中多个数据列
更新数据库表中的数据,有时需要同时修改多个字段的数据值。例如,客户居住地的变更,客户地址、邮政编码、固定联系电话等信息也需要作相应的变更;又如,向银行存入现金(存款),不仅需要修改账户的余额,还需要修改最后一次存款或取款的日期。
假如,需要修改电子商城购物系统的customer表中CusID为“1006”的CusPassWord为密码“888888”,而且还需要修改Address为“河南”。
打开“新查询编辑器窗口”,输入SQL:UPDATE语句,然后点击工具栏命令按钮,执行成功,特定记录行的指定字段被修改,示例代码如4-17,执行结果如图4-11所示。
图4-11 修改多个数据列
4.更新主键列等含有约束的列数据值
在对数据库数据作修改时,如果UPDATE语句违反了完整性约束,则不会进行更新并将显示一条错误消息。这里将介绍因约束的原因导致数据库记录修改失败的主要情况:
(1)如果被添加的一个值是错误的数据类型,或者如果违反了所涉及的某个列或数据类型定义的约束,则将不会进行更新。
(2)如果表中的主键没有被其他表的外键相关联,或已经关联但是主表主键列值没有被外键引用,或从表有数据,但外键列值为空,只要满足主键列数据值被修改后不为空,且唯一,主键列值就可被修改成功,否则报错,修改不成功。如果表中的主键已经被其他表的外键相关联,且主表主键列值已被引用,此时修改主键值将报错,修改不成功。
(3)如果表中的唯一约束没有被其他表的外键相关联,或已经关联但是主表唯一约束列值没有被外键引用,或从表有数据,但外键列值为空,只要满足唯一约束的条件:列数据值被修改后仍唯一,建立了唯一约束的列值就可被修改成功,否则报错,修改不成功。如果表中的唯一约束列已经被其他表的外键相关联,且主表唯一列值已被引用,此时修改主键值将报错,修改不成功。
(4)如果CHECK约束的列的列值被修改,但用来修改的数据不满足CHECK约束条件,则修改时报错,修改不成功。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。