sql生成可讀性邏輯圖


下面這張圖是我自己畫的sql邏輯圖。規定了一些畫法。然后畫出來是這樣的。

因為經常要讀別人的sql,又臭又長,可讀性很差,於是想做一個程序自動生成的邏輯圖。

為什么不用執行語法樹,因為個人覺得語法樹可讀性也不是很高。

打個比方說,a join b join c ,你explain一下,就會得到執行計划是 1.a join b 2. 上一個結果 join b。

這樣對表之間關系的理解不是很有幫助。 因為  a b c 是同一層的表。但是按照執行計划就會有先后順序。

 

 

 以下是對上圖的解釋:

1.每一個框框是一個查詢,即一定有一個select語句。

2.箭頭指向另一框框的底部,表示是另一個框框的子查詢

3.箭頭指向左邊,代表是join操作

4.join的條件寫在箭頭里。

5.每一個框框代表一個select,且是單張表的查詢,框框里附帶上 select xxx+group by+where

舉例:select a.id,max(b.age) from a join b group by a.id

則先將sql轉化成

select a.id,max(b.age) from (select * from a) join (select * from b)on a.id=b.id where b.id>1 group by a.id

則結果表是  select aid,max(bage) from tmp where bid>1 group by a.id, 在tmp的框框里寫上 select xxx+group by+where

而tmp表是(a join b )形成,所以 (a join b)是tmp表的子查詢。 

 

下面是一些規則具體說明

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM