zoukankan      html  css  js  c++  java
  • SQL联表查询

      数据库中最最常用的语法----select.简单的select语法很直白:

        

    select column from table where expression;

        从((from)存储数据的地方(table)按照(where)一定的条件(expression)查找(select)我要的数据(column);

      但是在实际工作中用到的比较多的往往还是多联表查询,所以在这里记下自己学习多联表查询的心得。

      首先聊一聊笛卡尔积,这是几乎所有数据库书籍在讲多联表查询时第一个要讲的东西,我等P民也只能是把笛卡尔积放在第一位了。用初中数学来解释笛卡尔积其实就是因式展开(各位大神不要打我),类似于下面这种:

      A=(a+b),B=(c+d),A*B=ac+ad+bc+bd;

    嗯虽然不一样,但是其实表面上就是这样过的。

      然后基础语法其实和单表查询还是差不多的:

      

    select column from table1 (方式) join table2 on expression;

    多表查询和单表查询最打区别就是多表查询多了join on 语句,讲专业点叫连接。连接常用的有三种inner、left、right,这里我们不展开讲三种方式的区别(因为我自己也讲不清楚!如果想知道请自行谷歌笛卡尔积、SQL多表联合查询十篇文章九篇会讲的),只讲怎么用,用哪个好。

      首先,放出结论(一般情况下):

        1)、如果table1符合条件数据量远大于table2,且table2数据非常多,用left join;

        2)、如果table1符合条件数据量远小于table2,且table1数据非常多,用right join;

        3)、如果一样多且数据量不多推荐使用inner join;

        4)、但是如果都非常多请用联合查询 + where,后面会讲到。

      当然结论并非绝对,会受到两表中Null数据行的影响,但是我想说的是!实际中Null数据行是比较少的,所以这个结论大致上还是可以用的!!!不要问我为什么,就是这么粗暴!就是这么任性!

      最后放大招--嵌套查询

      嵌套查询顾名思义就是个嵌套,以内查询语句的输出作为外查询语句的输入或条件语句,以求达到缩减数据量的目的。在实际应用中,如果两表的数据量非常大,那么强烈推荐嵌套查询。假设有下表;

    那么嵌套查询的典型语法如下:

    在where条件中使用嵌套查询

    select 
        account 
    from 
        userbindinfo 
    where 
        user_id 
    in 
    (
        select 
            user_id    -- 该处内查询语句的输出必须与外部查询语句的条件一一对应
        from 
            users 
        where 
            user_type = 1
    )        

      

  • 相关阅读:
    第三篇:服务提供与Feign调用
    第二篇:服务提供与Rest+Ribbon调用
    第一篇:注册中心Eureka
    先导篇:SpringCloud介绍篇
    将list集合按指定长度进行切分,返回新的List<List<??>>集合
    清空数据的简便语法
    JDK 1.8 新特性之Date-Time API
    读书笔记-我国弱势群体犯罪问题研究
    读书笔记-沙漠里的细水微光
    读书笔记-没有空白
  • 原文地址:https://www.cnblogs.com/zhoujm928/p/5467422.html
Copyright © 2011-2022 走看看