小贴士
SQL在执行顺序中最先执行的是FROM操作,最后执行lIMIT;在执行每一个操作的时候都会产生一张虚拟的表,但执行过程中产生的表不会对用户展示,只有最后一张表作为输出结果呈现给用户。
SQL执行过程
1.FROM :对FROM左边的表和右边的表计算笛卡尔积,产生虚拟表t1
2.ON :对表t1进行ON筛选,只有符合条件的行才会记录在表t2中
3.JOIN :如果指定了OUTER JOIN(如:left join、right join),那么未匹配到的行作为外部行添加到表t3中
4.WHERE :对表t3进行where条件过滤,只有符合条件的记录才会记录在表t4中
5.GROUP BY:根据group by 子句中的列,对表t4记录进行分组操作,产生表t5
6.HAVING :对表t5进行having过滤,只有符合条件的行才会记录在表t6中
7.SELECT :执行select操作,选择指定的列,产生表t7
8.DISTINCT :对表t7记录进行去重,产生表t8
9.ORDER BY :对表t8记录进行排序,产生表t9
10.LIMIT :取出指定的行,产生表t10,并将结果进行展示
笛卡尔积:
两个集合R和S的笛卡尔积可表示为:RxS;第一个对象是R的成员而第二个对象是S的所有可能有序对的其中一个成员,如下图: