四、sql基础:多表关联查询--【Oracle数据库】

原创 2018年04月16日 19:50:41

四、多表关联查询

4.1联合查询–等于链接–示例

员工表(员工id, 员工姓名,部门id)
部门表(部门id, 部门名称)
要查询员工id、姓名、部门名称:

select 员工表.员工id, 员工表.员工姓名, 部门表.部门姓名
    from 员工表,部门表
    where 员工表.部门id = 部门表.部门id;

4.2 联合查询–不等链接–示例

员工表(员工id, 员工姓名, 员工薪水)
薪水表(薪水等级,最低薪水,最高薪水)
要查询员工姓名、员工薪水、薪水等级:

select 员工表.员工姓名,员工表.员工薪水,
    薪水表.薪水等级
    from 员工表,薪水表
    whree 员工表.员工薪水 between 薪水表.最低薪水 and 薪水表.最高薪水;

4.3 联合查询–外链接(左、右连接)–示例

看4.1,当员工表中有一个员工的部门id是空,那么4.1查询出来的结果就没有该员工的信息,因为部门id(null)在部门表中找不到相对应的部门信息,所以他就不显示。

外连接解决了这一问题,使用外连接之后,可以显示所有员工的信息:–右链接

    select 员工表.员工id, 员工表.员工姓名, 部门表.部门姓名
        from 员工表,部门表
        where 员工表.部门id = 部门表.部门id(+);

我们要显示所有的员工信息,那么就在另一张表后加(+)

这样一旦某个员工没有部门,就会显示:
    -------------------------------
    | 员工姓名 | 部门id | 部门名称 |
    -------------------------------
    |  zhao    |  10    |    IT    |
    -------------------------------
    |  tai     |        |          |
    -------------------------------

那我们要显示所有的部门信息呢?万一这个部门下没有员工呢?–左连接

    select 员工表.员工id, 员工表.员工姓名, 部门表.部门姓名
        from 员工表,部门表
        where 员工表.部门id(+) = 部门表.部门id;
    -------------------------------
    | 员工姓名 | 部门id | 部门名称 |
    -------------------------------
    |  zhao    |  10    |    IT    |
    -------------------------------
    |          |   11   |   HR     |
    -------------------------------

4.4 联合查询–自链接–示例

员工表(员工id, 员工姓名,员工上级id)
这里需要注意,员工上级也在员工表中!
要查询员工id, 员工姓名,员工上级姓名:

    select 员工表.员工id,员工表.员工姓名,上级.员工姓名
        from 员工表,员工表 上级
        where 员工表.员工上级id = 上级.员工id;
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29668759/article/details/79965375

Oracle数据库之多表查询

SQL> –等值连接 SQL> –查询员工信息:员工号 姓名 月薪 部门名称SQL> select e.empno,e.ename,e.sal,d.dname 2 from emp e,de...
  • sihai12345
  • sihai12345
  • 2017-01-04 20:39:58
  • 2608

oracle 多表联合查询总结归纳

本次预计讲解的知识点 1、 多表查询的操作、限制、笛卡尔积的问题; 2、 统计函数及分组统计的操作; 3、 子查询的操作,并且结合限定查询、数据排序、多表查询、统计查询一起完成各个复杂查询的操作...
  • rosekin
  • rosekin
  • 2014-09-15 20:57:39
  • 44281

oracle数据库之多表联接查询(一)

--此文章可以作为sql脚本直接运行 /*   建表以及插入相关数据,为后面的查询做准备工作 */ --建学生信息表 create table studentinfo(   stuid...
  • prince_li_
  • prince_li_
  • 2012-06-29 21:08:55
  • 6207

多表关联查询(Oracle)

有时一个查询结果需要从两个或两个以上表中提取字段数据,此时需要使用多表关联查询。  1)笛卡尔积关联   create table a(    id number(7),    nam...
  • meenael
  • meenael
  • 2014-06-21 12:41:23
  • 35123

Oracle数据库学习(三)--基础查询及关联查询

1. SQL(基础查询) 1.1. 基本查询语句 1.1.1. FROM子句 SQL查询语句的语法如下: SELECT column [alias], …> FROM t...
  • qq_25409579
  • qq_25409579
  • 2016-03-22 23:26:31
  • 5186

mySql、oracle数据表的单表增删改查及多表关联查询

在对oracle数据库进行操作的时候,我们往往会有这样的困惑:         1、新增数据时,按照mySql的写法为什么新增不了?         2、多个数据表,通过外键关联,如何通过一条sql语...
  • chengxc2016
  • chengxc2016
  • 2016-12-17 16:22:28
  • 2422

SQL基础之二 多表连接查询

有三个表:T_USER, t_group, T_USER_GROUP1.select* from T_USER 2.select * from t_groupd3.select * from T_US...
  • qiu_1231
  • qiu_1231
  • 2017-08-10 15:22:56
  • 3171

图解SQL多表关联查询(内连接,左连接,全连接)

内连接左连接右连接 全外连接 
  • zp_wan
  • zp_wan
  • 2010-03-02 11:05:00
  • 3458

oracle 多表联合查询

http://blog.csdn.net/rosekin/article/details/39298255 此时如果要对分组后的数据再次进行过滤,则使用HAVING子句完成,那么此时的SQL语法...
  • qq_36026721
  • qq_36026721
  • 2017-04-17 22:38:55
  • 778

第22讲 SQL语言高级04--多表关联查询.PPT

  • 2009年10月25日 08:25
  • 340KB
  • 下载
收藏助手
不良信息举报
您举报文章:四、sql基础:多表关联查询--【Oracle数据库】
举报原因:
原因补充:

(最多只允许输入30个字)