MySql_Day4—去重distinct—连接查询(内、外连接、多张表连接)

1.distinct关键字去除重复记录——distinct只能出现在所有字段的最前面
  • select distinct job from emp;
    

在这里插入图片描述

  •   select distinct deptno,job from emp;
    

在这里插入图片描述

  • 统计岗位的数量?
  •   select count(distinct job) from emp;
    

在这里插入图片描述

2.连接查询
2.1.连接查询的分类
  • SQL92:一些老的DBA可能还在使用这种语法。DBA:DataBase Administrator,数据库管理员
  •   SQL92语法:
      ……
      A,B
      where
      ……
    
  • SQL99:比较新的语法
  •   SQL99语法:
      ……
      	A
      join
      	B
      on
      	连接条件
      where
      ……
    

在这里插入图片描述

  • 区分内外连接
    ——>join前,有无left、right。
  • 内外连接的区别
    外连接:在2张表匹配不上时,会填充NULL
    内连接:在2张表匹配不上时,就不显示了
  • 关于表的别名
    select e.ename,d.dname from emp e,dept d;
    • 表的别名有什么好处?
      1、执行效率高。
      2、可读性好。
2.2.内连接之等值连接
  • 找出每个员工,显示员工名和部门名——emp与dept表联动
  •   SQL99语法:select e.ename ,  d.dname from emp e join dept d on e.deptno=d.deptno;
    

在这里插入图片描述

  •   SQL92语法:select e.ename ,  d.dname from emp e join dept d where e.deptno=d.deptno;
    

在这里插入图片描述

2.3.内连接之非等值连接

特点是:连接条件中的关系是非等量关系。

  • 找出每个员工的工资等级,要求显示员工名、工资、工资等级
  •    select e.ename,e.sal,s.grade from emp e join salgrade s on (e.sal>=s.losal and e.sal<=hisal);
    或 select e.ename,e.sal,s.grade from emp e join salgrade s on (e.sal between  s.losal and hisal);
    

在这里插入图片描述

2.4.自连接——必须借用“别名”

特点是:一张表看做两张表。自己连接自己。

  • 找出每个员工的上级领导,要求显示员工名和对应的领导名。
  •   select a.ename as '员工',b.ename as '领导' from emp a (inner可以省略) join emp b on a.mgr=b.empno;
    

在这里插入图片描述

2.5.外连接——分主、副表
  • 外连接最重要的特点是:主表的数据无条件的全部查询出来。
  • 找出每个员工的上级领导,要求显示员工名和对应的领导名。
  •   select a.ename as '员工',b.ename as '领导' from emp a left (outer可以省略) join emp b on a.mgr=b.empno;
    

在这里插入图片描述

  • 找出哪个部门没有员工?
  •   select d.* from emp e right join dept d on e.deptno=d.deptno where e.empno is null;
    

在这里插入图片描述

2.6.——3张表的连接

A先和B连接,再和C连接

  •   ....
      		A
      join
      		B
      join
      		C
      on
      		...
    
  • 找出每一个员工的部门名称、工资等级、以及上级领导。
  •   select
      	e.ename,d.dname,s.grade,e2.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 e2
      on
      	e.mgr=e2.empno;					//匹配领导名
    

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值