MySQL对数据的基本操作
数据插入:
ignore关键字会让insert只插入数据库不存在的记录
#向数据表中插入数据
insert into t_dept(deptno,dname,loc)
values(60,"后勤部","北京"),(70,"保安部","北京");
#向技术部插入一条员工记录
insert into t_emp
(empno,ename,job,mgr,hiredate,sal,comm,deptno)
values(8001,"刘娜","SALESMAN",8000,"1988-12-20",2000,null,
(select deptno from t_dept where dname="技术部"));
数据更新:
因为相关子查询效率非常低,所以我们可以利用表连接的方式来改造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+200
where deptno=10 and floor(datediff(now(),hiredate) /365)>=20
#把ALLEN调往RESEARCH部门,职务调整为ANALYST
update t_emp e join t_dept d
set e.deptno=d.deptno,e.job="ANALYST"
where e.ename="ALLEN" and d.dname="RESEARCH"
#把底薪低于公司平均底薪的员工,底薪增加150元
update t_emp e join(select avg(sal) a from t_emp) t
on e.sal<t.a
set e.sal=e.sal+150;
#把没有部门的员工。或者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);
数据删除:
#删除10部门中,工龄超过20年的员工记录
delete from t_emp
where deptno=10 and datediff(now(),hiredate) /365>20;
#删除20部门中工资最高的员工记录
delete from t_emp
where deptno=20
order by sal+ifnull(comm,0) desc
limit 1;
#删除SALES部门和该部门的全部员工记录
delete e,d
from t_emp e join t_dept d on e.deptno=d.deptno
where d.dname="SALES";
#删除每个低于部门平均底薪的员工记录
delete e
from t_emp e join
(select deptno,avg(sal) as sal from t_emp group by deptno) t
on e.deptno=t.deptno and e.sal<t.sal;
#删除员工king和他的直接下属的员工记录
delete e
from t_emp e join
(select empno from t_emp where ename="KING") t
on e.empno=t.empno or e.mgr=t.empno;
#删除SALES部门的员工,以及没有部门的员工
delete e
from t_emp e left join t_dept d on e.deptno=d.deptno
where d.dname="SALES" or e.deptno is null;
delete语句是在事务机制下删除记录,删除记录之前,先把将要删除的记录保存到日志文件里,然后再删除记录。truncate语句在事务机制之外删除记录,速度远超过DELETE语句
#绕过事务机制,清空t_emp 员工表
truncate table t_emp;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!