2012-05-12 12 views
2

C++やVBのような一般的なプログラミング言語との関連でクエリ言語がどのように機能するかについて私に説明した記事やフォーラム投稿は見つかりませんでした。だから私はそれを聞いて傷つけることはないと思う。 <クエリ言語の役割について混乱しています

基本的には、単純なデータベースを作成している場合、クエリ言語の役割(クエリ言語の例としてSQLを使用し、標準言語にはVB6を使用します)を理解するのは苦労しています。通常の情報(名、姓、住所など)をテーブルに埋め込むクエリ。私は接続オブジェクトやその他のもののためにADOオブジェクトを使ってこのようなプログラムを設定するステップをいくらか知っていますが、2のどの言語が特定のものに使われるかはどうやって決めるのでしょうか? vb6は特にループのような基本を扱いますか?それ以外の場合、varsの宣言、SQLはデータベースへの接続や検索、フィルタリング、並べ替えなどの処理を行いますか?代わりにSQL構文で特定の一般的な使用vb6アクション(ループまたは条件文)を行うことは可能ですか?どんな助けでも大いに感謝します。

答えて

5

SQLは、データベースに照会するための言語です。 SQLはISO standardであり、リレーショナルデータベースベンダーはISO標準を実装して独自のカスタマイズを追加しています。たとえば、SQL ServerではT-SQLと呼ばれ、OracleではPL-SQLと呼ばれます。....

select columname from tablename where columnname=1 

はしかし、それぞれが文字列関数、日付関数などのために異なる構文を持っているように選択する彼らは、ISO規格を実装して両方ので、それぞれが簡単なため、同一のクエリを持っています

ISO SQL標準

設計上は、VBのような完全な手続き言語のように、ループ、サブルーチンなどの完全な手続き型言語ではありません。

しかし、各ベンダは彼らの言語で種々の構築物を使用してレコードを例えば。

にT-SQLおよびPL-SQL缶「ループ」の両方を、この機能の一部を追加し、そのバージョンに機能を追加しました。

多くの開発者がうまく調整されていないデータを扱う場合にも違いがあります。これは、手続きベースの操作に基づいて設定されます。

データベースは手続き型構造体でも動作しますが、多くの場合、セットベースでよりパフォーマンスが向上します。この概念に精通していない開発者は、非常に効率の低いクエリを作成する可能性があります。 Here's an example of this discussion

どのような状況でも、この作業を行うのが最良である場所のプロ/コンズを重み付けする必要があります。

私は、SQL上で使用している言語のループなどの手続き型構文を使用する方が好きです。私はそれを維持することがより容易であり、私が使用している言語は、仕事を成し遂げるためにより強力な構文を提供します。

しかし、私は両方のオプションをツールボックスのツールとして保持しています。たとえば、SQLでデータ変換スクリプトを作成しましたが、この場合はSQLでループ構造を使用しています。

+0

これは私の混乱の多くを解決しました。ありがとう。 – Garrettchap1

1

通常、プログラミング言語はクライアント側(アプリケーションサーバーも)で実行され、クエリ言語はdbサーバーで実行されるため、最終的にはすべての作業をどこに配置するかによって異なります。場合によっては、プログラミング言語を使用してすべての計算を行い、より多くのdbサーバーを使用し、クエリ言語を使用したり、より良いtsql/psqlなどを使用したりすることで、クライアント側で多くの作業を行うことができます。

+0

私はこの回答が、提示された質問よりもはるかに優れている*と答えました。しかし、元の質問は、OPが本当に後であったのではなく、「SQLは何をしていますか? – Bob77

1

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

一般に、別の言語でRDBMSを使用している場合は、データ構造を最初に設計し、次にその2つの間の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) 

を最初に行い、それはすべての876sは、道より速く注文ができますので、ご注文は、得意先によってインデックスされる可能性があります。

最初に、テーブルのすべてのレコードをネットワーク上のクライアントのメモリ空間に吸い込んだだけです。

使用する言語は本質的に無関係です。独自の言語で独自のDBMSを作成できます。

重要な処理を行う場所です。それは例外を伴うルールですが、本質的なアイデアはあなたのバックエンドが可能な限り行うことです。