UPDATE 和 DELETE 语句
在上一章中讲到了,新增、删除和修改都需要更高的权限,因为这些操作都涉及到原数据的变化。
-
使用 UPDATE 或 DELETE 时需要遵循的重要原则
1、除非确实打算更新和删除每一行,否则绝对不要使用不带 WHERE 子句 的 UPDATE 或 DELETE 语句。 2、保证每个表都有主键,尽可能 像 WHERE 子句那样使用它(可以指定各主键、多个值或值的范围)。
3、在 UPDATE 或 DELETE 语句使用 WHERE 子句前,应该先用 SELECT 进行测试,保证它过滤的是正确的记录,以防编写的 WHERE 子句不正确。
4、使用强制实施引用完整性的数据库, 这样 DBMS将不允许删除其数据与其他表相关联的行。
(引用完整性表示 DBMS强制实施数据完整性规则。这些规则一般由提供了界 面的 DBMS管理)
5、有的 DBMS 允许数据库管理员施加约束,防止执行不带 WHERE 子句 的 UPDATE 或 DELETE 语句。如果所采用的 DBMS支持这个特性,应该使用它。
更新数据
更新数据的时候,要注意的是条件判断一定要准确,因为稍不注意,就会更新表中的不相关的行甚至是所有行。这在生成环境将是灾难性的
SQL格式:
UPDATE 表名
SET “列=值”,“列=值”
WHERE 过滤条件
1、更新表中的特定行
比如,我们更新订单编号为20180910001订单的商品单价和购买商品数量
update oderlist_new
set quantity = 11, item_price = 9.0
where orderNo = '20180910001'
![](https://img.haomeiwen.com/i5332977/5441ca83ef7abd6a.png)
![](https://img.haomeiwen.com/i5332977/8df9ab4679de5e1f.png)
2、更新表中的所有行
没有where 条件限制,比如我们可以把所有商品的单价都更新为4.0
update oderlist_new
set item_price = 4.0
![](https://img.haomeiwen.com/i5332977/f8f6a9d14433a55a.png)
![](https://img.haomeiwen.com/i5332977/ba8e35f1fe6c23ea.png)
-
补充:
UPDATE 语句中可以使用子查询,使得能用 SELECT 语句检索出的数据 更新列数据。
删除数据
同样的 ,删除数据的时候,也要注意条件判断的准确性,因为稍不注意,就会删除表中的不相关的行甚至是所有行。这在生成环境将是灾难性的,尤其是在哪些没有撤销操作的DBMS中。
SQL格式:
DELETE FROM 表名
WHERE 判断条件
1、删除表中的特定行
delete from oderlist_new
where orderNo = '20180910001'
![](https://img.haomeiwen.com/i5332977/2228e0c907da1a0e.png)
2、删除表中的所有行
一般情况下这种操作是不允许的
delete from oderlist_new
但这种方法在SQLite 中无法将递增数归零,比如自增主键id。
在SQLite 中如果要将递增数归零,可以使用以下方法:
DELETE FROM sqlite_sequence WHERE name = 'table_name';
当 SQLite 数据库中包含自增列时,会自动建立一个名为 sqlite_sequence 的表。这个表包含两个列:name 和 seq。name 记录自增列所在的表,seq 记录当前序号(下一条记录的编号就是当前序号加 1)。如果想把某个自增列的序号归零,只需要修改 sqlite_sequence 表就可以了。
UPDATE sqlite_sequence SET seq = 0 WHERE name = 'table_name';
网友评论