FROM 句の使用
FROM 句は、テーブルまたはビューからデータを取得している SELECT ステートメントごとに必要です。FROM 句は次の場合に使用します。
- 選択リストや WHERE 句で参照する列を格納しているテーブルおよびビューをリストする場合。テーブル名やビュー名には AS 句を使用して別名を付けることができます。
- 型を結合する場合。結合条件は ON 句で指定します。
FROM 句は、テーブル名、ビュー名、および JOIN 句をコンマで区切ったリストです。
Transact-SQL には、テーブルまたはビュー以外のオブジェクトを FROM 句で指定できる拡張機能が備わっています。このようなオブジェクトは結果セット (OLE DB でいう行セット) を返し、仮想テーブルを形成します。SELECT ステートメントは、この結果セットをテーブルと同じように扱います。
FROM 句では次のオブジェクトや操作を指定できます。
1 つ以上のテーブルまたはビュー。次に例を示します。
SELECT * FROM SalesOrderHeader
2 つ以上のテーブルまたはビューの結合。次に例を示します。
SELECT Cst.CustomerID, St.Name, Ord.ShipDate, Ord.Freight FROM AdventureWorks.Sales.Store AS St JOIN AdventureWorks.Sales.Customer AS Cst ON St.CustomerID = Cst.CustomerID JOIN AdventureWorks.Sales.SalesOrderHeader AS Ord ON Cst.CustomerID = Ord.CustomerID
FROM 句内の SELECT ステートメントにより、別名またはユーザー指定の名前で参照されている 1 つ以上の派生テーブル。FROM 句内にある SELECT の結果セットは、外部 SELECT ステートメントで使用されるテーブルを形成します。たとえば、次の SELECT は派生テーブルを使用して各従業員が住んでいる市区町村を返します。
USE AdventureWorks ; GO SELECT RTRIM(c.FirstName) + ' ' + LTRIM(c.LastName) AS Name, d.City FROM Person.Contact c INNER JOIN HumanResources.Employee e ON c.ContactID = e.ContactID INNER JOIN (SELECT AddressID, City FROM Person.Address) AS d ON e.AddressID = d.AddressID ORDER BY c.LastName, c.FirstName ;
APPLY 演算子。FROM 句では、結合に加えて APPLY 演算子を指定できます。これにより、右辺の入力 (通常はテーブル値関数) を左辺の入力の各行に対して評価し、すべての評価の結果をマージできます。詳細については、「APPLY の使用」を参照してください。
PIVOT 演算子と UNPIVOT 演算子。これらの演算子は、入力テーブルの形状を変更するために FROM 句で使用できます。PIVOT 演算子の出力では、入力の列の値に基づいて、新しい列が生成されます。詳細については、「PIVOT と UNPIVOT の使用」を参照してください。
sp_addlinkedserver を使用して定義されているリンク サーバー上の 1 つ以上のテーブルまたはビュー。リンク サーバーには、任意の OLE DB データ ソースを指定できます。
OPENROWSET 関数または OPENQUERY 関数のいずれかから返される OLE DB 行セット。
Microsoft SQL Server 2005 分散クエリの基礎は、リンク サーバー、OPENROWSET、および OPENQUERY です。これらにより、Transact-SQL ステートメントの一部として、任意の OLE DB データ ソースのデータに対するクエリまたは変更を実行することが可能になります。
FROM 句を使用しない SELECT ステートメント
データベース内のテーブルからのデータを選択していない SELECT ステートメントの場合、FROM 句は不要です。このような SELECT ステートメントは、列に対する操作を行わないローカル変数または Transact-SQL 関数からのデータ選択のみを実行します。次に例を示します。
SELECT @MyIntVariable
SELECT @@VERSION
SELECT DB_ID('AdventureWorks')
参照
概念
その他の技術情報
OPENQUERY (Transact-SQL)
FROM (Transact-SQL)
OPENROWSET (Transact-SQL)