news 2026/2/7 5:48:02

多表查询练习

作者头像

张小明

前端开发工程师

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/2/5 6:06:43

YOLO模型微调实战:针对特定场景的Fine-tuning流程

YOLO模型微调实战&#xff1a;针对特定场景的Fine-tuning流程 在智能制造车间的一条高速生产线上&#xff0c;摄像头每秒捕捉数十帧产品图像&#xff0c;系统必须在毫秒级时间内判断是否存在裂纹、缺件或变形。传统基于规则的视觉算法面对千变万化的缺陷形态束手无策&#xff…

作者头像 李华
网站建设 2026/2/5 10:47:39

YOLO模型标签平滑技术:缓解过拟合的有效手段

YOLO模型标签平滑技术&#xff1a;缓解过拟合的有效手段 在工业视觉系统日益复杂的今天&#xff0c;目标检测不仅要追求高精度&#xff0c;更要具备强大的泛化能力。YOLO系列作为实时检测的标杆&#xff0c;已经广泛应用于质检、安防和自动驾驶等领域。然而&#xff0c;一个常被…

作者头像 李华
网站建设 2026/2/5 14:45:45

YOLO与TensorRT集成指南:极致推理加速方案出炉

YOLO与TensorRT集成指南&#xff1a;极致推理加速方案出炉 在智能制造车间的高速产线上&#xff0c;每分钟数百个零件飞速流转&#xff0c;质检系统必须在毫秒内完成缺陷识别&#xff1b;在城市交通监控中心&#xff0c;数十路高清视频流同时涌入&#xff0c;AI需实时捕捉每一辆…

作者头像 李华
网站建设 2026/2/5 18:44:26

YOLO模型迁移学习实战:小数据集也能出高精度结果

YOLO模型迁移学习实战&#xff1a;小数据集也能出高精度结果 在工业质检车间的一条自动化生产线上&#xff0c;摄像头每秒捕捉数百张零件图像&#xff0c;系统需要在毫秒内判断是否存在划痕、凹陷或裂纹。但企业面临一个现实困境&#xff1a;缺陷样本稀少&#xff0c;标注成本高…

作者头像 李华
网站建设 2026/2/4 19:43:39

2025大模型完全入门指南:从零基础到实战应用的全流程学习路线_写给小白的大模型入门教程!

文章全面介绍了大语言模型的定义、特点及Transformer架构工作原理&#xff0c;对比了开源与闭源模型的优缺点及选择策略。详细阐述了数据准备、预训练、微调、评测、部署和应用开发的全流程&#xff0c;重点讲解了RAG和Agent系统两大应用方向。最后探讨了参与大模型领域的方法、…

作者头像 李华
网站建设 2026/2/6 20:03:11

普通管理员与administrator有没有区别?

答案&#xff1a;普通管理员账户和内置的 Administrator 账户之间有显著区别。 虽然它们都属于“管理员”这一大类&#xff0c;但内置的 Administrator 账户是一个特殊的、拥有“至高无上”权限的账户。 以下是它们的核心区别对比表&#xff1a; 核心区别对比表特性内置 Admini…

作者头像 李华