当前位置: 首页 > news >正文

(1-7-5) Mysql 对 数据的基本操作

目录

0. 前置总结

1. insert 语句

1.1 insert 语法

(1) 员工部门表中 插入 4 条记录

1.2 Insert 子查询 

(1)  向“家乡部2” 添加一条员工记录

1.3 insert 语句方言

(1) 向“家乡部2” 添加一条员工记录

1.4  ignore 关键字

(1) 向部门表中插入 2条记录,其中一条为重复记录, 希望插入成功

2. update 语句

2.1 update 子句 (order by)

(1)把每个员工 的编号和上司的 编号 +1, 用order by 子句完成

2.2 update 子句 (order by + limit)

(1) 把月收入前三名 的员工底薪减100 元, 用limit 子句完成

(2) 把10部们中 工龄超过20年的员工, 底薪增加240元

2.3  update 语句(表连接实现 join + where)

(1) (表连接实现 join + where) 将龙龙 调往 “家乡部1” ,职务调整为“技术大佬”

(2)把底薪低于 公司平均底薪的 员工, 底薪增加150元

2.4(左外连接)实现数据更新

(1) 把没有部门的员工, 或者 “家乡部1”部门高于3000底薪的员工,都调往60部门

3. delete 语句

3.1 基本用法

(1)删除 10 部门中, 工资最低的员工记录

(2)删除 10部门中,  工龄超过45的员工记录

3.2 (表连接删除语法)操作多表删除

(1) (表连接删除) 删除 “家乡部2” 部门和该部门 的全部员工记录

(2) (表连接删除其中一表记录) 删除 每个低于部门平均底薪 的员工记录

(3)删除 员工king 和他的直接下属的 员工记录, 用表连接实现

3.3 (left join表连接删除)

(1)(左外连接)删除 SALES 部门员工, 以及没有部门的员工

3.4 truncate快速清空数据表


base :

通过网盘分享的文件:demo.sql
链接: https://pan.baidu.com/s/1iUKSMScC1PXtbOFFaKm-vQ 提取码: i5hb 复制这段内容后打开百度网盘手机App,操作更方便哦

0. 前置总结

  • 数据添加(Insert)
    • Insert  语法
    • Insert 方言语法
    • Insert 子查询
    • Ignore 关键字
  • 数据修改(Update)
    • Update 语法
    • Update 表连接
  • ​​​​​​​数据删除(delete)
    • ​​​​​​​delete 语法
    • delete 表连接

1. insert 语句

1.1 insert 语法

(1) 员工部门表中 插入 4 条记录

# 插入(Insert)语句
# 1. 员工部门表中 插入 4 条记录
insert into t_dept(deptno, dname, loc)
values
(50, "家乡部1", "杨陵区"),
(60, "家乡部2", "克拉玛依市"),
(70, "家乡部3", "长春市"),
(80, "家乡部4", "汉中市");select * from t_dept;

1.2 Insert 子查询 

(1)  向“家乡部2” 添加一条员工记录

# 2. insert 子查询
# 2.1 向“家乡部2” 添加一条员工记录
insert into t_emp 
(empno, ename, job, mgr, hiredate, sal, comm, deptno)
values 
(8001, "phdvb", "teacher", 7900, "2025-7-27", 5000, null, 
(select deptno
from t_dept
where dname = "家乡部2")
);
select * from t_emp;

1.3 insert 语句方言

(1) 向“家乡部2” 添加一条员工记录
# 3. insert 语句方言
# 3.1 向“家乡部2” 添加一条员工记录
insert into t_emp
set 
empno = 8002,
ename = "phdvc",
job = "teacher",
mgr = 7900,
hiredate = "2025-7-27",
sal = 5200,
comm = 200,
deptno = (select deptno from t_dept where dname = "家乡部2");select * from t_emp;

1.4  ignore 关键字

(1) 向部门表中插入 2条记录,其中一条为重复记录, 希望插入成功

# 4. ignore 关键字
# 4.1 向部门表中插入 2条记录,其中一条为重复记录, 希望插入成功
insert ignore into t_dept
values
(70, "家乡部4", "汉中市"),
(90, "家乡部5", "西安市");select * from t_dept;DELETE from t_emp where deptno = 90;

2. update 语句

2.1 update 子句 (order by)

(1)把每个员工 的编号和上司的 编号 +1, 用order by 子句完成

# update 子句
# 1 把每个员工 的编号和上司的 编号 +1, 用order by 子句完成
select * from t_emp;update t_emp set empno = empno + 1, mgr = mgr + 1
order by empno desc;

