第16课 更新和删除数据

第16课 更新和删除数据
这一课介绍如何利用UPDATE和DELETE语句进一步操作数据。
16.1更新数据
使用UPDATE的两种方式:
1、更新表中的特定行
2、更新表中的所有行
注意:不要省略 WHERE 子句
在使用 UPDATE 时一定要细心。因为稍不注意,就会更新表中的所有行。使用这条语句前,请完整地阅读本节。
 
基本的 UPDATE 语句由三部分组成,分别是:
 要更新的表;
 列名和它们的新值;
 确定要更新哪些行的过滤条件。
举一个简单例子。客户 1000000005 现在有了电子邮件地址,因此他的记录需要更新,语句如下:
UPDATE Customers
SET cust_email = 'kim@thetoystore.com'
WHERE cust_id = '1000000005';
 
在更新多个列时,只需要使用一条 SET 命令,每个“列=值”对之间用逗号分隔(最后一列之后不用逗号)。
UPDATE Customers
SET cust_contact = 'Sam Roberts',
cust_email = 'sam@toyland.com'
WHERE cust_id = '1000000006';
 
要删除某个列的值,可设置它为 NULL
UPDATE Customers
SET cust_email = NULL
WHERE cust_id = '1000000005';
 
提示:在 UPDATE 语句中使用子查询
UPDATE 语句中可以使用子查询,使得能用 SELECT 语句检索出的数据更新列数据。关于子查询及使用的更多内容,请参阅第 11 课。
 
提示:FROM 关键字
有的 SQL 实现支持在 UPDATE 语句中使用 FROM 子句,用一个表的数据更新另一个表的行。如想知道你的 DBMS 是否支持这个特性,请参阅它的文档。
 
16.2 删除数据
从一个表中删除(去掉)数据,使用 DELETE 语句。有两种使用 DELETE的方式:
 从表中删除特定的行;
 从表中删除所有行。
注意:不要省略 WHERE 子句
在使用 DELETE 时一定要细心。因为稍不注意,就会错误地删除表中所有行。在使用这条语句前,请完整地阅读本节。
 
提示:DELETE 与安全
在客户端/服务器的 DBMS 中,使用 DELETE 语句可能需要特殊的安全权限。在你使用 DELETE 前,应该保证自己有足够的安全权限。
DELETE FROM Customers
WHERE cust_id = '1000000006';
 
说明:删除表的内容而不是表
DELETE 语句从表中删除行,甚至是删除表中所有行。但是,DELETE不删除表本身。
 
提示:更快的删除
如果想从表中删除所有行,不要使用 DELETE。可使用 TRUNCATE TABLE语句,它完成相同的工作,而速度更快(因为不记录数据的变动)。
 
 
16.3 更新和删除的指导原则
下面是许多 SQL 程序员使用 UPDATE 或 DELETE 时所遵循的重要原则。
 除非确实打算更新和删除每一行,否则绝对不要使用不带 WHERE 子句的 UPDATE 或 DELETE 语句。
 保证每个表都有主键(如果忘记这个内容,请参阅第 12 课),尽可能像 WHERE 子句那样使用它(可以指定各主键、多个值或值的范围)。
 在 UPDATE 或 DELETE 语句使用 WHERE 子句前,应该先用 SELECT 进行测试,保证它过滤的是正确的记录,以防编写的 WHERE 子句不正确。
 使用强制实施引用完整性的数据库(关于这个内容,请参阅第 12 课),这样 DBMS 将不允许删除其数据与其他表相关联的行。
 有的 DBMS 允许数据库管理员施加约束,防止执行不带 WHERE 子句的 UPDATE 或 DELETE 语句。如果所采用的 DBMS 支持这个特性,应该使用它。
若是 SQL没有撤销(undo)按钮,应该非常小心地使用 UPDATE 和 DELETE,否则你会发现自己更新或删除了错误的数据。
posted @ 2022-06-28 06:26  lqsj2018  阅读(49)  评论(0编辑  收藏  举报