zoukankan      html  css  js  c++  java
  • SQL子句执行顺序和Join的一点总结

     SQL子句执行顺序和Join的一点总结

    1. FROM

    2. ON

    3. JOIN

    4. WHERE

    5. GROUP BY

    6. WITH CUBE or WITH ROLLUP

    7. HAVING

    8. SELECT

    9. DISTINCT

    10. ORDER BY

    11. TOP

    也就是说, 先进行on的过滤, 而后才进行join, 这样就避免了两个大表产生全部数据的笛卡尔积的庞大数据. 

    这些步骤执行时, 每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回 给调用者。

    inner join

    找到符合 左=右 的项,不符合的不要

    left join

    左表有的都显示,右表没有的用NULL来填充

    right join

    右表有的都显示,左表没有的用NULL来填充

    full join

    全显示

    create table t_join_buyers
    (
    buyer_name varchar(10),
    buyer_id int
    )
    
    create table t_join_sales
    (
    buyer_id int,
    prod_id int,
    qty int
    )
    
    
    insert into t_join_buyers values ('jack',1)
    insert into t_join_buyers values ('tom',2)
    insert into t_join_buyers values ('anni',3)
    insert into t_join_buyers values ('poly',4)
    
    insert into t_join_sales  values (1,2,15)
    insert into t_join_sales  values (1,3,5)
    insert into t_join_sales  values (4,1,37)
    insert into t_join_sales  values (3,5,11)
    insert into t_join_sales  values (4,2,1003)
  • 相关阅读:
    cookie
    sql 语句
    页面宽高
    分页
    asp.net中如何防止用户重复点击提交按钮
    小试简单工厂模式之简单计算器
    用函数实现交换的疑问
    结构体变量输入输出的问题
    scanf函数输入float数需要注意的问题
    oracle学习手记(1)
  • 原文地址:https://www.cnblogs.com/roboot/p/4941856.html
Copyright © 2011-2022 走看看