MySQL数据库之UPDATE更新语句精解
b c
1 1 1 2 2 2 3 3 3 下面我们使用REPLACE语句向table1中插入一条记录。 REPLACE INTO table1(a, b, c) VALUES(1,2,3); 返回的结果如下 Query OK, 4 rows affected (0.00 sec) 在table1中的记录如下 a b c 1 2 3 我们可以看到,REPLACE将原先的3条记录都删除了,然后将(1, 2, 3)插入。 二、UPDATE UPDATE的功能是更新表中的数据。这的语法和INSERT的第二种用法相似。必须提供表名以及SET表达式,在后面可以加WHERE以限制更新的记录范围。 UPDATE table_anem SET column_name1 = value1, column_name2 = value2, WHERE ; 如下面的语句将users表中id等于123的记录的age改为24 UPDATE users SET age = 24 WHERE id = 123; 同样,可以使用UPDATE更新多个字段的值 UPDATE users SET age = 24, name = ‘Mike’ WHERE id = 123; 上面的UPDATE语句通过WHERE指定一个条件,否则,UPDATE将更新表中的所有记录的值。 在使用UPDATE更新记录时,如果被更新的字段的类型和所赋的值不匹配时,MySQL将这个值转换为相应类型的值。如果这个字段是数值类型,而且所赋值超过了这个数据类型的最大范围,那么MySQL就将这个值转换为这个范围最大或最小值。如果字符串太长,MySQL就将多余的字符串截去。如果设置非空字段为空,那么将这个字段设置为它们的默认值,数字的默认值是0,字符串的默认值是空串(不是null,是”")。 有两种情况UPDATE不会对影响表中的数据。 1. 当WHERE中的条件在表中没有记录和它匹配时。 2. 当我们将同样的值赋给某个字段时,如将字段abc赋为’123′,而abc的原值就是’123′。 和INSERT、REPLACE一样,UPDATE也返回所更新的记录数。但这些记录数并不包括满足WHERE条件的,但却未被更新的记录。如下同的UPDATE语句就未更新任何记录。 UPDATE users SET age = 30 WHERE id = 12; Query OK, 0 rows affected (0.00 sec) 需要注意的时,如果一个字段的类型是TIMESTAMP,那么这个字段在其它字段更新时自动更新。 在有些时候我们需要得到UPDATE所选择的行数,而不是被更新的行数。我们可以通过一些API来达到这个目的。如MySQL提供的C API提供了一个选项可以得到你想要的记录数。而MySQL的JDBC驱动得到的默认记录数也是匹配的记录数。 UPDATE和REPLACE基本类似,但是它们之间有两点不同。 1. UPDATE在没有匹配记录时什么都不做,而REPLACE在有重复记录时更新,在没有重复记录时插入。 2. UPDATE可以选择性地更新记录的一部分字段。而REPLACE在发现有重复 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |