2

因此,我没有任何运气找到任何文章或论坛帖子,这些文章或论坛帖子向我解释了查询语言如何与 c++ 或 vb 等通用编程语言结合使用。所以我想问不会有什么坏处>.<

基本上,如果我正在创建一个填充表格的简单数据库查询,我一直很难理解查询语言的作用(我们将使用 SQL 作为查询语言的示例,使用 VB6 作为规范语言的示例)带有普通信息(名字、姓氏、地址等)。我有点知道使用 ado 对象进行连接和诸如此类的程序设置这样的程序的步骤,但是我们如何决定将 2 中的哪种语言用于某些事情?vb6 是否专门处理循环、if else、变量声明等基础知识,而 SQL 专门处理连接数据库和进行搜索、过滤和排序等事情?是否可以在 SQL 语法中执行某些通用的 vb6 操作(循环或条件)?任何帮助将不胜感激。

4

4 回答 4

5

SQL 是一种查询数据库的语言。SQL 是ISO 标准,关系数据库供应商根据 ISO 标准实施,然后添加他们自己的定制。例如,在 SQL Server 中称为 T-SQL,在 Oracle 中称为 PL-SQL。他们都实施了 ISO 标准,因此每个人都会对简单的选择有相同的查询,例如

select columname from tablename where columnname=1

但是,对于字符串函数、日期函数等,每个函数都有不同的语法......

ISO SQL 标准的设计不是像 VB 这样的完整过程语言那样具有循环、子例程等的完整过程语言。

但是,每个供应商都在其版本中添加了一些功能,以添加其中的一些功能。

例如,T-SQL 和 PL-SQL 都可以使用其语言中的各种结构“循环”记录。

在处理许多开发人员没有很好地调整的数据时也存在差异。那是基于集合的操作与基于程序的操作。

数据库可以使用过程构造,但通常使用基于集合的性能更高。不熟悉此概念的开发人员最终可能会创建一个非常低效的查询。 这是这个讨论的一个例子

在任何情况下,您都必须权衡专业人士/劣势人士在哪里最好做这项工作。

我倾向于在我使用的语言中使用过程构造,例如循环而不是 SQL。我发现它更容易维护,并且我使用的语言为我提供了更强大的语法来完成工作。

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

于 2012-05-12T16:28:54.820 回答
1

通常编程语言在客户端(应用服务器也是)执行,查询语言在数据库服务器中执行,所以最终取决于你想把所有工作放在哪里。有时您可以通过使用编程语言进行所有计算来在客户端进行大量工作,而其他时候您想使用更多的数据库服务器,最终您会使用查询语言甚至更好的 tsql/psql 或其他语言。

于 2012-05-12T16:13:02.233 回答
1

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

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

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

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

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

这些只是为了指导和给你一些想法。

于 2012-05-12T16:17:17.960 回答
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)

首先,订单可能由 CustomerID 索引,因此它会更快地找到所有 876 订单。

第二个是做第一个,你刚刚将该表中的每条记录都吸进了客户端的内存空间,可能是通过你的网络。

使用什么语言本质上是无关紧要的,您可以用自己的语言发明自己的 DBMS。

这是您进行重要处理的地方。这是有例外的规则,但基本的想法是让你的后端尽可能多地做。

于 2012-05-12T16:37:20.120 回答