MySQL UPDATE语句的本质和作用
很多时候,我们需要更新MySQL中的字段并更改表中存储的数据。我们可以使用UPDATE语句来做到这一点。此命令可以修改表中的任何字段。它适用于更新单行和多行。
MySQL UPDATE语句是MySQL中最常用的命令之一。让我们看一下它的语法。
MySQL UPDATE语法
在MySQL中处理UPDATE查询时,我们通常会遇到三种特殊情况。它们是:更新一个MySQL表,用另一个MySQL表中的数据更新一个表,以及更新多个表。
表中MySQL更新行的简单简化语法模板如下:
UPDATE tableSET column1 = expression1, column2 = expression2, ...[WHERE conditions];相同情况下的完整语法模板如下:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET assignment_list [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]value: {expr | DEFAULT}assignment: col_name = valueassignment_list: assignment [, assignment] ...应用MySQL UPDATE语句的一种特殊情况是用另一个MySQL表中的数据更新一个表中的数据:
UPDATE table1SET column1 = (SELECT expression1 FROM table2 WHERE conditions)[WHERE conditions];UPDATE语句非常适合多个表。在这种情况下,语法模板将进行如下修改:
UPDATE table1, table2, ...SET column1 = expression1, column2 = expression2, ...WHERE table1.column = table2.columnAND conditions;您始终需要定义要更新的表的名称。
以下元素对于MySQL更新语法是必不可少的:
- 在SET子句定义的列受到更新。在MySQL update关键字之后,必须提供必要列的名称以及它们必须接收的值。如果您更新多个列,请用逗 分隔它们的名称和新值。
注意:如果您设置的值与该列当前所设置的值相同,则MySQL UPDATE命令将检测到该值,并且不会对其进行更新。
- WHERE子句指定更新的行,即其值必须被更新的条件。没有此子句,UPDATE语句将应用于指定列中的所有行。在更新多个表的情况下,UPDATE语句适用于满足条件的table_references中指定的每个表中的所有行。但是,即使多次匹配条件,它也会更新每个匹配的行一次。
- 在ORDER BY子句是可选的。如果设置它,它将使UPDATE语句根据该子句中指定的顺序应用于行。
- 该LIMIT子句是可选的。它限制了要更新的行数。
UPDATE语句可能包含两个可选修饰符LOW_PRIORITY和IGNORE:
- LOW_PRIORITY可以延迟MySQL UPDATE查询的执行。例如,您可以将UPDATE设置为仅在执行所有SELECT查询之后执行。该修饰符适用于使用表级锁定的那些表(内存,MyISAM和MERGE)。
- 即使确实发生错误,IGNORE也会使UPDATE语句继续执行该过程。它将从更新过程中排除某些元素。例如,这些是在唯一键值上发生重复键冲突的行-它们不会被更新。同样,如果新值导致数据转换错误,则将这些值更新为最接近的有效值。当您需要更新多行时,IGNORE修饰符特别有用。
MySQL UPDATE语句示例
MySQL中的UPDATE查询在许多情况下很有用。让我们考虑一些将该示例应用于MySQL中的标准任务的示例。
使用UPDATE命令更新MySQL列
一个简单的基本MySQL UPDATE表示例将说明如何在MySQL中更改值。假设我们需要在数据库中更改学生的姓氏。该查询将是以下内容:
UPDATE students SET last_name = 'Williams' WHERE student_id = 384;
通过执行此代码,我们更改了Student表。我们将last_name更改为Williams并指定条件-该更改适用于为384的student_id。
应用MySQL UPDATE命令更改多列
MySQL更新多列任务也很常见。在以下情况下,我们要更改一组学生的城市值。看一下以下查询:
UPDATE students SET city = 'Birmingham', student_rep = 15 WHERE student_id > 20;
在这里,我们将在一组学生的表中获取MySQL更新数据。该命令会将其原籍城市更新为伯明翰,并将student_rep更改为15。该更改将应用于student_id大于20的那些学生。通过这种方式,使用以下命令执行MySQL查询以更新许多列的列值一个陈述。
使用另一个表中的数据更新表中的MySQL数据
在这种情况下,我们要使用Teachers表中的数据更新Student表。适当的UPDATE MySQL示例如下:
UPDATE students SET teacher = (SELECT teacher_id FROM teachers WHERE teachers.city_name = students.city_name) WHERE student_id < 20;
在这个例子中,如果教师表中教师的家乡城市与学生表中学生的家乡城市相匹配,那么该教师就会被分配给这些学生。teacher_id将被复制到学生表中的教师字段。这个变化将适用于那些 student_id 小于 20 的学生。
在这里,我们要使用一个UPDATE命令更新多个表。
UPDATE students, teachers SET students.city = teachers.city WHERE students.student_id = teachers.teacher_id;
这条MySQL UPDATE命令将学生表中的城市字段更新为教师表中的城市。决定更新的条件是学生的id要与教师的id相匹配。
这样,我们探索了使用UPDATE查询更新MySQL中的字段的最常见情况。但是,使用适当的工具可以使此任务变得更加简单。
在许多用于MySQL任务的软件解决方案中,值得特别关注流行的dbForge产品线,该产品线适用于不同的数据库。
使用dbForge Studio for MySQL执行MySQL UPDATE命令
对于MySQL操作,dbForge Studio for MySQL中提供了所有必需的选项。凭借其与MySQL数据库开发,管理和管理相关的强大功能,此多功能软件可让您对MySQL数据库执行所有操作。
让我们看看dbForge Studio for MySQL如何处理MySQL UPDATE用例。
Studio的主要功能之一是编写,执行和优化SQL查询的性能。自动完成和格式化选项使用户可以消除可能的错字并加快编码速度。自动化的SQL语法检查器还有助于即时发现和纠正错误。
在我们的测试案例中,我们具有以下“客户”表。它包含客户的信息,包括他们的名字和姓氏以及电子邮件地址。

