三. 更新一条记录的多个字段值
上面举例的都是只更新一个字段的, 这儿可以更新多个字段。
其中,更新多个字段 与更新一个字段基本相同,就是 n*一个字段。 每个字段也都有 更新成一个全新的值,更新成一个与原来的值有关联的值 两种情况,也都有主键 和约束等问题。
要保证 每一个字段都能够单独更新成功,这样多个字段才能更新成功。
如, 更新id=6 的 姓名,年龄和描述。
update user set name='岳泽霖',age=24,description='一个快乐的程序员' where id=6;
如果更新的是部分一致,部分不一致, 如 name与原先的相同,age不与原先的相同,同样也是会更新这条数据的。 只要不全都一样就行。
全都一样的话,是不会更新的。
四. 更新多条记录
更新多条记录,是将这一批次的或者说符合筛选条件的记录,按照统一的修改方式进行修改。
常见的有两种形式:
1 .有筛选条件的, 但筛选条件有多条。
2 . 无筛选条件,整个数据表所有记录更新。
四.一 有筛选条件更新
如 将 id>3 的记录, 姓名全部改成 岳泽霖, 年龄全部改为 24岁。
update user set name='岳泽霖',age=24 where id>3;
由于有一条记录 id=6 的名称和年龄一样, 所以没有改变。
Rows matched: 3 Changed: 2 Warnings: 0
四.二 无筛选条件,整个数据表更新 (不建议这么更新)
将所有的记录 的姓名都改成 老蝴蝶,年龄改成25 岁。
update user set name='老蝴蝶',age=25;
这种情况,是很不好的,所以在更新时,一定要带上条件。 即使是 全部更新,也最好是 where 1=1 .
五. 联表时选择更新
上面的更新,都是单个表进行更新。 其实,在更新时,也可以进行连表进行更新。 但不常用。
命令:
update 表A inner[left,right] join 表B [on 条件] set 表A列1=属性值1,表A列2=属性值2;
用上一章节 的 dept 表和 u 表 。 再多添加几条数据。
需求:(当然,这个例子老蝴蝶举得不恰当) 更新user表,令部门为 信息管理部的 员工 的姓名修改成 ‘新员工入职’
update u inner join dept on u.deptId=dept.id and dept.id=1 set u.name='新员工入职';
发现,可以正常的进行修改。 将部门编号为1的 员工进行联表修改了。
但一般不这么用。
直接 用
update u set name='新员工入职' where id=1;
不正好吗?
所以,一般 联表更新不常用。