最近工作中有业务需要对查询SQL进行解析,分解出查询字段和对应表的关系,以便从数据字典找到对应字段的安全级别进行脱敏,从Durid的一个sql解析插件中找到了解决方案,看到durid中抽象出来的一大堆元素,记不起一条SQL前后的执行顺序了,在这里回顾一下。
一条SQL大致内容包括如下:
select filed from table1 join table2 where on group by filed having condition order by
执行顺序:
(8)SELECT(9)DISTINCT <select_list>
(1)FROM <left_table>
(3)<join_type> JOIN <right_table>
(2)ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <grout_by_list>
(6)WITH {CUTE|ROLLUP}
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>
(11)LIMIT <limit_number>