• 5、关联查询


    1.左右连接

    关于左右连接指的是查询判断条件的参考方向,

    1:下面有如下查询:

    Sql>Select * from emp e,dept d where e.deptno=d.deptno;

    如上查询emp与dept的所有信息,这是可以看到信息里没有40部门的信息,原因就在于上述查询语句是以emp表为参考的,而在emp中没有员工在40部门,那么我们想要显示40部门的信息,就必须应用左右连接来做。

    语句修改为:select * from emp e, dept d where e.deptno(+)=d.deptno;

     

    “(+)”就用于左、右连接的更改

    (+)=:放在等号的左边,表示的是右链接

    =(+):放在右边,表示的是左连接

    这种符号是oracle数据库自已所独有的,其他数据库不能使用。

    Select e.ename,e.job,m.ename from emp e,emp m where e.mgr=m.empno(+);

     

    除了以上的表连接操作之外,在sql语法中,也提供了另外一套用于表连接的操作sql,格式如下:

    Select  table.column,table2.column from table [cross join table2] [natural join table2]|[join table2 using(column_name)] [join table2 on(table1.column_name=table2.column_name)]|[left|right|full outer]

    2.交叉连接(cross join):用于产生笛卡尔积

    Sql>Select * from emp cross join dept;

    笛卡尔积本身并不是属于无用的内容,在某些情况下还是需要使用的

    3.自然连接(natural join):自动找到匹配的关联字段,消除笛卡尔积

    Sql>Select * from emp natural join dept;

    但是并不是所有的字段都是关联字段,设置字段需要通过约束指定;

    4.join…using子句:用于自已指定一个消除字段需要通过约束指定;

    Sql>Select * from emp  join dept using (deptno);

    5.join…on子句:用户自已指定一个可以消除笛卡尔积的无关条件

    Sql>Select * from emp join dept on(emp.deptno=dept.deptno);

    6.连接方向的改变:

    左(外)连接:left  outer   join….on;

    右(外)连接:right outer   join…on;

    全(外)连接:full   outer   join…on;---------->把两张表中没有的数据都表示

  • 相关阅读:
    ORACLE 数据迁移到SQL SEVER2005的问题
    sql server性能分析检测数据库阻塞语句
    经典存储过程
    sql server性能分析查询死锁的sql语句
    sql server性能分析索引使用效率评估
    discuz!X2.5不改代码即可去掉网址后面的forum.php后缀
    discuz!X2.5伪静态设置
    详解ListView
    frameset、frame和iframe的区别
    android中的Context到底该怎么用
  • 原文地址:https://www.cnblogs.com/quyong/p/6688214.html
Copyright © 2020-2023  润新知