【十一,MySQL】基础篇--多表查询 练习、总结

本文介绍了多个SQL查询实例,包括查询员工的个人信息、部门信息,筛选特定条件如年龄小于30岁的员工,统计部门员工数量,计算部门平均薪资等。同时,还涉及到员工薪资等级、特定部门(如研发部)的员工信息和平均薪资,以及对比员工薪资与平均薪资的关系。此外,文章还展示了如何查询员工选课情况,以及统计每个部门的员工人数。
摘要由CSDN通过智能技术生成

练习:

#=================================================练习===============================================
# 1.查询员工的姓名、年龄、职位、部门信息。
select a.name as 姓名,a.age as 年龄,a.job as 职位,b.name as 部门 from emp a
left join dept b on a.dept_id = b.id;

# 2.查询年龄小于30岁的员工姓名、年龄、职位、部门信息。
select a.name as 姓名,a.age as 年龄,a.job as 职位,b.name as 部门 from emp a
left join dept b on a.dept_id = b.id
where a.age < 30;

# 3.查询拥有员工的部门ID、部门名称。
select distinct b.id as ID,b.name as 部门 from emp a
right join dept b on a.dept_id = b.id;

# 4.查询所有年龄大于20岁的员工,及其归属的部门名称;如果员工没有分配部门,也需要展示出来。
select a.*,b.name as 部门 from emp a
left join dept b on a.dept_id = b.id
where a.age > 20;

# 5.查询所有员工的工资等级。(隐式内连接)
# 表:emp salgrade
# 连接条件:emp.salary between salgrede.losal and salgrede.hisal;
select a.*,b.grade as 薪资等级 ,b.losal ,b.hisal from emp a,salgrede b where a.salary between b.losal and b.hisal;

# 6.查询"研发部"所有员工的信息及工资等级。
# 连接条件:emp.salary between salgrede.losal and salgrede.hisal , emp.dept_id = dept.id
# 查询条件:dept.name = '研发部'
select a.* , b.name ,c.grade from emp a
left join dept b on a.dept_id = b.id
left join salgrede c on a.salary between c.losal and c.hisal
where b.name = '研发部';

# 7.查询"研发部"员工的平均工资。
select round(avg(a.salary),2) as 平均薪资 from emp a
left join dept b on a.dept_id = b.id
where b.name = '研发部';

# 8.查询工资比"王五"高的员工信息。
select * from emp where salary > (select salary from emp where name = '王五');

# 9.查询比平均薪资高的员工信息。
select * from emp where salary > (select avg(salary) from emp);

# 10.查询低于本部门平均工资的员工信息。
# ①查询指定部门的平均薪资
# select avg(a.salary) from emp a where a.dept_id = '2';
# ②查询比本部门平均工资低的员工信息
# select * from emp where salary < (当前部门平均薪资)
select b.*,(select avg(a.salary) from emp a where a.dept_id = b.dept_id) as 当前部门平均薪资
from emp b where b.salary < (select avg(a.salary) from emp a where a.dept_id = b.dept_id);

# 11.查询所有的部门信息,并统计部门的员工人数。
# ①查询某个部门的员工人数
select count(*) from emp b where b.dept_id = '5';
# ②查询所有部门信息
select a.*,(select count(*) from emp b where b.dept_id = a.id) as 人数 from dept a;

# 12.查询所有学生的选课情况,展示出学生名称,学号,课程名称
# 表结构:student student_score score
# ①查询某个学生的选课课程id
select a.* , b.score_id as 课程id from student a
left join student_score b on a.id = b.student_id;
# ②再关联课程表
select a.name as 姓名 ,a.no as 学号, b.score_id as 课程编号,c.name as 课程 from student a
left join student_score b on a.id = b.student_id
left join score c on b.score_id = c.id;

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值