MySQL UPDATE语句

# UPDATE语句用于修改表的记录
# 把每个员工的编号和上司的编号+1,用order by子句完成(提示按照降序来执行)
UPDATE t_emp SET empno=empno+1,mgr=mgr+1 
ORDER BY empno DESC;

# 把月收入前三名的员工减薪100元,用LIMIT子句完成
UPDATE t_emp SET sal=sal-100
ORDER BY sal+IFNULL(comm,0) DESC
LIMIT 3;

# 把10部门中,工龄超过20年的员工,底薪增加200元
UPDATE t_emp SET sal=sal+100
WHERE deptno=10 AND FLOOR(DATEDIFF(NOW(),hiredate)/365)>20;

# 把ALLEN调往RESEARCH部门,职务调整为ANALYST,工作地点调整为北京(修改了两张表)
# UPDATE语句的表连接(内)
# 语法一
# UPDATE 表1 JOIN 表2 ON 条件 SET 字段1=值1,字段2=值2,......;
UPDATE t_emp e JOIN t_dept d
SET e.deptno=d.deptno,e.job="ANALYST",d.loc="BEIJING"
WHERE e.ename="ALLEN" AND d.dname="RESEARCH";

# 语法二
# UPDATE 表1,表2 SET 字段1=值1,字段2=值2,...... WHERE 连接条件
UPDATE t_emp e,t_dept d
SET e.deptno=d.deptno,e.job="ANALYST",d.loc="GUANGZHOU"
WHERE e.ename="ALLEN" AND d.dname="RESEARCH";

# 把底薪低于公司平均底薪的员工,底薪增加150元
UPDATE t_emp e,(SELECT AVG(sal) as avg FROM t_emp) t
SET e.sal=e.sal+150
WHERE e.sal<t.avg;

# update外连接
# UPDATE 表1 [LEFT|RIGHT] JOIN 表2 ON 条件 SET 字段1=值1,字段2=值2,...
# 把没有部门的员工,或者sales部门低于2000元底薪的员工,都调往20部门
UPDATE t_emp e LEFT 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);

 

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值