news 2026/5/6 2:24:16

多表查询练习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多表查询练习

练习1

-- ---------------------------------------> 多表查询案例 <---------------------------------- -- ------------------------------------> 多表查询 <-------------------------------------------- -- 准备数据 create table dept1 ( id int auto_increment comment 'ID' primary key, name varchar(50) not null comment '部门名称' ) comment '部门表'; create table emp2 ( id int auto_increment comment 'ID' primary key, name varchar(50) not null comment '姓名', age int comment '年龄', job varchar(20) comment '职位', salary int comment '薪资', entrydate date comment '入职时间', managerid int comment '直属领导ID', dept1_id int comment '部门ID' ) comment '员工表'; -- 添加外键 alter table emp2 add constraint fk_emp2_dept1_id foreign key (dept1_id) references dept1 (id); INSERT INTO dept1 (id, name) VALUES (1, '研发部'), (2, '市场部'), (3, '财务部'), (4, '销售部'), (5, '总经办'), (6, '人事部'); INSERT INTO emp2 (id, name, age, job, salary, entrydate, managerid, dept1_id) VALUES (1, '金庸', 66, '总裁', 20000, '2000-01-01', null, 5), (2, '张无忌', 20, '项目经理', 12500, '2005-12-05', 1, 1), (3, '杨逍', 33, '开发', 8400, '2000-11-03', 2, 1), (4, '韦一笑', 48, '开发', 11000, '2002-02-05', 2, 1), (5, '常遇春', 43, '开发', 10500, '2004-09-07', 3, 1), (6, '小昭', 19, '程序员鼓励师', 6600, '2004-10-12', 2, 1), (7, '灭绝', 60, '财务总监', 8500, '2002-09-12', 1, 3), (8, '周芷若', 19, '会计', 48000, '2006-06-02', 7, 3), (9, '丁敏君', 23, '出纳', 5250, '2009-05-13', 7, 3), (10, '赵敏', 20, '市场部总监', 12500, '2004-10-12', 1, 2), (11, '鹿杖客', 56, '职员', 3750, '2006-10-03', 10, 2), (12, '鹤笔翁', 19, '职员', 3750, '2007-05-09', 10, 2), (13, '方东白', 19, '职员', 5500, '2009-02-12', 10, 2), (14, '张三丰', 88, '销售总监', 14000, '2004-10-12', 1, 4), (15, '俞莲舟', 38, '销售', 4600, '2004-10-12', 14, 4), (16, '宋远桥', 40, '销售', 4600, '2004-10-12', 14, 4), (17, '陈友谅', 42, null, 2000, '2011-10-12', 1, null); create table salgrade ( grade int, losal int, hisal int ) comment '薪资等级表'; insert into salgrade values (1, 0, 3000); insert into salgrade values (2, 3001, 5000); insert into salgrade values (3, 5001, 8000); insert into salgrade values (4, 8001, 10000); insert into salgrade values (5, 10001, 15000); insert into salgrade values (6, 15001, 20000); insert into salgrade values (7, 20001, 25000); insert into salgrade values (8, 25001, 30000); -- 1. 查询员工的姓名、年龄、职位、部门信息 (隐式内连接) -- 表: emp , dept -- 连接条件: emp.dept_id = dept.id select e.name, e.age, e.job, d.name from emp2 as e, dept1 as d where e.dept1_id = d.id; -- 2. 查询年龄小于30岁的员工的姓名、年龄、职位、部门信息(显式内连接) -- 表: emp , dept -- 连接条件: emp.dept_id = dept.id select e.name, e.age, e.job, d.name from emp2 as e inner join dept1 as d on e.dept1_id = d.id where e.age < 30; -- 3. 查询拥有员工的部门ID、部门名称(内连接) -- 表: emp , dept -- 连接条件: emp.dept_id = dept.id -- distinct去重关键字 select distinct d.id, d.name from emp2 as e, dept1 as d where e.dept1_id = d.id; -- 4. 查询所有年龄大于40岁的员工, 及其归属的部门名称; 如果员工没有分配部门, 也需要展示出来 -- 表: emp , dept -- 连接条件: emp.dept_id = dept.id -- 外连接 select e.*, d.name from emp2 as e left join dept1 as d on d.id = e.dept1_id where e.age > 40; -- 5. 查询所有员工的工资等级 -- 表: emp , salgrade -- 连接条件 : emp.salary >= salgrade.losal and emp.salary <= salgrade.hisal select e.*, s.grade, s.losal, s.hisal from emp2 as e, salgrade as s where e.salary >= s.losal and e.salary <= s.hisal; select e.*, s.grade, s.losal, s.hisal from emp2 as e, salgrade as s where e.salary between s.losal and s.hisal; -- 6. 查询 "研发部" 所有员工的信息及 工资等级 -- 表: emp , salgrade , dept -- 连接条件 : emp.salary between salgrade.losal and salgrade.hisal , emp.dept_id = dept.id -- 查询条件 : dept.name = '研发部' select e.*, s.grade from emp2 as e, dept1 as d, salgrade as s where e.dept1_id = d.id and (e.salary between s.losal and s.hisal) and d.name = '研发部'; -- 7. 查询 "研发部" 员工的平均工资 -- 表: emp , dept -- 连接条件 : emp.dept_id = dept.id select avg(e.salary) from emp2 as e, dept1 as d where e.dept1_id = d.id and d.name = '研发部'; -- 8. 查询工资比 "灭绝" 高的员工信息。(标量子查询) -- a. 查询 "灭绝" 的薪资 select salary from emp2 where name = '灭绝'; -- b. 查询比她工资高的员工数据 select * from emp2 where salary > (select salary from emp where name = '灭绝'); -- 9. 查询比平均薪资高的员工信息 -- a. 查询员工的平均薪资 select avg(salary) from emp2; -- b. 查询比平均薪资高的员工信息 select * from emp2 where salary > (select avg(salary) from emp); -- 10. 查询低于本部门平均工资的员工信息 -- a. 查询指定部门平均薪资 1 select avg(e1.salary) from emp2 e1 where e1.dept1_id = 1; select avg(e1.salary) from emp2 e1 where e1.dept1_id = 2; -- b. 查询低于本部门平均工资的员工信息 select *, (select avg(e1.salary) from emp2 e1 where e1.dept1_id) as '平均薪资' from emp2 as e2 where e2.salary < (select avg(e1.salary) from emp2 e1 where e1.dept1_id = e2.dept1_id); -- 11. 查询所有的部门信息, 并统计部门的员工人数 select d.id, d.name, (select count(*) from emp2 e where e.dept1_id = d.id) '人数' from dept d; select count(*) from emp2 where dept1_id = 1; -- 12. 查询所有学生的选课情况, 展示出学生名称, 学号, 课程名称 -- 表: student , course , student_course -- 连接条件: student.id = student_course.studentid , course.id = student_course.courseid select s.name , s.no , c.name from student s , student_course sc , course c where s.id = sc.studentid and sc.courseid = c.id ;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 18:28:12

