更新和删除数据
Posted 霖行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新和删除数据相关的知识,希望对你有一定的参考价值。
更新和删除数据
本章介绍如何利用UPDATE和DELETE语句进一步操纵表数据。
更新数据
为了更新(修改)表中的数据,可以使用UPDATE语句。
UPDATE的两种用法:
- 更新表中特定行。
- 更新表中所有行。
不要省略WHERE子句 缺少WHERE子句的过滤,UPDATE将更新所有行。除非需要,不要省略WHERE子句。
UPDATE与安全 可以限制和控制UPDATE语句的使用。
UPDATE语句非常简单,它由三部分组成:
- 要更新的表。
- 要更新的列和新的列值。
- 要更新行的过滤条件。
更新客户10005的电子邮箱地址:
mysql> UPDATE customers
-> SET cust_email = 'elmer@fudd.com'
-> WHERE cust_id = 10005;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
UPDATE语句以要更新的表名开始。SET命令将新值赋给要更新的列。WHERE子句告诉MySQL要更新哪一行。没有WHERE子句,将更新所有行的邮箱地址,这不是我们想要的。
更新多个列:
mysql> UPDATE customers
-> SET cust_name = 'The Fudds',
-> cust_email = 'elmer@fudd.com'
-> WHERE cust_id = 10005;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
更新多个列,只需要使用单个SET命令,每个更新的列和新列值间用逗号分隔(最后一列不用逗号)。
- 在UPDATE语句中使用子查询 UPDATE语句中可以使用子查询(MySQL必知必会——第十四章使用子查询),使用SELECT语句检索出的数据更新列数据。
- IGNORE关键字 如果用UPDATE语句更新多行时发生错误,那整个UPDATE操作将被取消(数据回滚至执行语句前)。可以使用IGNORE关键字,即使个别行发生错误,合法行也会继续更新。
使用示范:UPDATE IGNORE customers
为了删除某个列的值,可以把它设置成NULL(如果允许):
mysql> UPDATE customers
-> SET cust_email = NULL
-> WHERE cust_id = 10005;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
删除数据
为了删除数据,可以使用DELETE语句。
使用DELETE语句的两种方式:
- 从表中删除特定行。
- 从表中删除所有行。
不要省略WHERE子句 缺少WHERE子句的过滤,DELETE将删除所有行。除非需要,不要省略WHERE子句。
DELETE与安全 可以限制和控制DELETE语句的使用。
DELETE语句比UPDATE语句更为简单:
mysql> DELETE FROM customers
-> WHERE cust_id = 10006;
Query OK, 1 row affected (0.01 sec)
此语句删除客户10006的数据。DELETE FROM要求指定要删除数据的表名。WHERE子句过滤要删除的行。若省略WHERE子句,将删除customers表中所有行。
DELETE不需要列名或通配符。DELETE删除整行而不是删除列。为了删除指定列,请使用UPDATE语句。
- 删除表的内容而不是表 DELETE语句从表中删除行,但DELETE不删除表本身。
- 更快的删除 如果想删除表中所有行,可以使用TRUNCATE TABLE语句。它完成相同的工作,但速度更快。原理:销毁原来的表,再重新创建一个表。它不需要逐行删除数据。
更新和删除的指导原则
使用更新和删除的良好习惯:
- 除非更新和删除每一行,否则绝对不要省略WHERE子句。
- 保证每个表都有主键(MySQL必知必会——第十五章联结表),WHERE子句尽可能多用主键进行过滤。
- 对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证要更新或删除的行是我们需要的。
- 使用强制实施引用完整性的数据库(MySQL必知必会——第十五章联结表),这样MySQL将不允许删除具有与其他表相关联的数据的行。
小心使用 MySQL没有撤销(undo)按钮。应该非常小心地使用UPDATE和DELETE,否则出现错误会很难受。
以上是关于更新和删除数据的主要内容,如果未能解决你的问题,请参考以下文章