欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > mysql多表查询练习

mysql多表查询练习

2025/9/23 13:23:42 来源:https://blog.csdn.net/u012941592/article/details/145910921  浏览:    关键词:mysql多表查询练习

多表查询语法详解:mysql多表查询-CSDN博客

准备工作,新增了一个工资等级表,其他表在上面地址中已经创建好了。

create table salgrade(grade int,losal int,hisal int)comment '工资等级表';
insert into salgrade
values (1, 0, 3000),(2, 3001, 5000),(3, 5001, 8000),(4, 8001, 10000),(5, 10001, 15000),(6, 15001, 20000),(7, 20001, 25000),(8, 25001, 30000);

练习1:

# 查询员工的姓名、年龄、职位、部门信息。

表:emp ,dept

链接条件:emp.dept_id=dept.id

隐式内连接

select emp.name,emp.age,emp.job,dept.name from emp,dept where emp.dept_id=dept.id;

显示内连接

select e.name,e.age,e.job,d.name from emp e join dept d on d.id = e.dept_id;

结果:

练习2:

查询年龄小于30岁的员工的姓名、年龄、职位、部门信息。

表:emp ,dept

链接条件:emp.dept_id=dept.id

查询条件:emp.age<30

select e.name,e.age,e.job,e.name
from emp e join dept d on e.dept_id=d.id where age<30;

结果:

 

练习3:

查询拥有员工的部门id,部门名称。获取emp和dept两张表的交集

表:emp ,dept

链接条件:emp.dept_id=dept.id

    select distinct d.* from dept d ,emp e where e.dept_id=d.id;

结果:

练习4:

查询年龄大于40岁的员工,及其归属的部门名称,如果员工没有分配部门,也需要展示出来。

表:emp ,dept

链接条件:emp.dept_id=dept.id

查询条件:age>40

左外连接:获取emp所有数据和emp与dept交集部分。

    select e.name,s.grade from emp e,salgrade s where e.salary between s.losal and s.hisal;

结果:

练习5

查询所有员工的工资等级.

表:emp ,salgrade

链接条件:e.salary between s.losal and s.hisal

select e.name,s.grade from emp e,salgrade s where e.salary between s.losal and s.hisal;

 结果:

练习6

查询“研发部”所有员工的信息及平均工资

表:emp ,dept

链接条件:emp.dept_id=dept.id查

select emp.*,dept.name,(select avg(salary) from emp where dept_id=dept.id ) as '研发平均薪资' from emp,dept where emp.dept_id=dept.id and dept.name='研发部';

结果:

练习7

查询“研发部”所有员工信息及其员工等级。

表:emp ,dept,salgrade

链接条件:emp.dept_id=dept.id

    select * from emp e,salgrade s,dept d where (e.salary between s.losal and s.hisal ) and e.dept_id=d.id and d.name='研发部';

结果:

练习8

查询“研发部”员工的平均工资。

表:emp ,dept

标量子查询

    select avg(salary) from emp where dept_id=(select id from dept where name='研发部');

结果:

练习9

查询比“灭绝”工资高得员工信息。

表:emp

标量子查询

    select * from emp where salary>(select salary from emp where name='灭绝');

 结果:

练习11

查询低于本部门平均工资的员工信息。

表:emp,dept

# 第一步:查询单个部门的平局工资
select avg(salary) from emp where dept_id=1;
# 第二步:查询低于本部门平均工资的员工信息
select * from emp e where salary<(select avg(salary) from emp where dept_id=e.dept_id);

练习12

查询所有部门部门信息,并统计部门的员工数量。

表:emp,dept

select d.*,(select count(*) from emp where dept_id=d.id) '部门人数' from dept d ;

 结果:

练习13

查询所有学生的选课情况,展示出学生的名称、学号、课程名称。

表:student,course,student_course

连接条件:student.id=student_course.studentid and course.id=student_course.courseid

select student.name,course.name from course,student,student_course where student.id=student_course.studentid and course.id=student_course.courseid;
结果:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词