Поделиться через


Использование предложения FROM

Предложение FROM необходимо в любой инструкции SELECT, где данные извлекаются из таблиц или представлений. Используйте предложение FROM, чтобы:

  • перечислить список таблиц и представлений, содержащих столбцы из списка выборки и в предложении WHERE. Именам таблиц и представлений может быть присвоен псевдоним при помощи предложения AS;
  • Использовать соединения. они определяются условиями, указанными в предложении ON;

Предложение FROM является списком имен таблиц, представлений и предложений JOIN, разделенных запятыми.

Язык Transact-SQL содержит расширения, которые поддерживают указание объектов, отличных от таблиц или представлений, в предложении FROM. Эти другие объекты возвращают результирующий набор или набор строк в терминах OLE DB, который образует виртуальную таблицу. Затем инструкция SELECT работает так, как будто результирующий набор является таблицей.

Предложение FROM может задать:

  • одну или несколько таблиц или представлений. Например:

    SELECT *
    FROM SalesOrderHeader
    
  • соединения двух или более таблиц или представлений:

    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 в виде псевдонимов или пользовательских имен. Результирующий набор SELECT в предложении FROM образует таблицу, используемую внешней инструкцией 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;

  • операторы PIVOT и UNPIVOT используются для переопределения формы входной таблицы. Оператор PIVOT формирует новые столбцы на выходе на основании значений столбцов на входе. Дополнительные сведения см. в разделе Использование операторов PIVOT и UNPIVOT.

  • одну или несколько таблиц или представлений из связанного сервера, определенного при помощи хранимой процедуры sp_addlinkedserver. Связанный сервер может быть любым источником данных OLE DB.

  • набор строк OLE DB, возвращаемый функциями OPENROWSET или OPENQUERY.

Основой распределенных запросов Microsoft SQL Server 2005 являются связанные серверы, OPENROWSET и OPENQUERY. Они предоставляют возможность запрашивать или изменять данные в любом источнике данных OLE DB как часть инструкций на языке Transact-SQL.

Инструкции SELECT без предложений FROM

Инструкции SELECT, не требующие наличия предложения FROM, не выбирают данные из таблиц базы данных. Эти инструкции SELECT выбирают данные только из локальных переменных или функций языка Transact-SQL, которые не работают со столбцами, например:

SELECT @MyIntVariable
SELECT @@VERSION
SELECT DB_ID('AdventureWorks')

См. также

Основные понятия

Распределенные запросы
Использование соединений

Другие ресурсы

OPENQUERY (Transact-SQL)
FROM (Transact-SQL)
OPENROWSET (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005