2012-05-12 126 views
2

所以,我没有任何运气找到任何文章或查询语言结合究竟如何运作与一般使用的编程语言如C++或VB已经向我解释论坛帖子的作用。所以我想这不会伤害要问>。 <困惑的查询语言

基本上,我一直很难理解查询语言的作用(如果我创建一个简单的数据库,我们将使用SQL作为查询语言的示例和VB6的常规语言)用普通信息(姓,名,地址等)填充表的查询。我有点知道使用ado对象来建立这样一个程序的步骤,以及什么,但是我们如何确定2的哪一种语言被用于某些事情? vb6是否特别处理了像循环这样的基础知识,如果其他的,你的变量的声明和SQL特别处理连接到数据库和执行搜索,过滤和排序等事情?是否有可能在SQL语法中使用某些常规使用的vb6动作(循环或条件)?任何帮助将不胜感激。

回答

5

SQL是查询数据库的语言。 SQL是ISO standard,关系数据库供应商实现ISO标准,然后添加他们自己的定制。例如在SQL Server中称为T-SQL,在Oracle中称为PL-SQL。他们都实现ISO标准,所以每次都会有一个简单的相同的查询选择像

select columname from tablename where columnname=1 

然而,每个有字符串函数,日期函数等不同的语法....

的ISO SQL标准通过设计并不是一个完整的过程语言,像VB这样的完整过程语言,它具有循环,子程序等。

然而,每个供应商增加了功能,其版​​本添加一些此功能在。

例如两个T-SQL和PL-SQL可以“循环”,通过使用各种结构在他们的语言记录。

当处理许多开发人员不熟悉的数据时,也有不同之处。这是基于操作与基于程序的集合。

数据库可以使用程序结构,但通常更具有基于集合的性能。不熟悉这个概念的开发人员最终可能会创建一个非常无效的查询。 Here's an example of this discussion

在任何情况下,您必须权衡Pro/con的最佳做法。

我倾向于倾向于使用程序结构,例如我在SQL上使用的语言中的循环。我发现它更容易维护,我使用的语言为我完成工作提供了更强大的语法。

但是,我保留这两个选项作为工具箱中的一个工具。例如,我在SQL中编写了数据转换脚本,在这种情况下,我使用了SQL中的循环结构。

+0

这清理了我的大部分困惑。谢谢哥们。 – Garrettchap1

1

通常编程语言是在客户端执行(应用服务器也是如此),和查询语言在数据库服务器中执行,所以最后这取决于你想要把所有的工作。有时你可以通过编程语言进行所有的计算,并在其他时候使用更多的数据库服务器,并最终使用查询语言,甚至更好的tsql/psql或其他方式来完成大量的工作。

+0

我认为这个答案符合问题远远好于其他人提出的问题。不过,也许最初提出的问题并不是真正的OP,而是想知道“SQL做什么?”的答案。 – Bob77

1

关系数据库旨在管理数据。特别是,它们提供了一种有效的机制来管理大量数据的内存,磁盘和处理器。另外,关系数据库可以处理多个客户端,保证事务完整性,安全性,备份,持久性和许多其他功能。

在一般情况下,如果你使用的是RDBMS用另一种语言,要在两者之间首先设计数据结构,然后想想API(应用程序编程接口)。当你有应用程序/服务器关系时尤其如此。

对于一个“简单”类型的应用程序,它使用了大量的数据,但以最小的或批量更改,要尽可能多的处理移动到数据库中是合理的。以下是您不想做的事情:

  1. 使用查询将数组加载到数组中,然后在语言级别执行数组操作。 SQL为此提供了连接。
  2. 将数据加载到数组中,并对数组进行操作和总结。 SQL为此提供了聚合。
  3. 将数据保存到文件中进行备份。数据库提供备份机制。

如果您的数据适合数组或Excel电子表格,那么开始使用存储在那里的数据通常就足够了。只有当您开始扩展需求(多个客户端,安全性,与其他数据的集成)时,数据库的优势才会变得更加明显。

这些只是指导,并给你一些想法。

1

在做什么的地方,尽可能多地在SQL(尽管它运行在服务器上)是合理的。

因此,例如,不要做这样的东西(伪代码)

foreach(row in "Select * from Orders") 
    if (row[CustomerID] = 876) 
    Display(row) 

foreach(row in "Select * from Orders where CustomerId = 876") 
    Display(row) 

首先,它很可能订单是由客户ID索引,以便它可以找到所有876s订购方式更快。

第二次做的第一件事就是将表中的每条记录都吸引到客户端的内存空间中,可能是通过您的网络。

使用什么语言本质上是不相关的,你可以用它自己的语言创建你自己的DBMS。

这是你做什么处理的地方。它的规则有例外,但基本的想法是让你的后端尽可能地做到这一点。