• MySql多表查询


    一、笛卡尔积现象

      多表查询时,两张表的数据量发生错误,总数据为表1*表2的数据,显然不是我们想要的,这是笛卡尔积现象。

    二、如何清除笛卡尔积现象

      多表查询的时候,通过条件过滤掉不需要的数据。条件:外键=主键。

    三、内连接

    什么是内连接

      多表查询时,只要满足条件的数据

    隐式内连接

    隐式内连接:看不到JOIN关键字,条件使用WHERE指定

    SELECT * FROM 左表, 右表 WHERE 条件;

    显式内连接

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

        SELECT * FROM 左表 INNER JOIN 右表 ON 表连接条件 WHERE 查询条件;

    四、外连接
      
      左外连接

        
    将满足要求的数据显示,左表不满足要求的数据也显示(在内连接的基础上,保证左表的数据全部显示)
        
    - 左外连接:使用`LEFT OUTER JOIN ... ON`,`OUTER`可以省略
    
    ```sql
    SELECT * FROM 左表 LEFT OUTER JOIN 右表 ON 表连接条件 WHERE 查询条件;

      右外连接  

        将满足要求的数据显示,右表不满足要求的数据也显示(在内连接的基础上,保证右表的数据全部显示)
    右外连接:使用`RIGHT OUTER JOIN ... ON`,`OUTER`可以省略
    
    ```sql
    SELECT * FROM 左表 RIGHT OUTER JOIN 右表 ON 表连接条件 WHERE 查询条件;
    ```

    五、子查询

      什么是子查询

        将一个查询结果作为另一个查询语句的一部分。

      子查询的三种情况

      子查询的结果是单行单列的时候

    子查询结果是`单列`,在`WHERE`后面作为`条件`
    `SELECT 查询字段 FROM 表 WHERE 字段=(子查询);`

    子查询的结果是多行单列的时候

    子查询结果是多行单列,结果集类似于一个数组,在`WHERE`后面作为`条件`,父查询使用`IN`运算符
    
    ```sql
    SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询);
    ```

    子查询的结果是多行多列

    子查询结果是`多列`,在`FROM`后面作为`表` 
    
    ```sql
    SELECT 查询字段 FROM (子查询) 表别名 WHERE 条件;
    ```
    
    子查询作为表需要取别名,否则这张表没用名称无法访问表中的字段
     
  • 相关阅读:
    JS常用方法【笔记整理】持续整理中
    JS中常用的几种时间格式处理【笔记整理】
    Css中部分知识点整理【笔记整理】
    Http相关知识整理【笔记整理】
    Echarts环形进度使用2 接上一篇中记录Echarts进度环使用【不同状态不同进度环颜色及圈内文字】
    NodeJS+Express+MongoDB 简单实现数据录入及回显展示【Study笔记】
    mongodb中的populate方法【转载】
    Echarts环形进度使用 1【简单的使用示例】
    Java的八种基本数据类型及其包装类
    Java文件的写入
  • 原文地址:https://www.cnblogs.com/mengjialian/p/12523475.html
Copyright © 2020-2023  润新知