2011-10-26 34 views
1

我正在網上免費參加斯坦福大學數據庫課程。我沒有任何數據庫經驗,但擁有多年的操作系統編程經驗。通常,在編碼之前,我將流程圖或者寫出特定算法的僞代碼。我想知道這種技術是否可以用於從流程圖或僞代碼轉換爲SQL語句。如何將僞代碼轉換爲SQL語句?

迭代一個集合的循環是否匹配WHERE子句?這大部分是(?)還是總是(?)是真的?

如何將雙重嵌套循環映射到SQL?

+1

基本SQL不是程序性的;它沒有循環的概念,也沒有任何等效的概念。因此,討論雙重嵌套循環映射的內容並沒有意義。 –

回答

2

SQL使用基於集合的邏輯(關係代數/演算),而大多數編程語言都是命令式/過程式(例如C#,Java等)。

如果您編寫基於集合的邏輯僞代碼,那麼它應該與將SQL翻譯爲命令式僞代碼轉換爲C#一樣簡單。

的基於集合的邏輯僞代碼的例子可能是這樣的:

1.Join book stores and titles over the BookstoreID. 
2.Restrict the result of that join to tuples for the book Some Sample Book. 
3.Project the result of that restriction over StoreName and StorePhone. 

如果你想勢在必行僞代碼轉換爲SQL(或基於集合的僞代碼爲C#),這是會變得更加痛苦。

+1

我認爲這不僅僅是痛苦,我會說這沒有意義。 –

+0

嗯,我猜如果你有基於集合的僞代碼,你可以使用LINQ操作符將其轉換爲C#。但我同意將命令性僞代碼轉換爲SQL是相當無意義的。要麼你有基於集合的算法,要麼你不應該使用SQL來實現它。 –

0

正如Dylan所說,SQL是爲基於集合的邏輯而設計的。然而,你可以並且經常在現實世界的情況下循環遍歷這些集合。

基本上,您可以將目標結果集存儲在臨時表中。然後,您將循環遍歷臨時表中的每條記錄,執行所需的任何過程。

完成後,通過刪除臨時表進行清理。

它不像您典型的編程語言(Pascal,C等)那樣直截了當

+0

enh ...你可以,但爲了學習SQL(OP的意圖)或利用SQL的強大功能,如果可能的話,應該避免像這樣循環代碼。否則,遊標可以成爲支撐平庸SQL的柺杖 –