首页 > 其他分享 >distinct关键字、连接查询

distinct关键字、连接查询

时间:2022-10-07 16:37:00浏览次数:44  
标签:ename join distinct 查询 关键字 emp deptno 连接

  • 把查询结果去除重复记录
    注意:原表数据不会被修改,只是查询结果去重
    去重需要使用一个关键字:distinct //只能出现在所有字段的最前方
  • 什么是连接查询
    从一张表中单独查询,称为单表查询
    emp表和dept表联合起来查询数据,从emp表中取员工名字,从dept表中取部门名字
    这种跨表查询,多张表联合起来查询数据,称为连接查询
  • 连接查询的分类
    根据语法的年代分类:
    • SQL92、SQL99,我们这里重点学习SQL99
  • 根据表连接的方式分类:
    • 内连接:
      • 等值连接
      • 非等值连接
      • 自连接
    • 外连接:
      • 左外连接(左连接)
      • 右外连接(右连接)
    • 全连接(不讲)
  • 当两张表进行连接查询时,没有任何条件的限制会发生什么现象?
    • 案例:查询每个员工所在部门名称
      当两张表进行连接查询,没有任何条件的限制的时候,最终查询结果条数,是两张表条数的乘积,这种现象被称为:笛卡尔积现象。
  • 怎么避免笛卡尔积现象?
    • 连接时加条件,满足这个条件的记录被筛选出来!
      注意:通过笛卡尔积现象得出,表的连接次数越多效率越低,尽量避免表的连接次数
  • 内连接之等值连接
    • 案例:查询每个员工所在部门名称,显示员工名和部门名
      select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno;//SQL92的语法
      select e.ename,d.dname from emp e join dept d on e.deptno = d.deptno;//SQL99的语法
  • 内连接之非等值连接
    • 案例:找出每个员工的薪资等级,要求显示员工名、薪资、薪资等级
      select e.ename,e.sal,sg.grade from emp e join salgrade sg on e.sal >= sg.losal and e.sal <= sg.hisal;
  • 内连接之自连接
    • 案例:查询员工的上级领导,要求显示员工名和对应的领导名
      select a.ename '员工名',b.ename '领导名' from emp a join emp b on a.mgr = b.empno;//13条记录,没有KING(内连接)
      以上就是内连接中的自连接:自连接的技巧:一张表看做两张表
  • 内连接(A和B连接,AB两张表没有主次关系,平等的):
    select e.ename,d.dname from emp e join dept d on e.deptno = d.deptno;
    //内连接特点:完成能够匹配上这个条件的数据查询出来
  • 外连接(右外连接):
    select e.ename,d.dname from emp e right join dept d on e.deptno = d.deptno;
  • 外连接(左外连接):
    select e.ename,d.dname from dept d left join emp e on e.deptno = d.deptno;
    right代表什么:表示将join关键字右边的这张表看成主表,主要是为了
    将这张表的数据全部查询出来,捎带着关联查询左边的表
    注意:外连接的查询结果条数一定是 >= 内连接的查询结果条数
    • 案例:查询每个员工的上级领导,要求显示所有员工的名字和领导名
      select a.ename '员工名',b.ename '领导名' from emp a left join emp b on a.mgr = b.empno;
  • 三张表、四张表怎么连接?
    • 语法:
      select ... from a join b on a和b的连接条件 join c on a和c的连接条件 join d on a和d的连接条件
      一条SQL中内连接和外连接可以混合,都可以出现
    • 案例:找出每个员工的部门名称以及工资等级,还有上级领导,要求显示员工名,部门名,薪资,薪资等级
      select
      e.ename,d.dname,e.sal,s.grade,l.ename
      from
      emp e
      join
      dept d
      on
      e.deptno = d.deptno
      join
      salgrade s
      on
      e.sal between s.losal and s.hisal
      left join
      emp l
      on
      e.mgr = l.empno;

标签:ename,join,distinct,查询,关键字,emp,deptno,连接
From: https://www.cnblogs.com/song-hua/p/16759959.html

相关文章

  • super关键字
    1.super是一个关键字,全部小写。2.super和this对比学习this:​能出现在实例方法和构造方法中。​this的语法是:“this.''、“this()''​this不能使用在静态方法中......
  • Dockerfile关键字
    Dockerfile是用于构建docker镜像的脚本文件,通过编写脚本,可以实现自定义镜像。Dockerfile关键字FROM基础镜像,Dockerfile第一条指令必须是FROM。例如,下列就表示使用ubunt......
  • MySQL--多表查询--2022年9月30日
    第一节  多表关系1、一对多2、多对多3、一对一第二节  多表查询概述1、笛卡尔积:select*fromA,B;......
  • 静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static
    publicclassAa{intx=1;staticinty=2;publicstaticvoidmethod()//静态方法{System.out.println("实例变量x="+newTest().x);//在静态方......
  • sql表合并查询
    使用sql语句将数据库中的一个表里的数据导入到另一个表中两个表,表1表2如果要将表1的数据并入表2用以下语句即可insertinto表2(字段1,字段2)select字段1,字段2fr......
  • 带你5分钟搞懂一条SQL查询语句是如何执行的
    前言平时我们使用数据库查询,我们看到的只是输入一条语句,返回一个结果,却不太关心这条语句在MySQL内部的执行过程,所以今天我想把MySQL的查询过程拆解一下,借由这个过程,对MySQL......
  • (四)模仿学习-完成后台管理页面查询
    我们从网上下载一份代码学习,模拟如果在实际工作中,我们入职的时候会首先拿到一个不复杂但是技术比较老的项目,因为作为新人很难去直接参与大而且新的项目进行开发。我们从......
  • (五)模仿学习-完成后台管理页面查询
    我们从网上下载一份代码学习,模拟如果在实际工作中,我们入职的时候会首先拿到一个不复杂但是技术比较老的项目,因为作为新人很难去直接参与大而且新的项目进行开发。我们从......
  • day06-多表查询02
    多表查询024.表复制自我复制数据(蠕虫复制)有时,为了对某个sql语句进行效率测试,我们需要海量数据时,可以用此法为表创建海量数据--为了对某个sql语句进行效率测试,我们需......
  • 深入理解 volatile 关键字
    volatile关键字是Java语言的高级特性,但要弄清楚其工作原理,需要先弄懂Java内存模型。如果你之前没了解过Java内存模型,那可以先看看之前我写过的一篇「深入理解Java......