SQL 必知必会第十六课 更新和删除数据
## 更新数据
SET SQL_SAFE_UPDATES = 0; -- 首先关闭安全模式
-- 更新一行
update Customers
set cust_email = 'kim@thetoystore.com'
where cust_id = 1000000005;
update customers
set cust_contact = 'Sam Roberts',
cust_email = 'sam@toyland.com'
where cust_id = 1000000006;
update customers
set cust_email = null
where cust_id = 1000000005;
## 删除数据
delete from customers
where cust_id = 1000000006;
## challenges
update Customers,vendors
set cust_state = upper(cust_state)
and vend_state = upper(vend_state); -- 1
delete from customers
where cust_id = 1000000007; -- 2
注意点
-
使用之前要关闭mysql的安全模式
-
update里面是可以使用子查询和from
-
若想删除表内的所有行,可以使用truncate table,速度更快
更新和删除的指导原则
- 除非确实打算更新和删除每一行,否则不雅绝对不要使用不带where子句的update或delete子句
2.保证每个表都有主键,尽可能像where子句那样使用它
-
在update或delete与句使用where子句前,应该先用select进行测试,保证它过滤的是正确的记录,以防编写的where子句不正确
-
使用强制实施引用完整性的数据库,这样DBMS将不允许删除其数据与其他表相关联的行
-
有的DBMS允许数据库管理员施加约束,防止执行不带where子句的update或delete子句