SQL 语句样例
Select [distinct] [column1], [column2],...
from [table] [join(left right inner)]
where [And Or]
group by [column]
having [And Or]
order by [DESC ASC]
limit [];
SQL 执行过程
FORM:对FROM的左边的表和右边的表计算笛卡尔积。产生虚表VT1
ON:对虚表VT1进行ON筛选,只有那些符合<join-condition>的行才会被记录在虚表VT2中。
JOIN: 如果指定了OUTER JOIN(比如left join、 right join),那么保留表中未匹配的行就会作为外部行添加到虚拟表VT2中,产生虚拟表VT3, rug from子句中包含两个以上的表的话,那么就会对上一个join连接产生的结果VT3和下一个表重复执行步骤1~3这三个步骤,一直到处理完所有的表为止。
WHERE: 对虚拟表VT3进行WHERE条件过滤。 只有符合<where-condition>的记录才会被插入到虚 拟表VT4中。
GROUP BY: 根据group by子句中的列,对VT4中的记录进行分组操作,产生VT5。
HAVING: 对虚拟表VT5应用having过滤,只有符合<having-condition>的记录才会被 插入到虚拟表VT6中。
SELECT: 执行select操作,选择指定的列,插入到虚拟表VT7中。
DISTINCT: 对VT7中的记录进行去重。产生虚拟表VT8。
ORDER BY: 将虚拟表VT8中的记录按照<order_by_list>进行排序操作,产生虚拟表VT9。
LIMIT:取出指定行的记录,产生虚拟表VT10, 并将结果返回
SQL JOIN
- left join 就是留下左边的表 A left join B等同于 B right join A
- right join 就是留下右边的表 A left join B等同于 B right join A
- inner join A join B 默认就是A inner join B
本文用于记录个人所学知识,避免忘记,如有错误之处,望读者指出