2011-10-26 32 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的拐杖 –