SQL UPDATE命令如何工作
SQL中的UPDATE命令如何工作?
我有一个表有三列a,b,c,其中a是主键。
表中的值是(1,2,3),(2,4,5)。
假设我想更新这个元组,并将列c的值设置为4,其中a的值为1.
元组(1,2,3)是否被删除,然后插入新的元组?
或值1,2保持不变3将被删除并插入4?SQL UPDATE命令如何工作
这应该修改表条目不增加新的元组到表
UPDATE tableName
SET c='4'
WHERE a='1'
更新语句只覆盖已更改的数据。数据库服务器可能必须将您的数据记录物理移动到新页面,但这对您而言是透明的。 1 + 2中的数据保持不变。 – PhillipH
SQL中的UPDATE命令如何工作? – HelloNewWorld
是更新的值只改变其他值不受影响。 – nifCody
更新table_name的 集合C = '4' 其中a = '1';
这将工作正常,没有任何问题,它不会删除或添加一个新的元组到您的表。
链接到文档以解释您的答案,并教他们如何解决问题,而不是简单地提供答案会更好。感谢您给出答案! – ToothlessRebel
简短的回答是,UPDATE
首先查找所有匹配的行(您正在调用元组),然后修改它们。它不会删除或添加任何行。
然而,
的
UPDATE
声明将火都
DELETE
和
INSERT
触发,如果任何定义。因此,从某个角度来看,它看起来似乎是一个删除和一个插入。
编辑:我的意思说的是,当一个UPDATE
触发闪光,UPDATE
之前的数据都在DELETED
pseudotable可用,而UPDATE
后的数据出现在INSERTED
pseudotable。从这个意义上说,只有UPDATE
看起来有点像删除加插入。我对上述错误陈述表示歉意。
对我而言,这是一件愚蠢的事情。用我真正的意思编辑。 –
由于您没有指定哪些数据库特别感兴趣,因此我将选择MySQL。 (但是说大多数其他关系数据库具有类似的实现方式并不太遥不可及。)
简而言之,MySQL UPDATE
支持单表语法和多表语法。在这两种情况下,元组都不会被删除,然后重新插入。编辑直接发生在由SET
子句指定的列中。
就在docs的顶部,它说,
对于单表的语法,在用新值命名表中现有行的UPDATE语句更新的列。
然后
对于多表的语法中,在每个表UPDATE更新行中满足的条件table_references命名。即使匹配条件多次,每个匹配行也会更新一次。
没有提及DELETE THEN RE-INSERT
操作。在你的情况,是的,值1和2保持不变,而3被替换为4.
你正在使用哪些DBMS? Postgres的?甲骨文?在_how_上的实际实现是在技术上实现的,幕后是_highly_ DBMS依赖(有时甚至依赖于涉及的表的实际语句以及任何可能的索引) –
对于SQL Server更新可以在位,或者删除/插入或混合的两个。 http://stackoverflow.com/a/14082375/73226 –