zoukankan      html  css  js  c++  java
  • 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;---------->把两张表中没有的数据都表示

  • 相关阅读:
    DELPHI给整个项目加编译开关
    TThread.Queue和TThread.Synchronize的区别
    中文分词 《第七篇》
    搜索结果的处理和显示《第六篇》
    高级搜索 《第五篇》
    索引管理 《第四篇》
    执行搜索 《第三篇》
    构建索引 《第二篇》
    Lucene.net 基本示例 《第一篇》
    通过配置的方式Autofac 《第三篇》
  • 原文地址:https://www.cnblogs.com/quyong/p/6688214.html
Copyright © 2011-2022 走看看