クエリの基礎

クエリは、SQL Server に格納されているデータに対する要求です。クエリは、次のような形式で実行できます。

  • MS Query ユーザーまたは Microsoft Access ユーザーは GUI (グラフィカル ユーザー インターフェイス) を使用して、1 つ以上の SQL Server テーブルから必要なデータを取り出すことができます。

  • SQL Server Management Studio または osql ユーティリティのユーザーは SELECT ステートメントを実行できます。

  • Microsoft Visual Basic アプリケーションなどのクライアント アプリケーションや中間層アプリケーションは、SQL Server のテーブルのデータを、グリッドなどのバインドされたコントロールにマップできます。

ユーザーはさまざまな方法でクエリを操作できますが、クエリによって実行される作業はすべて同じです。つまり、SELECT ステートメントの結果セットがユーザーに提示されます。Visual Studio クエリ デザイナなどのグラフィック ツールを使用する場合など、ユーザーが SELECT ステートメントを指定しない場合でも、クライアント ソフトウェアによってユーザーのクエリが SELECT ステートメントに変換され、SQL Server に送信されます。

SELECT ステートメントは、SQL Server のデータを取得し、これを 1 つ以上の結果セットにまとめてユーザーに返します。結果セットは、SELECT のデータを表形式で表示したものです。SQL テーブルと同様に、結果セットは列と行から構成されます。

SELECT ステートメントの完全な構文は複雑です。ただし、ほとんどの SELECT ステートメントは、結果セットの 4 つの主要なプロパティを記述しているだけです。

  • 結果セット内の列の数と属性。次の属性は、結果セット列ごとに定義する必要があります。

    • 列のデータ型。

    • 列のサイズ。数値列の場合は有効桁数と小数点以下桁数。

    • 列に返されるデータ値のソース。

  • 結果セットの検索対象テーブル、およびテーブル間の論理的関係。

  • 基になるテーブルの行が SELECT の対象になるために満たす必要がある条件。条件を満たしていない行は無視されます。

  • 結果セットの行の順序。

次の SELECT ステートメントでは、単価が $40 を超える製品の製品 ID、名称、表示価格を検索します。

SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ListPrice > $40
ORDER BY ListPrice ASC

SELECT キーワードの後ろに続く列名 (ProductID、Name、および ListPrice) は選択リストです。この選択リストは 3 列の結果セットを作成し、各列に Product テーブルの対応する列の名前、データ型、サイズが格納されることを指定しています。FROM 句は 1 つのベース テーブルだけを指定しているので、SELECT ステートメントの列名はどれもそのテーブル内の列を参照します。

FROM 句は、データの検索対象テーブルとして Product テーブルを指定しています。

WHERE 句は、Product テーブル内でこの SELECT ステートメントの対象になるのは、ListPrice 列の値が $40 を超えている行だけであることを指定しています。

ORDER BY 句は ListPrice 列の値に基づいて、結果セットを昇順 (ASC) に並べ替えることを指定しています。