正确使用MySQL更新语句 浏览:581

以下文章主要介绍mysql更新语句的实际用法。首先,采用单表更新语句,给出实现MySQL更新语句的实用方案。以下是文章的详细描述。

单表MySQL更新语句:


更新low_priority } { } {忽略tbl_name
集col_name1 = expr1 expr2 } {,col_name2 =…
where_definition {在}
{由…订购}
{极限row_count }



多表更新语句:


更新low_priority } { } {忽略table_references
集col_name1 = expr1 expr2 } {,col_name2 =…
where_definition {在}


更新的语法可以更新与新价值的原始表的行列。SET子句指示列进行修改并得到它的价值。WHERE子句指定要更新的行。如果没有WHERE子句,所有行更新。如果ORDER BY子句指定,该行在指定的顺序更新。限制条款是适用于一个给定的限制可以被更新的行数。

MySQL更新语句支持以下修饰符:

如果你使用low_priority关键词,更新的执行被延迟直到没有其他客户端读取表。

如果使用忽略关键字,即使在更新期间发生错误,UPDATE语句也不会被中断。如果重复发生关键字冲突,这些行将不会被更新。如果更新了列,新值会导致数据转换错误,这些行将更新为最近的合法值。

如果你访问一个列中通过表达tbl_name,更新使用当前值在列。例如,下面的语句将年龄列超过电流值:


MySQL >更新PersonData集ageage =年龄+ 1;



MySQL更新赋值从左到右进行评估:


MySQL >更新PersonData集ageage =年龄×2,ageage =年龄+ 1;



如果将列设置为当前值,MySQL会注意到这一点,但是它不会被更新。

如果更新已定义为非空到null的列,则将列设置为与列类型对应的默认值,并添加到警告的数量中。对于数字类型,默认值为0;对于字符串类型,默认值是空字符串();对于日期和时间类型,默认值为零。

更新返回行,实际上是改变了一些,mysql_info()C API函数可以返回的行匹配和更新的数量,以及在更新过程中产生的一些警告。

你可以使用极限row_count限制更新的范围,限制条款是符合匹配的限制。声明中止只要row_count线满足WHERE子句停产,不管这些行的改变。

如果UPDATE语句包含一个BY子句,则根据该语句指定的顺序进行更新。

您还可以执行更新操作,包括多个表,table_references子句列出包含在联盟表。下面是一个例子:

已更新的项目,一个项目的价格= month.price。

在项目month.id ID =;

上面的示例使用逗号运算符显示内部联合,但是多个表UPDATE语句可以使用SELECT语句中允许的任何类型的联合,如左连接。

注意:您不能同时使用多个表更新的顺序或限制。

在已更改的多表更新中,有些列被引用。只需要这些列的MySQL更新权限。有些列被读取了,但没有被修改。只需要这些列的选择权限。

如果你使用多个表的UPDATE语句包含外键约束的InnoDB表,那么MySQL的顺序优化处理表可能不同于上下级的秩序。在这种情况下,声明是无效的,回滚。同时,更新一个表,靠在更新的功能,这个功能是由InnoDB是用于修改其他表。

此刻,你不能更新表中的子查询从一个表中选择。

以上相关内容是mysql的更新介绍,希望能帮助大家学习。
推荐文章1
广告