MySQL快速回顾:更新和删除操做

前提要述:参考书籍《MySQL必知必会》mysql

6.1 更新数据

为了更新(修改)表中的数据,可以使用UPDATE语句。可采用两种方式使用UPDATE:程序员

  • 更新表中特定的行;
  • 更新表中全部的行。

UPDATE语法的结构由3部分组成:sql

  • 要更新的表;
  • 列名和它们的新值;
  • 肯定要更新行的过滤条件(WHERE关键字)。

格式:数据库

UPDATE <table_name> SET field1=newValue1, field2=newValue2,...
    WHERE condition;

解释:测试

  • SET命令用来将新值赋给被更新的列。
  • 使用WHERE子句来告诉MySQL要更新哪一行,通常会选择一个能够惟一区别其余行的字段做为条件。若是没有WHERE子句那么就会更新表中全部的行,这是很是致命的问题。

好比:在学生表中修改李四的性别:code

UPDATE student SET stu_sex='女' WHERE stu_name='李四';

若是为了删除某个列的值,则能够设置为NULL(假设表定义容许NULL值)it

在UPDATE语句中可使用子查询的结果来更新数据;若是在更新一行或多行时出现一个错误,则整个UPDATE操做都会被取消(错误发生前更新的全部列被恢复到它们原来的值)。即便是错误,若是要继续执行更新,则可使用IGNORE关键字。io

UPDATE IGNORE <table_name>...;

6.2 删除数据

为了将一个表中的某一行删除,使用DELETE语句。能够有两种方式使用DELETE:table

  • 从表中删除特定的行;
  • 从表中删除全部行。

格式:class

DELETE FROM <table_name> WHERE condition;

解释:

  • DELETE不须要列名和通配符。DELETE删除整行而不是删除列
    。若是要删除列,使用UPDATE。
  • DELETE跟UPDATE同样,都必需要有WHERE,即指定要删除哪一行,因此必须注意;除非你要删除表中所有数据,那就不加WHERE。
  • WHERE通常指定的是可以惟一区分行的字段,好比主键,名字(假设没有重名的话)

例如:删除学生表中名为李四的学生:

DELETE FROM student WHERE stu_name='李四';

若是想要更快的从表中删除全部的行,不要使用DELETE,使用TRUNCATE TABLE语句,它完成相同的工做,可是速度更快。由于TRUNCATE实际是删除原来的表并从新建立一个表,而不是逐行删除表中的数据。

6.3 更新和删除的指导原则

SQL程序员使用UPDATE和DELETE必须遵循的习惯:

  • 除非确实打算更新和删除每一行,不然毫不要使用不带WHERE子句的UPDATE或DELETE语句。
  • 保证每一个表都是有主键的,尽量像WHERE子句那样使用它(能够指定各主键,多个值或值的范围)。
  • 在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT查询语句进行测试,保证它过滤的是正确的记录,以防止编写WHERE子句不正确。
  • 使用强制实施引用完整性的数据库,这样MySQL将不容许删除具备与其余表相关联的数据的行(外键)。
  • MySQL没有撤销(undo)按钮,因此应该当心使用UPDATE和DELETE语句。
相关文章
相关标签/搜索