zoukankan      html  css  js  c++  java
  • 九, 表查询 三

    左、右连接

    关于左、右连接指的是查询判断条件的参考方向
    即:
    左外连接:
    左表不加限制,保留左表的数据,匹配右表,右表没有匹配到的行中的列显示为null。

    右外连接:
    右表不加限制,保留右表的数据。匹配左表,左表没有匹配到的行中列显示为null。

    完全外连接:
    左右表都不加限制。即右外连接的结果为:左右表匹配的数据+左表没有匹配到的数据+右表没有匹配到的数据。

    语法:

       LEFT/RIGHT/FULL OUTER JOIN。 通常省略OUTER关键字, 写成:LEFT/RIGHT/FULL JOIN

    (+)号的作用:
    +号可以理解为补充的意思,加在那个表的列上就代表这个表的列为补充。加在右表的列上代表右表为补充,为左连接。加在左表的列上代表左表为补充,为右连接。注意:完全外连接中不能使用+号。

    关于使用(+)的一些注意事项:
    操作符只能出现在WHERE子句中,并且不能与OUTER JOIN语法同时使用。

    1.当使用(+)操作符执行外连接时,如果在WHERE子句中包含有多个条件,则必须在所有条件中都包含(+)操作符。

    2.操作符只适用于列,而不能用在表达式上。

    3.操作符不能与OR和IN操作符一起使用。

    4.操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。

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

    交叉连接(CROSS JOIN):
    用于产生笛卡尔积

    SELECT * FROM emp CROSS JOIN dept;

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

    自然连接(NATURAL JOIN):
    自动找到匹配的关联字段,消除掉笛卡尔积

    SELECT * FROM emp NATURAL JOIN dept;

    但并不是所有的字段都是关联字段,设置关联字段需要通过约束指定
    JOIN…USING子句:
    用户自己指定一个消除笛卡尔积的关联字段

    SELECT * FROM emp JOIN dept USING(deptno);

    JOIN…ON子句:
    用户自己指定一个可以消除笛卡尔积的关联条件

    SELECT * FROM emp JOIN dept ON(emp.deptno=dept.deptno);

    连接方向的改变:
    左(外)连接:LEFT OUTER JOIN…ON;
    右(外)连接:RIGHT OUTER JOIN…ON;
    全(外)连接:FULL OUTER JOIN…ON; –> 把两张表中没有的数据都显示

    SELECT * FROM emp RIGHT OUTER JOIN dept ON(emp.deptno=dept.deptno);
  • 相关阅读:
    自适应网页设计?
    布局设置加版心?
    bootstrap框架使用?
    Electron框架下,如何使用jquery?
    轮播插件swiper.js?
    表格出现滚动条设置?
    overflow问题--滚动设置?
    移动端页面适配ipad?
    移动端页面构建需注意?
    复杂的Sql分组
  • 原文地址:https://www.cnblogs.com/Nedved/p/10472453.html
Copyright © 2011-2022 走看看