- 前言
- 1.更新数据
- 2.删除数据
前言
上一章讲了怎么向表中插入数据,本文接着讲怎么更新数据和删除数据。学习本章前可以先学习上一章内容:mysql系列(四)插入数据,或者向你的数据库依次导入两个sql脚本:student.sql 和 insert.sql
1.更新数据
更新数据使用UPDATE语句,可以更新表中特定的行,也可以更新所有的行。注意不要省略WHERE子句,因为这样会更新表中的所有数据。
UPDATE语句非常容易使用,基本的UPDATE语句由三部分组成,分别是:
- 要更新的表
- 列名和他们的新值
- 确定要更新行的过滤条件
UPDATE t_student SET student_name="张三丰" WHERE id= 1;
可以看到id=1的student_name列已经改为“张三丰”了:
更新多个列时,只需要用逗号分隔 列=值 组合:
UPDATE t_student SET student_name="张三",age=20 WHERE id= 1;
运行以上sql语句后,如图可以看到这两个列已经改变了:
- UPDATE中可以使用子查询
- 为了删除某个列值,可以设置它为NULL(假如表定义允许NULL值)
- 使用UPDATE更新多行时,如果有一行发生错误,则整个UPDATE操作被取消。如果想即使发生错误也继续更新,可以使用IGNORE关键字。
2.删除数据
为了从一个表中删除数据,使用DELETE子句。可以删除表中特定的行,也可以删除所有行。
不要省略WHERE子句,否则将删除所有行。
DELETE FROM t_student WHERE student_name="张三";
运行以上sql语句后,如图可以看到student_name=”张三”的行已经没有了:
- 删除表的内容而不是表:DELETE语句从表中删除行甚至是所有行,但是不包括表本身。
- 更快的删除:如果想从表中删除所有行,可以使用TRUNCATE TABLE语句。它比DELETE速度更快,同样也能完成删除所有行的操作。(TRUNCATE实际上是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)
更新或者删除的指导原则:
- 除非确实打算删除或者更新所有行,否则绝对不要使用不带WHERE子句的UPDATE或者DELETE语句。
- 保证每个表都有主键。
- 先用SELECT进行测试,保证过滤的是正确的记录,以防编写的WHERE子句不正确。
- 使用强制实施引用完整性的数据库,这样的MySQL将不允许删除具有与其他表相关联的数据的行。