天天看點

怎麼編寫容易讀懂的SQL查詢

怎麼編寫容易讀懂的SQL查詢

毫無疑問,編寫代碼與其說是一門科學,不如說是一門藝術。即使有經驗,每個程式員也不能編寫既可讀又可維護的漂亮代碼。一般來說,當您學習編碼的藝術時,編碼會随着經驗而改進,例如,喜歡使用 類的組合來代替類的繼承或者基于接口編碼而不是實作,但是隻有少數開發人員能夠掌握這些技術。

SQL查詢也是如此。建構查詢的方式和編寫查詢的方式,對于向開發人員傳達您的意圖大有幫助。當我在多個開發人員的郵件中看到SQL查詢時,我可以看到他們的寫作風格有明顯的不同。

一些開發人員編寫得非常整潔,并且對查詢進行了适當的縮進,這使得很容易發現關鍵細節,例如,從哪個表中提取哪些列以及條件是什麼。

因為在實際的項目中,SQL查詢往往并不是隻有一行語句,是以當您稍後閱讀SQL查詢或将該查詢共享給某人進行檢查或執行時,學習正确的編寫SQL查詢将會有很大的幫助。

在本文中,我将向您展示一些我過去嘗試過的樣式,它們的優缺點,以及我認為編寫SQL查詢的最佳方式。除非你有很好的理由不使用我的風格,例如:你有更好的風格,或者你想堅持項目中使用的風格(一緻性壓倒一切),沒有理由不使用它。

順便說一下,我希望您熟悉SQL,了解SQL查詢中的不同子句及其含義。

編寫SQL查詢的第一種方法

SELECT e.emp_id, e.emp_name, d.dept_name, p.project_name from Employee e            

複制

INNER JOIN Department d ON e.dept_id = d.dept_id INNER JOIN Projects p            

複制

ON e.project_id = p.project_id Where d.dept_name="finance" and e.emp_name            

複制

like '%A%' and e.salary > 5000;           

複制

缺點:

1)大小寫混合

2)整個查詢寫在一行上,一旦表和列的數量增加,這一行就不可讀

3)在添加新條件或運作時沒有現有條件時沒有靈活性

優點:用大小寫混合的方式區分關鍵字、列名和表名。

編寫SQL查詢的第二種方法           

複制

SELECT e.emp_id, e.emp_name, d.dept_name, p.project_name           

複制

from Employee e           

複制

INNER JOIN Department d ON e.dept_id = d.dept_id           

複制

INNER JOIN Projects p ON e.project_id = p.project_id           

複制

Where d.dept_name="finance" and e.emp_name like '%A%' and e.salary > 500;           

複制

改進:

1)将查詢劃分為多行,使其更具可讀性。

問題:

1)大小寫混合

2)所有條件比較在同一行,很難對某一條件添加注釋。

編寫SQL查詢的第三種方法

select e.emp_id, e.emp_name, d.dept_name           

複制

from Employee e           

複制

inner join Department d on e.dept_id = d.dept_id           

複制

where d.dept_name = 'finance'           

複制

and e.emp_name like '%A%'           

複制

and e.salary > 500;           

複制

1)将SQL查詢劃分為多個行使其可讀性更好。

2)使用适當的縮進可以很容易地找到資料源,例如表和連接配接。

3)在單獨的行上具有條件允許您通過注釋其中的一個條件來運作查詢,

例如:

select e.emp_id, e.emp_name, d.dept_name           

複制

from Employee e           

複制

inner join Department d on e.dept_id = d.dept_id           

複制

where d.dept_name = 'finance'           

複制

-- and e.emp_name like '%A%';           

複制

add e.salary > 5000           

複制

複制

如果您喜歡用大寫字母表示關鍵字,您還可以編寫關鍵字是大寫的SQL查詢,規則是相同的,但隻是關鍵字的大寫字母。

如何編寫可讀的SQL查詢

這就是如何編寫可讀和更易于維護的SQL查詢,關于SQL查詢的縮進或樣式,請随意給出您的看法。這用起來很簡單,可對于提高複雜SQL查詢的可讀性大有幫助。如果您願意,也可以在網上使用各種SQL格式器,但是我建議您學習一種樣式并堅持使用它,而不是依賴于格式器。