SELECT (Transact-SQL)

SQL Server 2008 R2 で、データベースから行を取得し、1 つ以上のテーブルから 1 つ以上の行または列を選択できるようにします。SELECT ステートメントの完全な構文は複雑ですが、主な句は次のとおりです。

[ WITH <common_table_expression>]

SELECT select_list [ INTO new_table ]

[ FROM table_source ] [ WHERE search_condition ]

[ GROUP BY group_by_expression ]

[ HAVING search_condition ]

[ ORDER BY order_expression [ ASC | DESC ] ]

UNION、EXCEPT、INTERSECT 演算子をクエリ間で使用すると、クエリの結果を結合または比較して単一の結果セットにできます。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

        <SELECT statement> ::=  

    [WITH <common_table_expression> [,...n]]
    <query_expression> 
    [ ORDER BY { order_by_expression | column_position [ ASC | DESC ] } 
  [ ,...n ] ] 
    [ COMPUTE 
  { { AVG | COUNT | MAX | MIN | SUM } (expression )} [ ,...n ] 
  [ BY expression [ ,...n ] ] 
    ] 
    [ <FOR Clause>] 
    [ OPTION ( <query_hint> [ ,...n ] ) ] 

<query_expression> ::= 
    { <query_specification> | ( <query_expression> ) } 
    [  { UNION [ ALL ] | EXCEPT | INTERSECT }
        <query_specification> | ( <query_expression> ) [...n ] ] 

<query_specification> ::= 
SELECT [ ALL | DISTINCT ] 
    [TOP (expression) [PERCENT] [ WITH TIES ] ] 

    < select_list > 
    [ INTO new_table ] 
    [ FROM { <table_source> } [ ,...n ] ] 
    [ WHERE <search_condition> ] 
    [ <GROUP BY> ] 
    [ HAVING < search_condition > ] 

説明

SELECT ステートメントは非常に複雑なので、構文の構成要素と引数の詳細を句ごとに説明します。

SELECT ステートメント内の句の順序は重要です。オプションの句は省略できます。ただし、オプションの句を使用する場合は、適切な順序で指定する必要があります。

ユーザー定義関数に SELECT ステートメントを指定できるのは、関数にとってローカルな変数に値を代入する式がステートメントの選択リストに含まれる場合だけです。

サーバー名要素として OPENDATASOURCE 関数を使用する 4 部構成の名前は、SELECT ステートメント内にテーブル名を指定できる任意の場所で、テーブル ソースとして使用できます。

リモート テーブルに関係する SELECT ステートメントには、いくつかの構文の制約が適用されます。詳細については、「分散クエリを使用する場合のガイドライン」を参照してください。

SELECT ステートメントの論理的な処理順序

次の手順は、SELECT ステートメントの論理的な処理順序またはバインド順序を示しています。この順序によって、ある手順で定義されたオブジェクトが後続の手順の句でいつ使用できるようになるかが決まります。たとえば、クエリ プロセッサが FROM 句で定義されたテーブルまたはビューにバインド (アクセス) できる場合、これらのオブジェクトとその列は後続のすべての手順で使用できます。 反対に、SELECT 句は手順 8. なので、SELECT 句で定義されているすべての列の別名や派生列は手順 8. より前の句で参照できません。ただし、ORDER BY 句などの後続の句で参照できます。ステートメントの実際の物理的実行はクエリ プロセッサによって決定され、順序はこの一覧と異なる場合があることに注意してください。

  1. FROM

  2. ON

  3. JOIN

  4. WHERE

  5. GROUP BY

  6. WITH CUBE または WITH ROLLUP

  7. HAVING

  8. SELECT

  9. DISTINCT

  10. ORDER BY

  11. TOP

権限

データを選択するには、テーブルまたはビューに対する SELECT 権限が必要です。この権限は、スキーマに対する SELECT 権限やテーブルに対する CONTROL 権限などの上位スコープから継承されます。または、db_datareader または db_owner 固定データベース ロールまたは sysadmin 固定サーバー ロールのメンバーシップが必要です。また、SELECTINTO を使用して新しいテーブルを作成するには、CREATETABLE 権限と、新しいテーブルを所有するスキーマに対する ALTERSCHEMA 権限が両方とも必要です。

関連項目

参照