
mysql> select * from emp where empno=7934;
+-------+--------+-----------+---------+------------+--------+-------+--------+
| empno | ename | job | manager | hiredate | salary | bonus | deptno |
+-------+--------+-----------+---------+------------+--------+-------+--------+
| 7934 | 杜丁 | 业务员 | 7782 | 1982-01-23 | 2000 | 400 | 1 |
+-------+--------+-----------+---------+------------+--------+-------+--------+
1 row in set (0.00 sec)
使用表达式更新
使用 UPDATE 更新时,字段的值可以设置为表达式的运算结果,比如函数或其他的运算。
UPDATE emp
SET salary = salary+500;
Query OK, 14 rows affected (0.00 sec)
Rows matched: 14 Changed: 14 Warnings: 0
注意:本例中没有使用 WHERE 子句,所以表中所有的数据都进行了更新。
验证更新后的的数据:
mysql> select * from emp;
+-------+-----------+-----------+---------+------------+--------+-------+--------+
| empno | ename | job | manager | hiredate | salary | bonus | deptno |
+-------+-----------+-----------+---------+------------+--------+-------+--------+
| 7369 | 苏杨孙 | 业务员 | 7902 | 1980-12-17 | 1300 | NULL | 2 |
| 7499 | 郭赵 | 推销员 | 7698 | 1981-02-20 | 2100 | 300 | 3 |
| 7521 | 高宋 | 推销员 | 7698 | 1981-02-22 | 1750 | 500 | 3 |
| 7566 | 高张杜 | 经理 | 7839 | 1981-04-02 | 3475 | NULL | 2 |
| 7654 | 余黄 | 推销员 | 7698 | 1981-09-28 | 1750 | 1400 | 3 |
| 7698 | 胡黄杜 | 经理 | 7839 | 1981-05-01 | 3350 | NULL | 3 |
| 7782 | 肖曹 | 经理 | 7839 | 1981-06-09 | 2950 | NULL | 1 |
| 7788 | 孙袁罗 | 分析师 | 7566 | 1987-07-13 | 3500 | NULL | 2 |
| 7839 | 冯蔡 | 总经理 | NULL | 1981-11-17 | 5500 | NULL | 1 |
| 7844 | 杨郭 | 推销员 | 7698 | 1981-09-08 | 2000 | 0 | 3 |
| 7876 | 赵李任 | 业务员 | 7788 | 1887-07-13 | 1600 | NULL | 2 |
| 7900 | 吕袁 | 业务员 | 7698 | 1981-12-03 | 1450 | NULL | 3 |
| 7902 | 韩潘吕 | 分析师 | 7566 | 1981-12-03 | 3500 | NULL | 2 |
| 7934 | 杜丁 | 业务员 | 7782 | 1982-01-23 | 2500 | 400 | 1 |
+-------+-----------+-----------+---------+------------+--------+-------+--------+
14 rows in set (0.00 sec)
使用子查询更新
给北京工资的员工降薪 200
UPDATE emp
SET salary = salary - 200
WHERE deptno in (select deptno from dept where location = '北京') ;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
验证更新后的的数据:
评论