zoukankan      html  css  js  c++  java
  • sql的交叉连接,内连接,左外连接,右外连接,全外连接总结

    实践是最好的检验,一直都对这几个连接查询出来的结果有什么不同不大理解,然后自己放一块查询比较了一下,用结果来说话~
    先建两张表如下:
    t1:
    id  name  age
    1  张三   18
    2  李四   25

    t2:
    id  name  age
    1  王五    25
    2  大白   30

    1.交叉连接:也叫笛卡尔积
    select * from t1 cross join t2; /*不带查询条件的交叉连接/
    select * from t1 ,t2;/*这样默认是cross join/
    select * from t1 cross join t2 where t1.age = t2.age;/*带查询条件的交叉连接,但是不能用on连接子句,只能用where /
    查询结果

    2.内连接:查询结果是t1和t2的公有部分
    select * from t1 inner join t2 on t1.age = t2.age;
    这里写图片描述
    可以看出当查询条件一样时交叉连接和内连接的查询结果一样,只不过交叉连接使用where子句作查询条件 而内连接用on子句作查询条件

    3.左外连接:查询结果是左表的其它部分 再加上t1和t2的公有部分(这里左表即t1)
    select * from t1 left join t2 on t1.age = t2.age;
    这里写图片描述

    3.右外连接:查询结果是t1和t2的公有部分 再加上右表的其它部分(这里右表即t2)
    select * from t1 right join t2 on t1.age = t2.age;
    这里写图片描述

    4.全外连接:查询结果是t1和t2的公有部分 再加上左表和右表的其它部分
    select * from t1 full join t2 on t1.age = t2.age;
    这里写图片描述

    注:

    1.hibernate中用.关联的是一个实体或组件是默认是采用交叉连接,但是不能关联一个集合,否则报错。所以在hibernate中对于集合我们要显示使用内连接。

    2.若将两个表的结果连接起来则用union。

  • 相关阅读:
    Python-24-多线程
    RT-Thread动态内存堆的使用
    Linux编程概念
    Linux_C语言基础
    文件IO_open(),read(),write(),lseek(),close()
    SourceTree跳转注册的方法
    Linux——软件安装
    初学DOM树解析xml文件
    简单json语句转化为map保存
    最大独立集求解
  • 原文地址:https://www.cnblogs.com/ziysong/p/4652928.html
Copyright © 2011-2022 走看看