MySQL每日一练:多表查询——连接查询、子查询(1)

这篇具有很好参考价值的文章主要介绍了MySQL每日一练:多表查询——连接查询、子查询(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、首先创建员工表emp和部门表dept:

dept表:

emp表: 

2、插入数据:

dept表:

emp表:

3、 按条件查找

1、首先创建员工表emp和部门表dept:

dept表:

create table dept (        
    dept1 int ,
    dept_name varchar(11)); 

emp表: 

create table emp (
    sid int ,
    name varchar(11),
    age int,
    worktime_start date,
    incoming int,
    dept2 int);

2、插入数据:

dept表:

 insert into dept values (101,'财务');
​ insert into dept values (102,'销售');
​ insert into dept values (103,'IT技术');
​ insert into dept values (104,'行政');

emp表:

insert into emp values(1789,'张三',35,'1980/1/1',4000,101);
insert into emp values(1674,'李四',32,'1983/4/1',3500,101);
insert into emp values(1776,'王五',24,'1990/7/1',2000,101);
insert into emp values(1568,'赵六',57,'1970/10/11',7500,102);
insert into emp values(1564,'荣七',64,'1963/10/11',8500,102);
insert into emp values(1879,'牛八',55,'1971/10/20',7300,103);

3、 按条件查找:

1.找出销售部门中年纪最大的员工的姓名
select name from emp where age=(select max(age)from emp);

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

 2.求财务部门最低工资的员工姓名
select name 
from emp 
where incoming=(select min(incoming) from emp 
inner join dept
on emp.dept2=dept.dept1 and dept_name='财务') ;

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

 3.列出每个部门收入总和高于8000的部门名称 
SELECT dept.dept_name as 部门名称,sum(emp.incoming) as 总收入 
FROM emp 
INNER JOIN dept 
ON dept.dept1 = emp.dept2 
GROUP BY dept.dept_name HAAVING 总收入 > 8000;
MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习
 4.求工资在7500到8500元之间,年龄最大的人的姓名及部门  
select emp.name,dept.dept_name,emp.age,emp.incoming
from emp 
inner join dept
on emp.dept2=dept.dept1 
where incoming between 7500 and 8500 and age=(select max(age) from emp);
MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习 5.找出销售部门收入最低的员工入职时间
select emp.worktime_start 
from emp 
inner join dept 
on emp.dept2=dept.dept1 where incoming=(select min(incoming) from emp);

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

6.财务部门收入超过2000元的员工姓名
select emp.name from emp 
inner join dept 
on emp.dept2=dept.dept1 where incoming>2000 and dept.dept_name='财务';

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

7.列出每个部门的平均收入及部门名称
select dept_name,avg(emp.incoming) as 部门平均收入 
from emp innerjoin dept 
on emp.dept2=dept.dept1  group by dept.dept_name;

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

8.IT技术部入职员工的员工号
select dept.dept_name,emp.sid 
from emp inner 
join dept 
on emp.dept2=dept.dept1  where dept.dept_name='IT技术';

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

9.财务部门的收入总和;
select dept.dept_name,sum(incoming) as ‘总收入’ 
from emp 
inner join dept 
on emp.dept2=dept.dept1  where dept.dept_name='财务';
MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习
10.先按部门号大小排序,再依据入职时间由早到晚排序员工信息表*  
select dept.dept_name,emp.dept2 
from emp 
inner join dept 
on emp.dept2=dept.dept1  order by dept.dept1;
select dept.dept_name,worktime_start 
from emp 
inner join dept 
on emp.dept2mp.dept2=dept.dept1  order by worktime_start;

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

11.找出哪个部门还没有员工入职; 
select * from emp where worktime_start is null;
MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习 12.列出部门员工收入大于7000的部门编号,部门名称;
SELECT emp.dept2,dept.dept_name,incoming FROM emp INNER JOIN dept
ON emp.dept2 = dept.dept1 where incoming>7000;

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

13.列出每一个部门的员工总收入及部门名称; 
SELECT dept.dept_name as '部门名称',sum(incoming) as '部门员工总收入' 
FROM emp 
inner JOIN dept 
ON emp.dept2 = dept.dept1 group by dept.dept_name;

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

14.列出每一个部门中年纪最大的员工姓名,部门名称*
SELECT dept.dept_name,age 
FROM (SELECT dept2, MAX(age) AS max_age
    FROM emp 
    GROUP BY dept2 )
AS 
max_age_table 
INNER JOIN emp 
ON emp.dept2 = max_age_table.dept2 AND emp.age = max_age_table.max_age 
INNER JOIN dept 
ON emp.dept2 = dept.dept1;

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

15.求李四的收入及部门名称
SELECT emp.name,incoming,dept.dept_name as '部门名称'  
FROM emp 
INNER JOIN dept 
ON emp.dept2 = dept.dept1 where name='李四';

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

16.列出每个部门中收入最高的员工姓名,部门名称,收入,并按照收入降序*
SELECT emp.name,dept.dept_name,emp.incoming 
FROM (SELECT dept2,2, MAX(incoming) 
AS 
max_incoming 
FROM emp     
GROUP BY dept2 )
AS 
max__incoming_table 
INNER JOIN emp 
ON emp.dept2 = max_incoming_table.dept2 ANDD emp.incoming = max_incoming_table.max_incoming INNER JOIN dept 
ON emp.deept2 = dept.dept1 ORDER BY emp.incoming DESC;

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

17.列出部门员工数大于1个的部门名称*
SELECT dept.dept_name 
FROM dept 
INNER JOIN (SELECT dept2, COUNT(*) 
AS 
emp_count FROM emp GROUP BY dept2  HAVING COUNT(*) > 1 ) 
AS 
emp_count_table ON dept.dept1 = emp_count_table.dept2;

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习

18.查找张三所在的部门名称
SELECT emp.name,dept.dept_name as '部门名称' 
FROM emp 
INNER JOINdept 
ON emp.dept2 = dept.dept1 where name='张三';

MySQL每日一练:多表查询——连接查询、子查询(1),MySQL,日常,mysql,数据库,学习文章来源地址https://www.toymoban.com/news/detail-555792.html

到了这里,关于MySQL每日一练:多表查询——连接查询、子查询(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

    🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 在项目开发中,在进行数据库表结构设计时,会根据业务需求以及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联

    2024年02月10日
    浏览(48)
  • 【JaveWeb教程】(22) MySQL数据库开发之多表查询:内连接、外连接、子查询 详细代码示例讲解(最全面)

    1.1.1 数据准备 SQL脚本: 1.1.2 介绍 多表查询:查询时从多张表中获取所需数据 单表查询的SQL语句:select 字段列表 from 表名; 那么要执行多表查询,只需要使用逗号分隔多张表即可,如: select 字段列表 from 表1, 表2; 查询用户表和部门表中的数据: 此时,我们看到查询结果中包

    2024年01月22日
    浏览(58)
  • MySQL每日一练:单表查询

    一、首先需要创建一个名为worker的表:   二、插入数据: 三、查询 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。   3、求出所有职工的人数。   4、列出最高工和最低工资。    5、列出职工的平均工资和总工资。    6、创建一个

    2024年02月13日
    浏览(29)
  • 连接查询(多表查询)——MySQL

    又称多表查询,当 查询的字段涉及多个表 的时候,就要用到连接查询 分类: 为表起别名: 提高语句的简洁度 区分多个重名字段 注意 :如果为表起了别名,则查询的字段就 不能使用原来的别名去限定 查询A、B 交集部分数据 语法: 隐式内连接 select 字段列表 from 表1,表

    2024年02月04日
    浏览(49)
  • MySQL ——多表连接查询

    内连接 : 假设A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配上的记录查询出来。A和B两张表没有主付之分,两张表是平等的。 :inner join on 语句:select * from a_table a inner join b_table b on a.a_id = b.b_id; 说明:组合两个表中的记录,返回关联字段相符的记录,也就

    2024年04月16日
    浏览(55)
  • 数据库MySQL(五):多表查询

    项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在则会各种联系。 一对多/多对一 案例:部门与员工的关系 关系:一个部门对应多个员工,一个员工对应一个部门 实现

    2024年02月08日
    浏览(55)
  • MySQL单表查询与多表连接查询

    单表查询 创建数据表emp 插入数据 -- 1. 查询出部门编号为30的所有员工 -- 2. 所有销售员的姓名、编号和部门编号。 -- 3. 找出奖金高于工资的员工。 -- 4. 找出奖金高于工资60%的员工。 -- 5. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。 -- 6. 找出部门

    2024年02月13日
    浏览(44)
  • 【MySQL系列】MySQL复合查询的学习 _ 多表查询 | 自连接 | 子查询 | 合并查询

    「前言」文章内容大致是对MySQL复合查询的学习。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 前面篇章讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够,下面将讲解复合查询,首先回顾一下基本的查询。 使用的数据库是之前篇章的雇

    2024年02月11日
    浏览(50)
  • MySQL数据库基础(三):多表查询,子查询,开窗函数

    表与表之间的关系 在SQL语句中,数据表与数据表之间,如果存在关系,一般一共有3种情况: ① 一对一关系(高级) 比如有A、B两张表,A表中的每一条数据,在B表中有一条唯一的数据与之对应。 用户表user user_id(用户编号) 账号username 密码password 001 admin admin888 002 itheima

    2024年02月12日
    浏览(45)
  • 【MySQL数据库 | 第十三篇】多表查询

    多表查询是指在一个SQL语句中使用多个表进行数据查询和操作。多表查询可以对数据表之间的关系进行查询,例如可以通过连接多个表来获取更完整的数据信息。关于单表查询我们也介绍过,已经整理成文章发布:【MySQL数据库 | 第九篇】DQL操作_我是一盘牛肉的博客-CSDN博客

    2024年02月08日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包