2.2 update 子句 (order by + limit)

(1) 把月收入前三名 的员工底薪减100 元, 用limit 子句完成

# 2. 把月收入前三名 的员工底薪减100 元, 用limit 子句完成
# 2.1 base 先按照薪资 做降序排列
select empno, sal + ifnull(comm, 0)
from t_emp
order by sal + ifnull(comm, 0) desc# 2.2 更新 前三条记录
update t_emp
set  sal = sal -100
order by sal + ifnull(comm, 0) desc
limit 3;

(2) 把10部们中 工龄超过20年的员工, 底薪增加240元

# 3. 把10部们中 工龄超过20年的员工, 底薪增加240元
# 3.1 base 查询
select empno, ename, sal, floor(DATEDIFF(now(), hiredate)/365)
from t_emp
where deptno = 10 and DATEDIFF(now(), hiredate)/365 > 20;# 3.2 更新操作
update t_emp
set sal = sal + 240
where deptno = 10 and DATEDIFF(now(), hiredate)/365 > 20;

2.3  update 语句(表连接实现 join + where)

(1) (表连接实现 join + where) 将龙龙 调往 “家乡部1” ,职务调整为“技术大佬”

# 4. (表连接实现 join + where) 将龙龙 调往 “家乡部1” ,职务调整为“技术大佬”
update t_emp em join t_dept de
set em.deptno = de.deptno , em.job = "技术大佬"
where em.ename = "龙龙" and de.dname = "家乡部1";
(2)把底薪低于 公司平均底薪的 员工, 底薪增加150元

# 5. 把底薪低于 公司平均底薪的 员工, 底薪增加150元
# base 查询
select em1.empno, em1.ename, em1.ename, em1.sal, av.av_sal 
from t_emp em1 join (select avg(em2.sal) as av_sal from t_emp em2) av
where em1.sal < av.av_salupdate t_emp em1 join (select avg(em2.sal) as av_sal from t_emp em2) av
set em1.sal = em1.sal + 150
where em1.sal < av.av_sal

2.4(左外连接)实现数据更新


(1) 把没有部门的员工, 或者 “家乡部1”部门高于3000底薪的员工,都调往60部门

# 6. (左外连接)实现数据更新
# 需求: 把没有部门的员工, 或者 “家乡部1”部门高于3000底薪的员工,都调往60部门
# base 查询
select em.empno, em.ename, em.sal, em.deptno
from t_emp em left join t_dept de
on em.deptno = de.deptno 
where em.deptno is null or (de.dname = "家乡部1" and em.sal > 3000);# 更新
update t_emp em left join t_dept de
on em.deptno = de.deptno 
set em.deptno = 60
where em.deptno is null or (de.dname = "家乡部1" and em.sal > 3000);# 验证
select empno, ename, sal, deptno
from t_emp 
where deptno = 60

3. delete 语句

3.1 基本用法

(1)删除 10 部门中, 工资最低的员工记录

# 1. 删除 10 部门中, 工资最低的员工记录
# base 查询
select * 
from t_emp
where deptno = 10
order by sal + IFNULL(comm , 0)# 删除
delete from t_emp
where deptno = 10
order by sal + IFNULL(comm , 0)
limit 1;

(2)删除 10部门中,  工龄超过45的员工记录

#2. 删除 10部门中,  工龄超过45的员工记录
# base 查询10 部门, 每个员工的工龄
select empno, ename, DATEDIFF(now(), hiredate)/365
from t_emp
where deptno = 10;# 删除
delete
from t_emp
where deptno = 10 and DATEDIFF(now(), hiredate)/365 > 45;

3.2 (表连接删除语法)操作多表删除

(1) (表连接删除) 删除 “家乡部2” 部门和该部门 的全部员工记录

# 3. (表连接删除) 删除 “家乡部2” 部门和该部门 的全部员工记录
# base 查询“家乡部2”部门,以及部门的全部员工记录
select em.empno, em.ename, em.deptno, de.dname
from t_emp em join t_dept de  
on em.deptno = de.deptno and de.dname = "家乡部2";# 删除
delete em, de
from t_emp em join t_dept de  
on em.deptno = de.deptno and de.dname = "家乡部2";
(2) (表连接删除其中一表记录) 删除 每个低于部门平均底薪 的员工记录

