UPDATE和DELETE语句。
更新数据
UPDATE语句由3部分组成:
- 要更新的表;
- 列名和他们的新值;
- 确定要更新行的过滤条件。
例:客户10005现在有了电子邮件地址,更新记录:
UPDATE customers
SET cust_email = 'elmer@fudd.com'
WHERE cust_id = 10005;
UPDATE语句以WHERE子句结束,如果没有会更新所有行。
更新多个行:
UPDATE customers
SET cust_name = 'The Fudds',
cust_email = 'elmer@fudd.com'
WHERE cust_id = 10005;
- UPDATE语句可以使用子查询;
- IGNORE关键字:如果更新多条时一条出错操作会整个被取消;为即使发生错误也继续进行更新:
UPDATE IGNORE customers...
。
如果要删除某列,可设置其为NULL:
UPDATE customers
SET cust_email = NULL
WHERE cust_id = 10005;
删除数据
例:从customers表中删除一行:
DELETE FROM customers
WHERE cust_id = 10006;
DELETE不需要列名或通配符。删除整行而不是整列。
更新和删除的指导原则
- 除非确实打算更细和删除每一行,否则绝对不要使用不带WHERE子句的UPDATE和DELETE语句;
- 保证每个表都有主键;
- 在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录;
- 使用强制实施引用完整性的数据库(见chapter15),这样MySQL将不允许删除具有与其他表相关联的数据的行。