2

そのため、クエリ言語が c++ や vb などの汎用プログラミング言語とどのように連携して機能するかを説明している記事やフォーラムの投稿を見つけることができませんでした。だから聞いて損はないと思います >.<

基本的に、テーブルを満たす単純なデータベースクエリを作成している場合、クエリ言語の役割が何であるかを理解するのに苦労しています(クエリ言語の例としてSQLを使用し、標準言語の例としてVB6を使用します)。通常の情報(名、姓、住所など)。接続などにadoオブジェクトを使用してこのようなプログラムをセットアップする手順はある程度知っていますが、特定の目的で2つの言語のうちどちらを使用するかをどのように決定すればよいでしょうか? vb6 は特にループのような基本を処理しますか? そうでない場合は、vars の宣言を行い、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

どこで何をするかという点では、SQLで(サーバー上で実行されている場合)可能な限り多くのことを実行してください。

したがって、たとえば、このようなことはしないでください(疑似コード)

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

行う

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

まず、OrdersはCustomerIDによってインデックス付けされている可能性が高いため、すべての876の注文がはるかに迅速に検出されます。

次に、最初の1つを実行するために、そのテーブル内のすべてのレコードを、おそらくネットワーク全体のクライアントのメモリスペースに吸い込みました。

使用される言語は基本的に無関係です。独自の言語を使用して独自のDBMSを発明することができます。

重要な処理を行う場所です。例外はありますが、基本的な考え方は、バックエンドにできる限りのことをさせることです。

于 2012-05-12T16:37:20.120 に答える
1

リレーショナル データベースは、データを管理するように設計されています。特に、大量のデータのメモリ、ディスク、およびプロセッサを管理するための効率的なメカニズムを提供します。さらに、リレーショナル データベースは複数のクライアントを処理し、トランザクションの整合性、セキュリティ、バックアップ、永続性、およびその他の多数の機能を保証できます。

一般に、別の言語で RDBMS を使用している場合は、最初にデータ構造を設計してから、2 つの間の API (アプリケーション プログラミング インターフェイス) について考えます。これは、アプリとサーバーの関係がある場合に特に当てはまります。

大量のデータを使用するが、最小限の変更またはバッチ変更を行う「単純な」タイプのアプリケーションの場合、妥当な範囲でできるだけ多くの処理をデータベースに移動する必要があります。やりたくないことは次のとおりです。

  1. クエリを使用して配列に読み込み、言語レベルで配列操作を行います。SQL はこれに結合を提供します。
  2. データを配列にロードし、配列に対して操作と集計を行います。SQL は、このための集計を提供します。
  3. データをファイルに保存してバックアップを作成します。データベースはバックアップ メカニズムを提供します。

データが配列または Excel スプレッドシートに収まる場合は、多くの場合、そこに格納されているデータから始めるだけで十分です。ニーズ (複数のクライアント、セキュリティ、他のデータとの統合) を拡大し始めて初めて、データベースの利点がより明確になります。

これらは単なるガイダンスであり、アイデアを提供するためのものです。

于 2012-05-12T16:17:17.960 に答える