假设表中的数据随着时间的推移发生了变化,我们需要更新一些列的值。例如,Mary Smith的电子邮件必须变成MARY.SMITH@sakilacustomer.com。而假设我们还必须将Barbara的姓氏改为Johnson,因为她最近结婚了。
我们将不得不执行两条MySQL UPDATE语句,因为这些更改涉及到表的不同行。
你还记得,我们需要在UPDATE关键字后指定表名。在我们的例子中,它是customers。要更新的列在SET子句中指定,在我们的例子中,对应的是email和last_name。
然而,它不再需要记住这些东西:dbForge Studio for MySQL会自动生成UPDATE语句。没有必要在MySQL中手动输入UPDATE查询。
因此,你将需要做以下工作。
- 在“数据库资源管理器”中选择必要的表,然后单击“Retrieve Data”。另一种方法是启用“Data Grid mode”模式以查看表数据。
- 选择您需要更新的列值。注意:按住Ctrl键,可以选择一个值或多个值。
- 右键单击该值(多个值),然后从菜单中选择“Generate Script As”。
- 转到“Update > To SQL Document”。
将打开新的SQL文档页面。它已经具有为MySQL UPDATE命令提供的所有必需语法。
您可以按以下方式替换过时的值并添加最新数据:

执行查询后,您可以在右下角检查其状态。
要确保查询已成功更新值,请返回到Data grid mode,然后单击Refresh图标。

如您所见,email和last_name值已成功更新。
结论
MySQL UPDATE查询非常常见且方便,以至于在使用MySQL数据库时不可避免地要处理它。当您在单个字段,整个表甚至几个表中更改MySQL中的值时,它同样有效。
使用很简单,但可能会非常耗时。因此,方便的专业工具(如dbForge Studio for MySQL)使所有任务变得更快,更流畅,更轻松。我们希望当前的文章对您有所帮助。
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!