MySQL数据库DML——UPDATE语句
UPDATE语句简介
- UPDATE语句用于修改表的记录
UPDATE语句使用方法:
UPDATE [IGNORE] 表名
SET 字段1=值1, 字段2=值2, ......
[WHERE 条件1 ......]
[ORDER BY BY ......]
[LIMIT ......];
UPDATE语句练习1
把每个员工的编号和上司的编号+1,用ORDER BY子句完成
UPDATE t_emp SET empno=empno+1,mgr=mgr+1
ORDER BY empno DESC;
UPDATE语句练习2
把月收入前三名的员工底薪减100元,用LIMIT子句完成
UPDATE t_emp
SET sal=sal-100
ORDER BY sal+IFNULL(comm,0) DESC
LIMIT 3;
UPDATE语句的表连接
- 因为相关子查询效率非常低,所以我们可以利用表连接的方式来改造UPDATE语句
UPDATE语句的表连接使用方法:
UPDATE 表1 JOIN 表2 ON 条件
SET 字段1=值1, 字段2=值2, ......;
- 表连接的UPDATE语句可以修改多张表的记录
UPDATE语句练习3
把ALLEN调往RESEARCH部门,职务调整为ANALYST
UPDATE t_emp e JOIN t_dept d
SET e.deptno=d.deptno,e.job="",d.loc="北京"
WHERE e.ename="ALLEN" AND d.dname="RESEARCH";
UPDATE语句练习4(UPDATE内连接)
把底薪低于公司平均底薪的员工,底薪增加150元
UPDATE t_emp e JOIN
(SELECT AVG(sal) AS avg FROM t_emp) t
ON e.sal<t.avg
SET e.sal=e.sal+150;
UPDATE语句的外连接
- UPDATE语句的表连接既可以是内连接,又可以是外连接
UPDATE语句的外连接使用方法:
UPDATE 表1 [LEFT|RIGHT] JOIN 表2 ON 条件
SET 字段1=值1, 字段2=值2, ......;
UPDATE语句练习5(UPDATE外连接)
把没有部门的员工,或者SALES部门低于2000元底薪的员工,都调往20部门
UPDATE t_emp e JOIN t_dept d ON e.deptno=d.deptno
SET e.deptno=20
WHERE e.deptno IS NULL OR (d.dname="SALES" AND e.sal<2000);