SQL中的UPDATE命令是如何工作的?
我有一个包含三列a,b,c的表,其中a是主键。
表中的值是(1,2,3),(2,4,5)。
假设我想要更新这个元组,并将列c的值设置为4,其中a的值是1。
是否删除元组(1,2,3),然后插入新的元组?
或者值1,2保持不变,3被删除,4被插入?
发布于 2015-06-21 05:09:34
由于您没有指定对哪些数据库特别感兴趣,因此我将选择MySQL。(但说大多数其他关系数据库都有类似的实现并不牵强。)
简而言之,MySQL UPDATE同时支持单表语法和多表语法。在这两种情况下,元组都不会被删除,然后重新插入。编辑直接发生在SET子句指定的列上。
就在docs的顶部,它说
对于单表语法,UPDATE语句使用新值更新命名表中现有行的列。
然后
对于多表语法,UPDATE更新在table_references中命名的每个满足条件的表中的行。每个匹配行都会更新一次,即使它多次匹配条件也是如此。
没有提到DELETE THEN RE-INSERT操作。在您的示例中,值1和2保持不变,而值3被替换为4。
发布于 2015-06-20 13:48:52
这将编辑您的表项,而不是将新的元组添加到表中
UPDATE tableName
SET c='4'
WHERE a='1'发布于 2015-06-20 13:52:32
更新table_name集合c='4‘,其中a='1';
这将工作得很好,没有任何问题,它不会删除或添加一个新的元组到您的表。
https://stackoverflow.com/questions/30950731
复制相似问题