介绍完了所有查询相关的语法,我们来把之前的所有语法集中到一个句子中.
SELECT DISTINCT column, AGG_FUNC(column_or_expression), …
FROM mytable
    JOIN another_table
      ON mytable.column = another_table.column
    WHERE constraint_expression
    GROUP BY column
    HAVING constraint_expression
    ORDER BY column ASC/DESC
    LIMIT count OFFSET COUNT;
    一个查询SQL的执行总是先从数据里按条件选出数据,然后对这些数据再次做一些整理处理,按要求返回成结果,让结果尽可能是简单直接的。因为一个 查询SQL由很多部分组成,所以搞清楚这些部分的执行顺序还挺重要的,这有助于我们更深刻的理解SQL执行过程.
FROM 和 JOINs FROM 或 JOIN会第一个执行,确定一个整体的数据范围. 如果要JOIN不同表,可能会生成一个临时Table来用于
    下面的过程。总之第一步可以简单理解为确定一个数据源表(含临时表)
WHERE我们确定了数据来源 WHERE 语句就将在这个数据源中按要求进行数据筛选,并丢弃不符合要求的数据行,所有的筛选col属性
        只能来自FROM圈定的表. AS别名还不能在这个阶段使用,因为可能别名是一个还没执行的表达式
GROUP BY如果你用了 GROUP BY 分组,那GROUP BY 将对之前的数据进行分组,统计等,并将是结果集缩小为分组数.这意味着
    其他的数据在分组后丢弃.
HAVING如果你用了 GROUP BY 分组, HAVING 会在分组完成后对结果集再次筛选。AS别名也不能在这个阶段使用.
SELECT确定结果之后,SELECT用来对结果col简单筛选或计算,决定输出什么数据.
DISTINCT如果数据行有重复DISTINCT 将负责排重.
ORDER BY在结果集确定的情况下,ORDER BY 对结果做排序。因为SELECT中的表达式已经执行完了。此时可以用AS别名.
LIMIT / OFFSET最后 LIMIT 和 OFFSET 从排序的结果中截取部分数据.
不是每一个SQL语句都要用到所有的句法,但灵活运用以上的句法组合和深刻理解SQL执行原理将能在SQL层面更好的解决数据问题,而不用把问题 都抛给程序逻辑.
这是 SELECT 查询的最后一节课, 我们将出一些比较有挑战的任务. 看你能不能综合运用之前学到的知识了!
| id | title | director | year | length_minutes | 
| 1 | Toy Story | John Lasseter | 1995 | 81 | 
| 2 | A Bug's Life | John Lasseter | 1998 | 95 | 
| 3 | Toy Story 2 | John Lasseter | 1999 | 93 | 
| 4 | Monsters, Inc. | Pete Docter | 2001 | 92 | 
| 5 | Finding Nemo | Andrew Stanton | 2003 | 107 | 
| 6 | The Incredibles | Brad Bird | 2004 | 116 | 
| 7 | Cars | John Lasseter | 2006 | 117 | 
| 8 | Ratatouille | Brad Bird | 2007 | 115 | 
| 9 | WALL-E | Andrew Stanton | 2008 | 104 | 
| 10 | Up | Pete Docter | 2009 | 101 | 
| 11 | Toy Story 3 | Lee Unkrich | 2010 | 103 | 
| 12 | Cars 2 | John Lasseter | 2011 | 120 | 
| 13 | Brave | Brenda Chapman | 2012 | 102 | 
| 14 | Monsters University | Dan Scanlon | 2013 | 110 | 
| movie_id | rating | domestic_sales | international_sales | 
| 5 | 8.2 | 380843261 | 555900000 | 
| 14 | 7.4 | 268492764 | 475066843 | 
| 8 | 8 | 206445654 | 417277164 | 
| 12 | 6.4 | 191452396 | 368400000 | 
| 3 | 7.9 | 245852179 | 239163000 | 
| 6 | 8 | 261441092 | 370001000 | 
| 9 | 8.5 | 223808164 | 297503696 | 
| 11 | 8.4 | 415004880 | 648167031 | 
| 1 | 8.3 | 191796233 | 170162503 | 
| 7 | 7.2 | 244082982 | 217900167 | 
| 10 | 8.3 | 293004164 | 438338580 | 
| 4 | 8.1 | 289916256 | 272900000 | 
| 2 | 7.2 | 162798565 | 200600000 | 
| 13 | 7.2 | 237283207 | 301700000 | 
