SQL 製品には非常に多くの種類があるため、後は気にせずにすぐに始められるかもしれません。ただし、ASP と SQL を同時に使用したい場合は、めまいがする可能性があります。
MySQL、SQL Server、および mSQL はすべて優れた SQL ツールですが、残念ながら、これらを使用して ASP 環境で実用的な SQL ステートメントを作成することはできません。ただし、ご自身の Access の知識とそれに対応する Access スキルを使用し、ヒントやテクニックを組み合わせれば、ASP Web ページに SQL を正常に追加できると思います。
1.SELECT文SQL の世界では、最も基本的な操作は SELECT ステートメントです。データベース ツールの直下で SQL を使用する場合、多くの人は次の操作に精通しているでしょう。
何を選択するか
どのテーブルから
WHERE 基準
上記のステートメントを実行すると、結果を保存するクエリが作成されます。
ASP ページ ファイルでは、上記の一般的な構文を使用することもできますが、ASP でプログラミングする場合は状況が少し異なり、SELECT ステートメントの内容を文字列として変数に割り当てる必要があります。
SQL = "どのテーブルの WHERE 条件から何を選択するか"
さて、ASP で SQL が「話す」方法を理解できたので、ニーズを満たす限り、同じ方法に従うことができます。従来の SQL クエリ モードと条件付きクエリが便利です。
たとえば、データベースに Products という名前のデータ テーブルがあり、このテーブル内のすべてのレコードを取得するとします。次に、次のコードを記述します。
SQL ="SELECT * FROM 製品"
上記のコード - SQL ステートメントの機能はテーブル内のすべてのデータを取得することです - 実行後、データ テーブル内のすべてのレコードが選択されます。ただし、テーブルから p_name などの特定の列のみを取得する場合は、この場合、* ワイルドカード文字は使用できません。コードは次のとおりです。
SQL ="製品から p_name を選択"
上記のクエリを実行すると、Products テーブルの p_name 列の内容がすべて選択されます。
2. WHERE句を使用してクエリ条件を設定しますすべてのデータベース レコードを取得するだけで要件が満たされる場合もありますが、ほとんどの場合、レコードの一部を取得するだけで十分です。この場合、クエリをどのように設計すればよいでしょうか?もちろん、この記事では意図的にそのくだらないレコードセットを使用してほしくないのは言うまでもなく、もう少し考える必要があります。
たとえば、p_name レコードのみを取得する予定で、これらのレコードの名前が文字 w で始まる必要がある場合は、次の WHERE 句を使用します。
SQL ="SELECT p_name FROM Products WHERE p_name LIKE 'W%'"
WHERE キーワードの後には、データをフィルタリングするための条件が続きます。これらの条件を使用すると、特定の条件を満たすデータのみがクエリされます。上記の例では、クエリ結果は、名前が w で始まる p_name レコードのみを取得します。
上記の例では、パーセント記号 (%) の意味は、文字 w で始まり、その後に任意のデータが続くか、またはデータがない場合でも、すべてのレコード エントリを返すようにクエリに指示することです。したがって、上記のクエリを実行すると、west と willow が Products テーブルから選択され、クエリに保存されます。
ご覧のとおり、SELECT ステートメントを慎重に設計すれば、レコードセットで返される情報の量を制限でき、もう少し考えれば常に要件を満たすことができます。
これらは SQL の使用をマスターするための始まりにすぎません。 SELECT ステートメントの複雑な使用法を徐々にマスターできるように、主要な標準用語を見てみましょう。比較演算子は、特定のデータを取得するために独自の SELECT 文字列を作成するときによく使用されます。
WHERE 句の基本
WHERE 句の作成を開始する場合、最も簡単な方法は、標準の比較記号 (<、<=、>、>=、<>、および =) を使用することです。明らかに、次のコードの意味と具体的な結果はすぐに理解できるでしょう。
SELECT * FROM Products WHERE p_price >= 199.95
SELECT * FROM Products WHERE p_price <> 19.95
SELECT * FROM Products WHERE p_version = '4'
注: ここで、最後の例文の数字 4 が単一引用符で囲まれていることがわかります。その理由は、この例の「4」は数値型ではなくテキスト型であるためです。 SELECT ステートメントを引用符で囲んで値として変数に割り当てるため、ステートメント内で引用符を使用することもできます。
比較演算子
比較演算子は、テーブルから取得するデータの内容範囲を指定します。これらを使用してフィルターを作成し、特定のタスクに関して必要な情報のみにレコードセットを絞り込むことができます。
3. 好き、嫌い、そしてその中間w で始まるレコードを削除する上記の例では、LIKE が使用されています。 LIKE 述語は非常に便利な記号です。ただし、多くの場合、これを使用すると大量のデータが得られる可能性があるため、使用する前にどのようなデータを取得するかをよく考えて使用することをお勧めします。 1 で始まり 5 で終わる 5 桁の SKU 番号を抽出すると仮定すると、% 記号の代わりにアンダースコア (_) を使用できます。
SQL = "SELECT * FROM Products WHERE p_sku LIKE '1___5'"
アンダースコアは任意の文字を表します。したがって、「1 _ _ _ 5」と入力すると、検索は特定のパターンに一致する 5 桁に制限されます。
逆のことを行う場合は、「1_ _ _ 5」パターンに一致しないすべての SKU エントリを検索します。あとは、先ほどのステートメントの例の LIKE の前に NOT を追加するだけです。
間
ある範囲内のデータを取得したい場合、その範囲の開始点と終了点が事前にわかっている場合は、BETWEEN 判定ワードを使用するとよいでしょう。ここで、特定のテーブル内の 1 ~ 10 の範囲のレコードを選択すると仮定します。 BETWEEN は次のように使用できます。
…1 と 10 の間の ID
または、すでに使い慣れている数学的判断用語を使用することもできます。
…WHERE ID >= 1 かつ ID >= 10
4. 組合声明これまで説明してきた SQL ステートメントは比較的単純であり、標準のレコードセット ループを通じてクエリできる場合、これらのステートメントはより複雑な要件を満たすこともできます。しかし、なぜ「試してみる」という基礎レベルに固執する必要があるのでしょうか。 AND、OR、NOT などの他の記号を追加して、より強力な関数を完成させることができます。
次の SQL ステートメントを例として取り上げます。
SQL ="顧客からの c_firstname、c_lastname、c_email WHERE c_email を選択します
NOT NULL かつ c_purchase = '1' または c_purchase = '2' かつ c_lastname LIKE
「A%」
現在の SQL 知識に基づいて、上記の例を説明するのは難しくありませんが、上記のステートメントでは、条件ステートメントが 1 つの SQL ステートメントにどのように結合されているかを明確に理解することはできません。
複数行のステートメント
SQL ステートメントを理解するのが難しい場合は、ステートメント全体を複数行のコードに分解し、既存の変数に基づいてクエリ ステートメントの各コンポーネントを徐々に追加し、同じ変数に格納するとよいでしょう。
SQL = "SELECT c_firstname、c_lastname、c_emailaddress、c_phone"
SQL = SQL & 「顧客から」
SQL = SQL & " WHERE c_firstname LIKE 'A%' および c_emailaddress NOT NULL"
SQL = SQL & " ORDER BY c_lastname, c_firstname"
最後の文までに、SQL 変数には次の完全な SELECT ステートメントが含まれています。
「顧客から c_firstname、c_lastname、c_emailaddress、c_phone を選択します
WHERE c_firstname LIKE 'A%' および c_emailaddress NO NULL ORDER BY c_lastname,
c_名"
上記のように文全体を分解すると、明らかに読みやすくなります。デバッグするときは、プログラムを読みやすくするために、さらにいくつかの文字を入力することもできます。ただし、文字列を連結するときに複数の単語が一緒にならないように、閉じ引用符の前または開き引用符の後にスペースを追加する必要があることに注意してください。
5.実行開始
SELECT ステートメントの構造と目的を学習したら、次はその使用方法を学習します。使用できるデータベース ツールによっては、「実行」というボタンを押す必要がある場合があります。 ASP Web ページでは、SQL ステートメントを即座に実行することも、ストアド プロシージャとして呼び出すこともできます。
SQL ステートメントを作成した後も、そのクエリ結果にアクセスする必要があります。明らかに、ここで重要なのは ASP レコードセットです。 SQL 以外のレコードセットを使用する場合、レコードセットを作成するコードは通常次のようになります。
薄暗いobjRec
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open "顧客"、objConn、0、1、2
ASP に精通している場合は、上記のコードに馴染みがあるはずです。「customers」とは、開いたデータベース内のデータ テーブルの名前を意味します。
レコードセットを開く
慣れ親しんだ SQL スキルを最大限に活用するには、通常の ASP Web ページで最も一般的に使用されるレコードセットを適応させる必要があります。
薄暗いobjRec
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open SQL、objConn、0、1、2
ここでの唯一の変更は objRec.Open 内で、その後、クエリ対象のデータ テーブルの名前が SQL ステートメントを含む変数に置き換えられます。
このアプローチの利点の 1 つは、カーソルのタイプ (上記では 0、1、2 として示されている) を指定できることです。
SQLの実行
コンパクトなコード行で SQL ステートメントを実行することで、レコードセットを作成できます。構文は次のとおりです。
薄暗いobjRec
set objRec = objConn.Execute(SQL)
上の例で、表示されている SQL は、独自の SQL SELECT ステートメントを保存する変数です。このコード行は、SQL ステートメントを「実行」し (またはデータベースにクエリを実行し)、データを選択し、そのデータをレコードセット (この場合は変数 objRec) に保存します。このアプローチの主な欠点は、使用するカーソルのタイプを選択できないことです。対照的に、レコードセットは常に前方カーソルを使用して開かれます。
カーソルを使用するため、レコードセットを作成する 2 つの方法について理解しておくとよいでしょう。クエリを直接実行すると、文字を入力する時間が節約されますが、デフォルトのカーソルを使用する必要があるため、適切に動作しない問題が発生する可能性があります。どちらの方法を使用する場合でも、この 2 つの最大の違いはコードの単純さです。どのようなフィールドを取得するか、標準が何であるか、データをどのように保存するかに関係なく、SQL スタイルのレコードセットは、操作が簡単であることはもちろん、ASP で開かれる標準のレコードセットよりもサイズがはるかに小さくなります。結局のところ、データをフィルタリングすることで、時間のかかる if-then テストやループの可能性を排除できます。
テストSQLを書く
プロの ASP プログラマーの多くは、Web ページをテストするときに独自の SQL ステートメントを「作成」することに慣れています。これを行うと、実行のためにサーバーに渡される文字列を確認できるため、コードのデバッグに役立ちます。 Response.WriteyourVariable を追加して、関連情報を画面に表示するだけです。 SQL 関連の質問を ASP ディスカッション グループに送信するときは、この情報を含める必要があります。
6. ストレージクエリクエリが比較的単純な場合、SQL ステートメントを毎回最初から作成するのはそれほど手間はかかりません。ただし、複雑なクエリの場合は、毎回最初から作成すると、多くの開発エラーが発生します。したがって、SQL がスムーズに実行されるようになったら、それらを保存し、必要なときに呼び出すことをお勧めします。このようにして、単純なクエリの場合でも、いつでもストアド クエリ ステートメントを使用できます。
現在のビジネス サポートの問題を指摘する週次レポートをチームに作成する必要があるとします。このデータはデータベースから選択する必要があり、レコードは日付に従って選択し、チームが採用したサポート問題のカテゴリに従って並べ替える必要があります。あなたのチーム。このクエリを設計したら、なぜ毎週書き直す必要があるのでしょうか? HTML ページでクエリを作成する代わりに、データベース ツールを使用してクエリを作成し、保存する必要があります。
その後、ActiveCommand 属性を使用して ASP ページにクエリを挿入できます。最初や 2 回は面白くないと思うかもしれませんが、実際にはほんの数行のコードです。
set objSQ = Server.CreateObject ("ADODB.Command")
objSQ.ActiveConnection = "データベース名"
objSQ.CommandText = "storedQueryName"
objSQ.CommandType = adCmdStoredProc
set objRec = objSQ.Execute
adCmdStoredProc を使用すると、ページに adovbs.inc ファイルが組み込まれたことになることに注意してください。このファイルは、番号ではなく名前でアクセスできる Access 定数を定義します。ページにファイルを含めるだけ (<!--#INCLUDE -->)、adCmdStoredProc のような名前を使用できます。こうすることで、後でもう一度見たときに、上記の保存されたクエリが何を意味するのかを理解しやすくなります。