欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-13 12:48:28
前提要述:参考书籍《MySQL必知必会》 6.1 更新数据 为了更新(修改)表中的数据,可使用UPDATE语句。可采用两种方式使用UPDATE: 更新表中特定的行; 更新表中所有的行。 UPDATE语法的结构由3部分组成: 要更新的表; 列名和它们的新值; 确定要更新行的过滤条件(WHERE关键字) ......

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

6.1 更新数据

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

  • 更新表中特定的行;
  • 更新表中所有的行。

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

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

格式:

update <table_name> set field1=newvalue1, field2=newvalue2,...
    where condition;

解释:

  • set命令用来将新值赋给被更新的列。
  • 使用where子句来告诉mysql要更新哪一行,一般会选择一个可以唯一区别其他行的字段作为条件。如果没有where子句那么就会更新表中所有的行,这是非常致命的问题。

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

update student set stu_sex='女' where stu_name='李四';

如果为了删除某个列的值,则可以设置为null(假设表定义允许null值)

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

update ignore <table_name>...;

6.2 删除数据

为了将一个表中的某一行删除,使用delete语句。可以有两种方式使用delete:

  • 从表中删除特定的行;
  • 从表中删除所有行。

格式:

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语句。