ADO での SELECT 構文の使用
著者:Eve Cole
更新時間:2009-05-30 19:54:37
SELECT式
次に、SELECT 式を見て、テーブル内の特定の条件を満たすレコードを検索します。構文は次のとおりです。
SELECT [キーワード] { * | テーブル名.* | [テーブル名.] フィールド名 1 [AS エイリアス 1] [, [テーブル名.] フィールド名 2 [AS エイリアス 2] [, ...]]}
FROM テーブル式 [, ...] [IN 外部テーブル]
[どこ... ]
[グループ化...]
[持っている...]
[注文方法...]
[オーナーアクセスオプションあり]
キーワード: 返されるレコードの数を制限するために使用でき、ALL、DISTINCT、DISTINCTROW、または TOP に設定できます。述語が指定されていない場合、デフォルト値は ALL です。
*: すべてのフィールドを選択します。
エイリアス: テーブル内の元のフィールド名を置き換えます。
テーブル式: 1 つ以上のカンマ区切りのテーブル名。
外部テーブル: 現在のテーブルにテーブルが存在しない場合、テーブル操作でテーブルを含むテーブル名を設定する必要があります。
SELECT 式を実行しても、テーブル内の既存のデータは変更されません。
SELECT 式の最も基本的な構文は次のとおりです。
SELECT * FROM テーブル式
アスタリスク (*) を使用すると、テーブルのすべてのフィールドを選択できます。たとえば、次の例では、[Product] テーブルのすべてのフィールドを選択します。
製品から * を選択してください
フィールド名にスペースや句読点が含まれる場合は、括弧 [ ] で囲む必要があります。例えば:
SELECT [コンピュータ製品]
FROM 句のフィールド名に複数のテーブルが含まれている場合は、フィールド名の前にテーブル名とドット (.) 演算子を追加する必要があります (テーブル名.フィールド名)。たとえば、次の例では、[Product] テーブルの [Price] フィールドと [Order] テーブルの [Quantity] フィールドを選択します。
製品.価格、注文.数量を選択してください
商品・ご注文から
WHERE 製品コード = 注文コード
Recordset オブジェクトを使用する場合、Recordset は rs (テーブル名.フィールド名) 形式を認識しません。つまり、rs ("製品. 価格") ではエラーが発生するため、フィールドのエイリアスを設定するには AS を使用する必要があります。名前。例えば:
product.priceAS 価格、order.quantityAS 数量を選択してください
商品・ご注文から
WHERE 製品コード = 注文コード
このようにして、rs (「価格」) と rs (「数量」) を使用してフィールドのデータを読み取ることができます。
SELECT 式に関連する構文:
キーワード: すべて/DISTINCT/DISTINCTROW/トップ。
WHERE: 特定の条件を満たす FROM テーブル内のデータ レコードを検索します。 WHERE では、次の BETWEEN、LIKE、および IN 演算子を使用できます。
Between...And: 式の値が指定された範囲内にあるかどうかを判断します。
同様: 一致するキーワードを検索します。
IN 式: 範囲が限定されます。
NOT IN 式:指定した範囲に属さないことを示します。
ORDER BY 句: 並べ替えフィールドを設定できます。
GROUP BY 句: クエリ結果の統計を作成します。
HAVING 句: GROUP BY 統計であるレコードをフィルタリングするために SELECT 式で使用されます。
結合: 複数のクエリセットの結果を結合できます。
JOIN: 2 つのテーブルのフィールド レコードを結合します。
サブクエリ: 式には SELECT 式を含めることができます。
Select...Into: クエリ結果に基づいて生成されたテーブルを作成します。
詳細は以下のとおりです。
ALL/DISTINCT/DISTINCTROW/TOP キーワード
SELECT クエリを使用する場合、キーワードを追加してクエリ対象のレコードを選択できます。次のように:
ALL: すべてのレコードを返します。
DISTINCT: 指定したフィールドに重複レコードがある場合、1 つのレコードのみが返され、レコードは重複しません。
DISTINCTROW: 指定されたフィールドに重複がある場合、レコードは返されません。
TOP: 以前のレコードまたはレコードの割合を返します。
構文は次のとおりです。
SELECT [すべて | 区別 | 上位 n [パーセント]]
テーブルから
ALL はすべてのレコードを返します。キーワードを追加しない場合は、ALL を追加したのと同じ意味となり、すべてのレコードが返されます。たとえば、次の 2 つの例では同じ実行結果が得られ、どちらも製品テーブルからすべてのレコードを返します。
すべて選択 * 製品から
実行結果は次と同じです。
製品から * を選択してください
DISTINCT は、指定されたフィールド内の重複データを選択しません。 DISTINCT を使用すると、クエリ結果には SELECT DISTINCT 後の各フィールドのデータ値がリストされます。それらが同じ場合、指定したフィールドのデータは 1 つだけ取得されます。たとえば、製品テーブルに同じ製品名を持つ製品がいくつかあり、DISTINCT の SQL 式は、フィールドに同じ製品名データを持つレコードを 1 つだけ返します。
製品から製品名を DISTINCT 選択します
DISTINCT を含めない場合、上記のクエリ例は同じ製品名を含む複数のレコードを返します。
SELECT DISTINCT 句の後に複数のフィールドが指定されている場合、クエリ結果内のすべてのフィールドの結合値は繰り返されません。
DISTINCTROW は、指定されたフィールドの重複レコードをすべて返すわけではありません。
TOP n [PERCENT]、前のレコードまたはレコードの割合を返します。並べ替えの順序は、ORDER BY 句を使用して指定できます。たとえば、上位 10 人の生徒の名前を検索します。
トップ 10 の名前を選択
学生から
ORDER BY スコア
ORDER BY 句を含めない場合、クエリは Student テーブルから任意の 10 レコードを返します。
TOP は同じ値を選択しません。10 番目と 11 番目の結果が同じ場合、クエリは 11 個のレコードを返します。
PERCENT を使用すると、最初の数パーセントのレコードを設定できます。たとえば、上位 10% の生徒の名前を検索できます。
トップ 10 パーセントの名前を選択
学生から
ORDER BY スコア
ASP プログラムでこの SQL コマンドを使用する例を見てみましょう。
たとえば、ASP プログラム rs7.asp は次のようになります。 [製品 (コード名、名前) に挿入、コード名 = 'C2000' の製品から、Distinct コード名、名前を選択] Distinct を使用して一意のレコードを検索できます。 [挿入] をクリックすると、新しいコード名は C2000 レコードになります。
<%
' 個別のコード、名前のみがコードを決定します、名前が同じかどうか、同じ場合は 1 つのレコードのみを追加します
sql = "製品に挿入 (コード名、名前) コード='C2000' の製品からの固有のコード名、名前を選択します"
a = conn1.Execute(sql) を設定します。
Set rs3 = Server.CreateObject("ADODB.Recordset")
sql = "コード='C2000'の製品から * を選択"
rs3.SQL,conn1,1,1,1を開く
%>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">コード</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名前</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">価格</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">数量</FONT></TD>
</TR>
<% rs3.EOF ではない場合に実行します %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("コード名")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("name")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("price")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("quantity")%></TD>
</TR>
<%
rs3.MoveNext
ループ
rs3.閉じる
%>
</テーブル>
どこ
WHERE は、FROM テーブル内の特定の条件を満たすデータ レコードを検索します。WHERE は、SELECT、UPDATE、または DELETE 式で使用されます。
SELECT クエリで WHERE 句が指定されていない場合は、テーブル内のすべてのデータが返されます。 WHERE 句や JOIN 句を使用せずに SELECT で複数のテーブルをクエリすると、クエリの結果は複数のテーブルのデータの積になります。
WHERE は、次のような特定の条件を設定します。
FROM product WHERE カテゴリ = 'コンピュータ': [カテゴリ] が [コンピュータ] である [製品] を選択することを示します
WHERE 価格が 1000 と 5000 の間: 価格が 1000 と 5000 の間であることを示します。
WHERE 句には、AND や OR などの論理演算子で接続された演算式を最大 40 個含めることができます。
特定の条件を設定する場合は、フィールドの種類に応じて前後に異なる記号を追加します。次に例を示します。
テキスト: 前後に一重引用符を追加します (例: WHERE category = 'Computer')。
数字: WHERE 数量 > 100 など、前後に記号はありません。
日付: 前後に # 記号を追加します (例: WHERE date = #5/15/99#)。
WHERE では、次の BETWEEN、LIKE、および IN 演算子を使用できます。