sql语句中的解析过程

今天主要是总结一下sql语句中的解析过程

1. from from后面觉得表标识了这条语句要查询的数据源(笛卡尔集,on过滤,添加外部列)。from过程后会生成一个虚拟表vt1

2.where 生成虚拟表vt2

3.group by 生成虚拟表vt3

4.having 对不同的组进行过滤。生成vt4

5.select 生成vt5(计算表达式 distinct top)

6.order by 生成vt6表

注:

1.on和where的区别在于on是在添加外部列之前进行过滤,where是在之后。where语句中不能使用聚合函数,因为解析where语句时,数据还没有被分组。where语句也不能使用select中创建的别名,因为解析where语句时,select还没别解析

2.sql语句中的过滤关键字有三个,分别是:on,where,having

3.在groupby后面解析的select,having只能使用group by后面的列,对于没有出现groupby后面的列必须使用聚合函数,保证每一个group只返回一行。

4.只有order by后面可以使用select中创建的别名。

你可能感兴趣的:(数据库,sql,mysql)