zoukankan      html  css  js  c++  java
  • Mysql多表查询

    一、表连接查询

     1.1 多表查询的分类

        

       1.1.1 内连接查询

          * 隐式内连接:使用where条件消除无用数据

            * 语法:SELECT 字段列表 FROM 左表, 右表 WHERE 条件

     小贴士:

      * 笛卡尔积:
         * 有两个集合A,B,取这两个集合的所有组成情况。
         * 要完成多表查询,需要消除无用的数据
          * 如何消除笛卡尔积现象的影响?
            * 增加where条件进行筛选,过滤掉没有用的数据。

          * 显示内连接:使用INNER JOIN ... ON语句,INNER可以省略

            * 语法:SELECT 字段列表 FROM 左表 [INNER] JOIN 右表 ON 条件

          * 迫切内连接:使用INNER JOIN FETCH ... ON语句,INNER可以省略

            * 语法:SELECT 字段列表 FROM 左表 [INNER] JOIN FETCH 右表 ON 条件

     注意:隐式内连接和显示内连接的区别

        * 隐式内连接先查询数结果集(即先进行笛卡尔积运算,生成一个新的表格。),再根据where条件筛选数据。因为表的数据量大,效率低、耗内存。
        * 显示内连接在查询数据时,会根据on后面的条件进行数据筛选,逐条匹配。不会产生笛卡尔积现象,效率高。

       1.1.2 外连接查询

          * 左外连接:使用LEFT OUTER JOIN ... ON,OUTER可以省略

            * 语法:SELECT 字段列表 FROM 左表 LEFT [OUTER] JOIN 右表 ON 条件

            * 结果集:查询的是左表所有数据以及其交集部分,若交集部分没有数据,则显示NULL。

          * 迫切左外连接:使用LEFT OUTER JOIN FETCH ... ON语句,OUTER可以省略

            * 语法:SELECT 字段列表 FROM 左表 LEFT [OUTER] JOIN FETCH 右表 ON 条件

            * 结果集:查询的是左表所有数据以及其交集部分,若交集部分没有数据,则显示NULL。

          * 右外连接:使用RIGHT OUTER JOIN ... ON,OUTER可以省略

            * 语法:SELECT 字段列表 FROM 左表 RIGHT [OUTER] JOIN 右表 ON 条件

            * 结果集:查询的是右表所有数据以及其交集部分,若交集部分没有数据,则显示NULL。

     小贴士:

       * 什么是迫切?

         * 及时将两个关联对象进行相互引用

       * 为什么没有迫切右外连接?

         * 因为封装的时候是以左对象为主键,右对象保全。所以若左对象为null,将右对象赋值给null是不合理的。

       1.1.3 查询关联表的所有数据(扩展)

          使用Union 和 Union All 操作符进行表数据的合并,使用前提是表或者查询的字段数、列表名称/类型相同。

          Union 和 Union All 的区别: 
          Union        在表链接后会对所产生的结果进行排序运算,删除重复的记录再返回合并结果。
          Union All       只是简单的将两个结果合并后返回。因不需去重,所以效率高于union。

          具体的介绍可参考:
            https://www.w3school.com.cn/sql/sql_union.asp 或者 https://www.runoob.com/sql/sql-union.html

     1.2 子查询

       1.2.1 概述

          查询中嵌套查询,即一个查询的结果作为另一个查询的条件,称嵌套查询为子查询。

       1.2.2 子查询用法

          子查询需用小括号括起来。

          (此处省略一万字... ...)

  • 相关阅读:
    Java中ArrayList和LinkedList区别
    poi操作excel之: 将NUMERIC转换成TEXT
    Spring事务异常回滚,捕获异常不抛出就不会回滚
    CollectionUtils.select用法
    名词解释
    jenkins
    代码测试文章推荐
    redis 参考文章
    zookeeper,dubbo,dubbo admin
    Navicat For Mysql快捷键
  • 原文地址:https://www.cnblogs.com/sun9/p/13584426.html
Copyright © 2011-2022 走看看