透视MySQL数据库之更新语句
个的唯一索引。在这种情况下,REPLACE将考虑每一个唯一索引,并对每一个索引对应的重复记录都删除,然后插入这条新记录。假设有一个table1表,有3个字段a, b, c。它们都有一个唯一索引。
CREATE TABLE table1(a INT NOT NULL UNIQUE,b INT NOT NULL UNIQUE,c INT NOT NULL UNIQUE); 假设table1中已经有了3条记录 a b c 下面我们使用REPLACE语句向table1中插入一条记录。 REPLACE INTO table1(a, b, c) VALUES(1,2,3); 返回的结果如下 Query OK, 4 rows affected (0.00 sec) 在table1中的记录如下 a b c 我们可以看到,REPLACE将原先的3条记录都删除了,然后将(1, 2, 3)插入。 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; 需要注意的时,如果一个字段的类型是TIMESTAMP,那么这个字段在其它字段更新时自动更新。 在有些时候我们需要得到UPDATE所选择的行数,而不是被更新的行数。我们可以通过一些API来达到这个目的。如MySQL提供的 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |