Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
доп.docx
Скачиваний:
37
Добавлен:
26.03.2016
Размер:
115.88 Кб
Скачать

4.2.2.3 Предложение into.

Указывает, что результирующий набор используется для создания новой таблицы, в которую вставляются строки результата выполнения запроса. Параметр new_table_name указывает имя новой таблицы.

Синтаксис

[ INTO new_table ]

Аргументы:

new_table

Имя новой таблицы, создаваемой на основе столбцов, указанных в списке выбора, и строк, выбираемых предложением WHERE. Состав полей новой таблицы new_table соответствует составу выражений, указанных в списке выбора. Столбцы в таблице, указанной в аргументе new_table, создаются в порядке, соответствующем списку выбора.

Все столбцы таблицы, указанной в аргументе new_table, получают такие же имена, типы данных и значения, которые указаны в соответствующем выражении в списке выбора.

Если в список выбора входит вычисляемый столбец, соответствующий столбец новой таблицы не будет вычисляемым. Значениями нового столбца становятся значения, вычисленные при выполнении инструкции SELECT...INTO.

4.2.2.4 Предложение from.

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

Этими источниками могут быть:

- базовые таблицы на локальном сервере, где работает SQL Server;

- представления в локальном экземпляре SQL Server. Внутри SQL Server разрешаются ссылки на представления относительно базовых таблиц, на которых построено представление;

- связанные таблицы. Это таблицы в источниках данных OLE DB, к которым можно обратиться с помощью SQL Server. Такой случай называется распределенным запросм. К источникам данных OLE DB можно обратиться из SQL Server, связывая их как связанный сервер, или сослаться на источник данных в функции OPENROWSET или OPENQUERY.

Синтаксис

[ FROM { < table_source > } [ ,...n ] ]

< table_source > ::=

{

table_or_view_name [ [ AS ] table_alias ] [ < tablesample_clause > ]

[ WITH ( < table_hint > [ [ , ]...n ] ) ]

| rowset_function [ [ AS ] table_alias ]

[ ( bulk_column_alias [ ,...n ] ) ]

| user_defined_function [ [ AS ] table_alias ] [ (column_alias [ ,...n ] ) ]

| OPENXML < openxml_clause >

| derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]

| < joined_table >

| < pivoted_table >

| < unpivoted_table >

| @variable [ [ AS ] table_alias ]

| @variable.function_call ( expression [ ,...n ] ) [ [ AS ] table_alias ] [ (column_alias [ ,...n ] ) ]

}

< ablesample_clause > ::=

TABLESAMPLE [SYSTEM] ( sample_number [ PERCENT | ROWS ] )

[ REPEATABLE ( repeat_seed ) ]

< joined_table > ::=

{

< table_source > < join_type > < table_source > ON < search_condition >

| < table_source > CROSS JOIN < table_source >

| left_table_source { CROSS | OUTER } APPLY right_table_source

| [ ( ] < joined_table > [ ) ]

}

< join_type > ::=

[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ < join_hint > ] ]

JOIN

< pivoted_table > ::=

table_source PIVOT < pivot_clause > table_alias

< pivot_clause > ::=

( aggregate_function ( value_column )

FOR pivot_column

IN ( < column_list > )

)

< unpivoted_table > ::=

table_source UNPIVOT < unpivot_clause > table_alias

< unpivot_clause > ::=

( value_column FOR pivot_column IN ( < column_list > ) )

< column_list > ::=

column_name [ ,...n ]

Аргументы:

- < table_source >

Указывает таблицу, представление или источник производной таблицы с указанием или без указания псевдонима. В инструкции можно использовать до 256 источников таблиц, хотя предел зависит от доступной памяти и сложности других выражений в запросе. Отдельные запросы могут не поддерживать 256 источников таблиц. В качестве источника таблицы может быть указана переменная table.

- table_or_view_name

Имя таблицы или представления. Если таблица или представление существует в другой базе данных на том же самом компьютере, на котором запущен экземпляр SQL Server, следует использовать полное имя в виде база_данных.схема.имя_объекта. Если таблица или представление существует вне локального сервера, на связанном сервере следует использовать четырехэлементное имя в виде: связанный_сервер.каталог.схема.объект. Состоящее из четырех частей имя таблицы или представления, которое создано при помощи функции OPENDATASOURCE как серверная часть имени, также может использоваться для указания источника таблицы. Дополнительные сведения о функции см. в разделе OPENDATASOURCE (Transact-SQL).

- [AS] table_alias

Псевдоним для table_source, который может использоваться как для удобства, так и для различения таблицы или представления во внутреннем соединении или во вложенном запросе. Псевдоним зачастую является сокращенным именем таблицы, использующимся для соотнесения с определенными столбцами таблиц в соединении. Если имя столбца существует более чем в одной таблице соединения, SQL Server потребует, чтобы имя столбца было уточнено именем таблицы, представления, или псевдонима. Если определен псевдоним, нельзя использовать имя таблицы. При использовании производной таблицы, набора строк или возвращающей табличное значение функции или предложения оператора (как PIVOT или UNPIVOT) требуемый аргумент table_alias в конце предложения является соответствующим именем таблицы для всех возвращаемых столбцов, включая группирующие столбцы.

- user_defined_function

Указывает возвращающую табличное значение функцию. OPENXML < openxml_clause > Обеспечивает представление XML-документа в виде набора строк. Дополнительные сведения см. в разделе OPENXML (Transact-SQL).

- derived_table

Вложенный запрос, который извлекает строки из базы данных. Аргумент derived_table используется в качестве входной таблицы для внешнего запроса.

- column_alias

Дополнительный псевдоним для замены имени столбца в результирующем наборе производной таблицы. Для каждого столбца в списке выбора следует включить по одному псевдониму столбца и заключить весь список псевдонимов столбцов в скобки.

- < tablesample_clause >

Указывает, что из таблицы возвращается выборка данных. Выборка может быть приблизительной. Это предложение может быть использовано в инструкциях SELECT, UPDATE или DELETE в отношении любой первичной или соединяемой таблицы. TABLESAMPLE не может быть указано для представлений.

< join_type >

Указывает тип операции соединения.

INNER

Указывает, что возвращаются все совпадающие пары строк. Несовпадающие строки из обеих таблиц отбрасываются. Если тип соединения не указан, этот тип задается по умолчанию.

FULL [ OUTER ]

Указывает, что в результирующий набор включаются строки, как из левой, так и из правой таблицы, несоответствующие условиям соединения, а выходные столбцы, соответствующие оставшейся таблице, устанавливаются в значение NULL. Этим дополняются все строки, обычно возвращаемые при помощи INNER JOIN.

LEFT [ OUTER ]

Указывает, что все строки из левой таблицы, не соответствующие условиям соединения, включаются в результирующий набор, а выходные столбцы из оставшейся таблицы устанавливаются в значение NULL в дополнение ко всем строкам, возвращаемым внутренним соединением.

RIGHT [OUTER]

Указывает, что все строки из правой таблицы, не соответствующие условиям соединения, включаются в результирующий набор, а выходные столбцы, соответствующие оставшейся таблице, устанавливаются в значение NULL в дополнение ко всем строкам, возвращаемым внутренним соединением.

- < join_hint >

Указывает, что оптимизатор запросов SQL Server использует одну подсказку по применению соединения, или алгоритм выполнения, для каждого соединения, указанного в предложении FROM. Дополнительные сведения см. в разделе Подсказка по соединению (Transact-SQL).

- JOIN

Указывает, что данная операция соединения должна произойти между указанными источниками или представлениями таблицы.

- ON < условие_поиска >

Задает условие, на котором основывается соединение. Условие может содержать любой предикат, хотя чаще используются столбцы и операторы сравнения, например: SELECT p.ProductID, v.VendorID

FROM Production.Product AS p

JOIN Purchasing.ProductVendor AS v

ON (p.ProductID = v.ProductID);

Когда условие указывает столбцы, их имена и типы данных могут не совпадать; однако если типы данных не совпадают, столбцы должны быть либо совместимыми, либо иметь типы, которые SQL Server 2005 может неявно преобразовать. Если типы данных не могут быть преобразованы неявно, условие должно проводить явное преобразование типа данных при помощи функции CONVERT.