多关系连接查询(内,外,自身连接)

先创两张表做例子,一张部门表,一张员工表

部门表(dept):这里写图片描述
员工表(emp):
这里写图片描述

1.内连接

  • 一般格式
    select[distinct/all]<目标列表达式[别名]清单>
    from<关系名1[别名1]>inner join<关系名2[别名2]>
    on<连接条件表达式>;

    select[distinct/all]<目标列表达式[别名]清单>
    from<关系名[别名]清单>
    where<连接表达式>;
    需要连接查询的关系名在from子句中指定,连接类型和连接条件可以在from子句或者where子句中指定。

  • 例:
    SELECT e.ename,e.job,e.deptno,d.deptno,d.dname
    FROM emp e INNER JOIN dept d
    ON e.deptno = d.deptno;
    或:
    SELECT e.ename,e.job,e.deptno,d.deptno,d.dname
    FROM emp e,dept d
    WHERE e.deptno = d.deptno;
    注:上述命令中“e”,“d”分别表示部门表和员工表的别名,此处只是为了简化表名,但是一旦为关系名指定了别名,则在该命令中必须用别名代替该关系名。

    输出结果(部分):
    这里写图片描述
    内连接是使用最多的一种连接类型。在连接的两表中只有满足连接条件的元组,才作为结果输出。


2.外连接,又分为左外连接(Left Join),右外连接(Right Join),全外连接(Full Join);

  • 左外连接:除了返回两表中满足条件的元组以外,还返回左侧表中不匹配元组,右侧表中以空值(NULL)替代
  • 先插入一条新数据:
    INSERT INTO dept VALUES(60,’OPERATIONS’,’BOSTON’);
    然后执行命令:
    SELECT e.ename,e.job,e.deptno,d.deptno,d.dname
    FROM dept d LEFT JOIN emp e
    ON e.deptno = d.deptno;

    此时由于我们刚加入的部门编号为60但是员工表中没有对应部门编号为60的员工,所以以NUll补全。
    结果:这里写图片描述
  • 右外连接:除了返回两表中满足条件的元组以外,还返回右侧表中不匹配元组,左侧表中以空值(NULL)替代:同理,插入一条部门编号为70的数据:
    INSERT INTO emp VALUES(7788,’LUCE’,’ANALYST’,’1983-4-19’,2700.00,70);
    然后执行:
    SELECT e.ename,e.job,e.deptno,d.deptno,d.dname
    FROM dept d RIGHT JOIN emp e
    ON e.deptno = d.deptno;

    结果:这里写图片描述
  • 全外连接:除了返回两表中满足条件的元组以外,还返回左侧表中不匹配元组,右侧表中以空值(NULL)替代,以及右侧表中不匹配元组,左侧表中以空值(NULL)替代

    重点区别:等值连接是只把满足条件的两个表的行相连,然后显示出来。完全外连接是把匹配查询条件的行、左表没有匹配到的、右表没有匹配到的都显示出来

3.自身连接

有时,一些特殊的查询需要对同一个关系进行连接查询,成为表的自身连接:
例:要找到某人的间接负责人,则要先找到他的直接负责人,然后通过找他直接负责人的负责人找到某人的间接负责人。
—-先创建两张相同的表:
emp01:这里写图片描述
emp02:这里写图片描述
执行命令:
SELECT e1.Eno,e2.Emgr
FROM emp01 e1,emp02 e2
WHERE e1.Emgr=e2.Eno

结果:
这里写图片描述
这就找到了间接负责人。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值