# 4. (表连接删除其中一表记录) 删除 每个低于部门平均底薪 的员工记录
# base 查询 每个部门 的员工记录 + 平均底薪
select em1.empno, em1.ename, em1.sal, em1.deptno, em2.av_sal as deptAvgSal
from t_emp em1 join (select deptno, avg(sal) as av_sal from t_emp group by deptno) em2
on em1.deptno = em2.deptno;
# 删除
delete em1
from t_emp em1 join (select deptno, avg(sal) as av_sal from t_emp group by deptno) em2
on em1.deptno = em2.deptno and em1.sal < em2.av_sal;
(3)删除 员工king 和他的直接下属的 员工记录, 用表连接实现

# 5 删除 员工king 和他的直接下属的 员工记录, 用表连接实现
# base0 查询员工king 和他的直接下属的 员工记录,用表连接
select empno from t_emp  where ename = "KING";# base1
select em1.empno, em1.ename, em1.mgr
from t_emp em1 join (select empno from t_emp  where ename = "KING") emNo 
on em1.mgr = emNo.empno or em1.ename = "KING";# 删除
delete em1
from t_emp em1 join (select empno from t_emp  where ename = "KING") emNo 
on em1.mgr = emNo.empno or em1.ename = "KING";# 验证
select empno, ename, mgr from t_emp;

3.3 (left join表连接删除)

 

(1)(左外连接)删除 SALES 部门员工, 以及没有部门的员工
# 6. (左外连接)删除 SALES 部门员工, 以及没有部门的员工 
# base 0
-- select deptno from t_dept where dname = "SALES";# base 1
# 查询 SALES 部门员工, 以及没有部门的员工
# 写法一 错误写法
-- select em.empno, em.ename, em.deptno
-- from t_emp em left join (select deptno from t_dept where dname = "SALES") deptT
-- on em.deptno = deptT.deptno or em.deptno is null;# 写法二
select em.empno, em.ename, em.deptno
from t_emp em left join t_dept de on em.deptno = de.deptno
where de.dname = "SALES" or em.deptno is null;# 删除
delete em
from t_emp em left join t_dept de on em.deptno = de.deptno
where de.dname = "SALES" or em.deptno is null;

3.4 truncate快速清空数据表

# 7. 清空数据表
truncate table t_emp;

http://www.dtcms.com/a/304314.html

相关文章:

  • MC0241防火墙
  • Object.freeze() 深度解析:不可变性的实现与实战指南
  • 道路坑洞检测数据集介绍8300张图片-智能道路巡检系统 车载安全监测设备 城市基础设施管理
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博文章数据可视化分析-文章评论量分析实现
  • 从零到一:Django图书管理系统完整开发实战指南
  • 开源数据库PostgreSQL专家技术
  • 从视觉到现实:掌握计算机视觉技术学习路线的十大步骤
  • 在 PolkaVM 上用 Rust 实现 ERC20 合约的全流程开发指南
  • 三维扫描相机:工业自动化的智慧之眼——迁移科技赋能智能制造新纪元
  • Element Plus常见基础组件(一)
  • 白玩 一 记录retrofit+okhttp+flow 及 kts的全局配置
  • Javaweb - 13 - AJAX
  • 《P5960 【模板】差分约束》
  • LeetCode Hot 100:11. 盛最多水的容器
  • Vulnhub 02-Breakout靶机渗透攻略详解
  • 牛顿拉夫逊法PQ分解法计算潮流MATLAB程序计算模型。
  • 【AI论文】Yume:一种交互式世界生成模型
  • Docker网络技术深度研究与实战手册
  • C++与C#实战:FFmpeg屏幕录制开发指南
  • 2025年KBS顶刊新算法-向光优化算法Phototropic growth algorithm-附Matlab免费代码
  • 从线下挂号到全流程智能问诊:智慧医院APP源码开发指南
  • MATLAB弹塑性固体有限元计算程序
  • 【LGR-234-Div.3】洛谷网校 7 月 CSP-J 模拟月赛 Cfz Round 6 「Cfz Round 6」Imaichi
  • 【PHP】通过IP获取IP所在地理位置(免费API接口)
  • Kruskal算法
  • gTest测试框架的安装与配置
  • HammerDB:一款免费开源的数据库基准测试工具
  • YOLOv11.pt 模型转换为 TFLite 和 NCNN 模型
  • PDF转Word免费工具!批量处理PDF压缩,合并, OCR识别, 去水印, 签名等全功能详解
  • CodeRush AI 助手进驻 Visual Studio:AiGen/AiFind 亮相(三)