• 多表查询


    多表查询
      1. 分类:
        * 合并结果集(了解)
        * 连接查询
        * 子查询

    合并结果集
      * 要求被合并的表中,列的类型和列数相同
      * UNION,去除重复行
      * UNION ALL,不去除重复行

     SELECT * FROM cd/*cd表*/
    UNION ALL
    SELECT * FROM ab;/*ab表*



    连接查询
      1. 分类
        * 内连接
        * 外连接
          > 左外连接
          > 右外连接
          > 全外连接(MySQL不支持)
        * 自然连接(属于一种简化方式)

      2. 内连接
        * 方言:SELECT * FROM 表1 别名1, 表2 别名2 WHERE 别名1.xx=别名2.xx
        * 标准:SELECT * FROM 表1 别名1 INNER JOIN 表2 别名2 ON 别名1.xx=别名2.xx
        * 自然:SELECT * FROM 表1 别名1 NATURAL JOIN 表2 别名2
        * 内连接查询出的所有记录都满足条件。
     
      3. 外连接
        * 左外SELECT * FROM 表1 别名1 LEFT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx
          > 左表记录无论是否满足条件都会查询出来,而右表只有满足条件才能出来。左表中不满足条件的记录,右表部分都为NULL
        * 左外自然SELECT * FROM 表1 别名1 NATURAL LEFT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx
        * 右外SELECT * FROM 表1 别名1 RIGHT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx
          > 右表记录无论是否满足条件都会查询出来,而左表只有满足条件才能出来。右表不满足条件的记录,其左表部分都为NULL
        * 右外自然SELECT * FROM 表1 别名1 NATURAL RIGHT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx
        * 全链接:可以使用UNION来完成全链接

    子查询
      :查询中有查询(查看select关键字的个数!)
      1. 出现的位置:
        * where后作为条件存在
        * from后作为表存在(多行多列)

      2. 条件
        * (***)单行单列:SELECT * FROM 表1 别名1 WHERE 列1 [=、>、<、>=、<=、!=] (SELECT 列 FROM 表2 别名2 WHERE 条件)
        * (**)多行单列:SELECT * FROM 表1 别名1 WHERE 列1 [IN, ALL, ANY] (SELECT 列 FROM 表2 别名2 WHERE 条件)
        * (*)单行多列:SELECT * FROM 表1 别名1 WHERE (列1,列2) IN (SELECT 列1, 列2 FROM 表2 别名2 WHERE 条件)
        * (***)多行多列:SELECT * FROM 表1 别名1 , (SELECT ....) 别名2 WHERE 条件

  • 相关阅读:
    BUAA2020软工作业(三)——个人项目
    BUAA2020软工作业(二)——对软件工程的初步理解
    BUAA2020软工作业(一)——谈谈我和计算机的缘分
    OO第四单元总结与课程总结
    OO第三单元总结——JML
    面向对象第二单元总结——魔鬼电梯
    面向对象设计与构造——第一单元总结
    提问回顾与个人总结
    【技术博客】Flutter—使用网络请求的页面搭建流程、State生命周期、一些组件的应用
    软件案例分析
  • 原文地址:https://www.cnblogs.com/lxp503238/p/6617575.html
Copyright © 2020-2023  润新知