当前位置:萝卜系统 > 硬件软件教程 > 详细页面

sql update语句的详细用法

sql update语句的详细用法

更新时间:2023-06-22 文章作者:未知 信息来源:网络 阅读次数:

根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。

mongodb update数据语法_update语法_pl/sql update语法

UPDATE是DML(数据操作语言)语句,用于修改表中的行.

更新[LOW_PRIORITY] [IGNORE] table_reference

SET Assignment_list

[WHERE where_condition]

[ORDER BY ...]

[LIMIT row_count]

值:

{expr |默认值

update语法_pl/sql update语法_mongodb update数据语法

分配:

col_name =值

assignment_list:

任务[,任务] ...

更新[LOW_PRIORITY] [IGNORE] table_references

SET Assignment_list

[WHERE where_condition]

对于单表语法update语法,UPDATE语句使用新值更新指定表中现有行的列. SET子句指示要修改的列以及应给出的值.

update语法_mongodb update数据语法_pl/sql update语法

每个值都可以作为表达式给出,或者关键字DEFAULT显式将列设置为默认值. WHERE子句(如果提供)指定了确定要更新哪些行的条件.

没有WHERE子句,所有行都会更新. 如果ORDER BY指定子句,则将按指定顺序更新行. LIMIT子句对可更新的行数设置限制.

对于多表语法,UPDATE更新每个表中名为table_references的行以满足条件. 即使匹配条件是多次,每个匹配的行也将被更新一次. 对于多表语法,不能使用ORDER BY和LIMIT.

where_condition是一个表达式,并且每一行都更新为true.

UPDATE语句支持以下修饰符:

在MySQL 5.5.18和更高版本中,UPDATE IGNORE语句(包括带有ORDER BY子句的语句)被标记为基于语句的不安全复制. (这是因为行的更新顺序决定了忽略哪些行. )使用基于语句的模式时,这些语句在错误日志中生成警告,并在使用时使用基于行的格式写入二进制日志混合模式.

如果您从表中访问表中的UPDATE列,请使用该列的当前值. 例如,以下语句将col1设置为比当前值大一个:

更新t1设置col1 = col1 + 1;

pl/sql update语法_mongodb update数据语法_update语法

以下语句中的第二个赋值将col2设置为当前(更新的)col1值,而不是原始的col1值. 结果,col1和col2具有相同的值. 此行为不同于标准SQL.

更新t1设置col1 = col1 + 1,col2 = col1;

单表UPDATE分配通常从左到右进行评估. 对于多表更新,不能保证以任何特定顺序执行分配.

如果将列设置为当前值,MySQL将注意到这一点,并且不会对其进行更新.

如果NOT NULL通过设置更新声明的列,则启用NULL严格SQL模式时将发生错误;否则,将列设置为列数据类型的隐式默认值,并增加警告计数. 隐式默认值为0数字类型,字符串类型为空字符串(''),日期和时间类型为“零”值.

UPDATE返回实际更改的行数. mysql_info()C API函数返回已匹配和更新的行数,以及UPDATE中出现警告的次数.

可用于限制的范围. 子句是行匹配的限制. 一旦找到满足该子句的行,该语句就会停止,无论它们是否实际上已更改.

如果UPDATE语句包含ORDER BY子句,则将按该子句指定的顺序更新行. 这在某些情况下可能很有用update语法,否则可能会导致错误. 假设表t包含其ID具有唯一索引的列. 以下语句可能由于重复的键错误而失败,具体取决于行的更新顺序:

mongodb update数据语法_pl/sql update语法_update语法

UPDATE t SET id = id + 1;

例如,如果表在id列中包含1和2,并且在2更新为3之前将1更新为2,则会发生错误. 为避免此问题,请添加ORDER BY子句,以便在具有较小ID值的行之前更新具有较大ID值的行:

更新t SET id = id + 1 ORDER BY ID DESC;

您还可以执行UPDATE操作来覆盖多个表. 但是,不能对多个表UPDATE使用ORDER BY或LIMIT. table_references子句列出了连接中涉及的表. 语法在第13.2.9.2节“ JOIN语法”中描述. 这是一个示例:

更新项目,每月设置项目. price= month.price

WHERE items.id = month.id;

上一个示例显示了使用逗号运算符的内部联接,但是多个表UPDATE语句可以使用该语句中允许的任何类型的联接SELECT,例如LEFT JOIN.

如果您使用涉及具有外键约束的InnoDB表的UPDATE多表语句,则MySQL优化程序可能以与其父/子关系不同的顺序处理表.

在这种情况下,该语句失败并回滚. 而是更新一个表,并依靠ON UPDATE函数InnoDB来相应地修改其他表.

您无法更新表并从子查询的同一表中进行选择.

UPDATE使用的存储引擎(例如分区表MyISAM)使用表级锁来锁定表中的所有分区. 对于使用存储引擎的表(例如InnoDB使用行级锁定),不会发生这种情况.


本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-260157-1.html



温馨提示:喜欢本站的话,请收藏一下本站!

本类教程下载

系统下载排行

网站地图xml | 网站地图html