基础-事务

一、MySQL基础在数据的世界里&#xff0c;就像银行系统中的一笔转账操作&#xff0c;我们不能接受"资金从A账户划出&#xff0c;但B账户未收到"的混乱局面。事务正是数据库中的"安全卫士"&#xff0c;确保数据操作的完整性与可靠性。当您在电商网站下单时&…

作者头像 李华
网站建设 2026/4/25 13:18:59

YOLO与CI/CD流水线整合:自动化测试与部署实践

YOLO与CI/CD流水线整合&#xff1a;自动化测试与部署实践 在智能制造工厂的质检线上&#xff0c;一台AOI&#xff08;自动光学检测&#xff09;设备突然开始频繁漏检微小裂纹。过去&#xff0c;这个问题可能需要工程师手动收集新样本、重新训练模型、导出权重、登录边缘设备替换…

作者头像 李华
网站建设 2026/5/2 22:43:42

YOLO模型输出后处理优化:自定义NMS与坐标转换技巧

YOLO模型输出后处理优化&#xff1a;自定义NMS与坐标转换技巧 在现代工业视觉系统中&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;系列目标检测模型早已成为实时感知的基石。从产线缺陷识别到自动驾驶环境感知&#xff0c;其“一次前向推理完成检测”的高效设计…

作者头像 李华
网站建设 2026/5/3 10:20:19

Java面试必看:如何让Main线程成为最后一个退出的秘密!

文章目录Java面试必看&#xff1a;如何让Main线程成为最后一个退出的秘密&#xff01;一、问题背景&#xff1a;为什么我们要关心Main线程的退出顺序&#xff1f;二、常见的误区&#xff1a;为什么直接运行代码会导致Main线程提前退出&#xff1f;示例代码&#xff1a;原因分析…

作者头像 李华
网站建设 2026/5/5 5:08:09

YOLO模型评估指标解读:mAP、F1、IoU到底怎么看?

YOLO模型评估指标解读&#xff1a;mAP、F1、IoU到底怎么看&#xff1f; 在工业质检线上&#xff0c;一台搭载YOLOv8的视觉系统正高速扫描PCB板。屏幕上不断跳动着“缺陷”标签——但工程师却发现&#xff0c;同一块板子被反复标记出位置略有偏移的多个框&#xff0c;而某些真实…

作者头像 李华
网站建设 2026/4/30 10:24:47

YOLO模型输入分辨率选择:越高越好吗?实测告诉你答案

YOLO模型输入分辨率选择&#xff1a;越高越好吗&#xff1f;实测告诉你答案 在工业质检线上&#xff0c;一台搭载YOLOv5的视觉系统正高速运转——每秒处理30帧图像&#xff0c;检测PCB板上的微型元件。突然&#xff0c;一个仅占2像素的电阻缺失未被识别&#xff0c;导致整批产品…

作者头像 李华