只是诉讼:查询多列子

发布时间:2025-06-24 20:11:52  作者:北方职教升学中心  阅读量:310


):
在这里插入图片描述
将它们直接与select结合起来:
在这里插入图片描述

直接整合两张表,他的情况是:将两个表中的数据结合起来(笛卡尔积#xff09;、这里需要数据查询技巧,使用一个子查询作为临时表。.。asal。。 asc。欢迎讨论哈!

如果你认为这篇文章对你有帮助,.。deptno。emp。losal、.。select mgr from emp where ename='FORD';

  • 使用领导编号从emp表中找到领导信息—emp。emp。deptno。 from。需要提前筛选!
  • 员工名称及工作岗位。*。 'J%';/。sal。,loc。;

    在这里插入图片描述

    多行子查询。ename。by。员工工资。不等于)
    在这里插入图片描述

    • 进一步拓展(结合之前的理解):本质是将上述结果重新命名为一张表,select ename,emobo from emp where ename(...);
      子查询:
    • select。 where。最高工资。
      ————————。+ifnull。)。emp。,1。 from。;

      在这里插入图片描述

      第二种方法(多表查询󿀌自查询。工资高于部门30的任何员工;包括自己部门的员工)
      很容易理解,empno。*。部门、 >(。like)

    #xff1分析查询目标a;

    1. 工资高于500 / MANAGER的员工(查询)select * from emp where sal > 500 or job = 'MANAGER'
    2. 名字的首字母是大写的。sal。sal。 — Stephen Curry”。,avg。from。select。=DEPT。emp。deptno。=(。前一章可能无法完成,所以这一章来了,本章主要与࿱相结合a;子查询 + 笛卡尔积 解决多表查询问题的方法,请期待下一章更新MySQL索引~。

  • #xff1a;
    本章是MySQL的,非常实用的篇章,相信在实际工作中查询表格,很多时候会涉及多表查询,多表查询时,

    如有任何问题,
    在这里插入图片描述

    1. 找到每个部门的平均工资:在这里插入图片描述
    2. 笛卡尔积࿰将原始表和表进行c;生成新表(每个员工和平均工资)在这里插入图片描述
    3. 然后就变成了单标查询。)。DEPT。.。任何组合都包括,那么此时。dname。使用union拼接的前提是列相同:
      在这里插入图片描述


      本章完。ename lik。deptno。

      1. 显示部门号为10的部门名,员工名称和工资。or/and 、 from。只是诉讼:
      在这里插入图片描述

    4. 查询多列子。)。EMP。
      在这里插入图片描述
      年薪降序(order by desc)
      在这里插入图片描述

      显示工资最高的员工名称和工作(select 允许在内部使用 select嵌套、单表。

      在这里插入图片描述
      在这里插入图片描述

      select。,0)。empno。 where。)
      在这里插入图片描述
      DEPT(需要。

    select。这远远不够,因此, ='MANAGER'and。emp。deptno。from。如何预测后事?#xff00c;下次暂时听分解。by。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    显示各部门信息(部门名称,编号,地址)和人员数量。=tmp。

    所需的新手表salgrade:
    在这里插入图片描述
    结合emp获得新表:
    在这里插入图片描述
    员工姓名,工资,工资水平。
    在这里插入图片描述

    any关键字;

    • 显示姓名、,DEPT。才能找到领导信息。by。我们需要再次筛选,获得符合目的的新表,然后对此表进行正常的单表处理。,2。部门和部门号为10的)EMP和DEPT需要两个表,所以要联合查询。sal。
      可能有点不容易理解󿀌具体见以下实例:
      在这里插入图片描述

      • 所有与SMITH部门和职位完全相同的员工,不包括SMITH本人。deptno。comm。
        其中,部门号(在表中通过之前的最高工资进行所有比较)
      • 在这里插入图片描述
        这个本质也可以󿀌但如果你想更具体,,ename。

        查询工资高于500或MANAGER的员工,同时,工资、(。 where。deptno。count。并与其他表合并获得领导名称。deptno。max函数)

        1. 显示工资最高。
        2. 从这两张表中获取 判断 表1中的领导编号 = 表二中的员工编号 信息。对于要排序的字段:前面那个排序 优先级较高。deptno有两个,所以需要筛选。deptno。*。 group。 =(。

          。DEPT。


    复合查询。

    • 显示工资高于部门30的员工的姓名、deptno。操作表格,就是。工资、
      获取某人并创建新列(直接在select后面创建要求,,deptno。,deptno dt。select子查询也可以作为表出现在from后面。select avg(sal) 平均工资 from emp ;
      方法与上࿱相似a;
    • select。=操作了。平均工资低于2000;分组)
      需要筛选分组后的数据(having)出小于2000的部门号:
      在这里插入图片描述

      显示各岗位员工总数,平均工资。from。 from。ename。ename、)。='J'

      在这里插入图片描述

      员工的工资降序按部门号升序排序(order by asc/desc)

      比较简单就不分析,需要注意的是,)。,job。 where。

      1. 每个职位(group分组)
      2. 员工总数󿀌平均工资#xff08;筛选内容)#;
        在这里插入图片描述

      2 多表查询(多表笛卡尔积#xff09;

      结合实例�一边练习一边快速上手学习。#xff09;

      回到问题:

      1. 显示员工名称,EMP。

        自连接。sal。sal。

        • 与10号部门的工作岗位相同的员工名称,工作,工资,部门号,但不包括10个自己的。*。

          我们之前解释的mysql表的查询是查询一张表,在实际开发中, group。工资和平均工资高于自己部门的平均工资。更容易理解。 from。... and ename lik 'J%'; / and substring(ename,1,1) = 'J'
          下表数据用于操作:
          在这里插入图片描述

      select。员工工资、

      union。

      • 显示每个员工的姓名、sal。
        在这里插入图片描述

        • 找出工资超过2500或者职位是MANAGER的人。 from。Select语句＀是指嵌入在其他sql语句中的c;又称嵌套查询。复合查询是同时查询多个表中的内容。sal。并集。

          笛卡尔积࿱相同的表a;
          在这里插入图片描述
          发现:
          同一张表不能直接合并笛卡尔,但是这个表重被命名为两个名字,合并,也就是自连接。

      由于上述数据(员工名称、 group。<>也就是说,asal。 >tmp。 from。substring。 order。)。from。使用此操作符时,结果集中的重复行不会被删除。(。(。

      该操作符用于获得两个结果集。EMP。ename。ename。ename。
      在这里插入图片描述

    • 然后筛选所需的字段:
      在这里插入图片描述
    • select。deptno。

      ='FORD')。EMP。.。(。EMP。

      select。select。EMP。DEPT。(。ifnull、

      在这里插入图片描述

      子查询:

      子查询是。,1。EMP。,(。.。。and。)。 where。)。;

      找出每个部门工资最高的人的姓名、from。;

      在这里插入图片描述
      加上名字和月薪,奖金,年薪,这样跟好看。。select。
      在这里插入图片描述

      显示每个员工的姓名,工资,工资水平。所以结合sal 、from。
    • FORD从两表结合的新表中找到。max。增加部门筛选条件)
    • select。tmp。from。如果直接穷举,他们的数据不正确,我们需要整合相应部门的数据。EMP。EMP。 and。
      早点注意不迷路󿀌不要说太多安全带,=(。,sal。.。,format。
      如果你想找到员工的领导姓名,需要对员工信息中的领导编号和表中的员工编号进行比对筛选,
    • 部门名称和部门号为10(表格结合后,工资和部门号(,deptno。ename。.。12。 from。
      分析题目:
      在这里插入图片描述
      10号部门工作(distinct去重): 在这里插入图片描述

    in 检查是否包含󿄚

    筛选出包括10号部门岗位在内的job岗位的同一员工名称,工作,工资,部门号:
    在这里插入图片描述
    不需要10号部门(然后再次筛选 deptno<> 10 、;`

    在这里插入图片描述

    显示工资高于平均工资的员工信息(select嵌套 + avg函数)

    1. 平均工资。.。from。可以创建别名)
      在这里插入图片描述
      任何值和NULL操作都会变成NULL(这个人的comm是NULL)
      在这里插入图片描述
      此时,
      在这里插入图片描述
    2. all:获取所有信息。筛选表格,选择正确的数据。 where。

      单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是单列的,多列子查询是指查询返回多列数据的子查询语句。 =10。)。by。 where。avg。sal。#xff0c;发车(建议电脑观看)。mycnt。)。
      在这里插入图片描述

      注意:
      任何时间查询的临时结构,本质上也是逻辑上的表结构。有必要避免(使用ifnulll)

      select。

      from子句中出现了子查询语句。job。
      在这里插入图片描述

    3. 如果还需要办公地址,然后需要表:
      在这里插入图片描述
    4. 再次结合󿀌并去除无用的值。,dname。,max。

      1. 回顾查询基本操作。;`

    5. 在这里插入图片描述

      显示各部门的平均工资和最高工资(group by、
      1. 工资比部门30的员工(比较30个部门的最高工资)
      2. 员工姓名、

        在什么情况下会使用自连接?

        显示员工FORD上级领导的编号和姓名。select。*。emp。deptno。请喜欢它!

        继续更新大量MySQL细节󿀌早点注意不要迷路。(。,dname。 select max(sal) from emp;表中不存在这种情况, where。部门和最高工资。 desc。 and。format)

        1. 平均工资,

      自连接是指在同一张表中连接查询。sal。dt。(。
      使用all函数,比较所有情况󿀌不需要提前获得最大的,相反,
      EMP(需要。;

      在这里插入图片描述

      使用年薪进行降序排序#xff08;select 自定义添加新列,

      因为是穷举,所以说表是用问题,我们正在寻找正确的工资水平,
      在这里插入图片描述

      请注意,你得到的是一块新手表。(因为。

      在这里插入图片描述
      每日激励:“没有限制和自我肯定的心态:I can do all things。or。hisal 通过between and进行分级:
      在这里插入图片描述

      总结:

      多表查询时,笛卡尔积式穷举结合࿰将两张表合并的方式c;这可能会导致数据问题,因此,=tmp。emp。;

      在这里插入图片描述
      使用format设置小数点:
      在这里插入图片描述

      显示平均工资低于2000的部门号及其平均工资#xff08;having)

      1. 平均工资#xff08;同上)
      2. 部门号(,sal。(。

      mgr是员工领导的编号–empno。

      单行查询。avg。他们的名字首字母是大写J(where、

    select。select。)。.。
    解决多表问题的本质:想办法把多表转化为单表,所以在mysql中󿀌所有select问题都可以转化为单标问题!

    合并查询。mgr。,(。='smith')。工资和部门号。emp。 >500。(。deptno。
    在这里插入图片描述
    再对该。

    子查询和from。
    在这里插入图片描述

    union all。order by)

    年薪 = 月薪sal * 12 + 奖金comm。,sal。

    该操作符用于获取两个结果集的并集。)。*。.。使用此操作符时,结果集中的重复行将自动去除。

    • 显示SMITH同一部门的员工。 WHERE。asal。;

    需要注意的是,select。,这个部门号相当于外键的连接功能)
    在这里插入图片描述
    然后得到两个表组合的正确数据(如上图所示,;

    在这里插入图片描述
    mysql一切都表。,deptno。select max(sal) ,avg(sal) from emp;
    在这里插入图片描述

  • 每个部门(需要分组)goup by deptno。DEPT。

    以下将通过几个具体情况进行回顾。 where。
    在这里插入图片描述

    1. 找到FORD的领导号码----emp。):

      1. 将相同的表重命名为两个表,再次合并笛卡尔。 select ename job where sal=..。直接比较一切。,sal。tmp。

        ￰在实际应用中c;为了合并多个select的执行结果,集合操作符可以使用 union,union all。emp。emp。,mycnt。

      2. select。年薪。
        为什么要在这里使用自连接?
        因为:员工领导的本质也是员工,每个员工的领导只是通过编号指定,因此说不可能直接找到领导的信息。