Возвращает строки из базы данных и позволяет делать выборку

advertisement
Возвращает строки из базы данных и позволяет делать выборку одной или нескольких строк или
столбцов из одной или нескольких таблиц в SQL Server 2012. Полный синтаксис инструкции 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 ] ]
[ <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 разрешено использовать в определяемых пользователем функциях только в том
случае, если списки выбора этих инструкций содержат выражения, которые присваивают значения
переменным, локальным для функций.
Четырехкомпонентное имя, использующее функцию OPENDATASOURCE в качестве части имени
сервера, может служить в качестве исходной таблицы в любом месте инструкции SELECT, где может
появляться имя таблицы.
Для инструкций SELECT, которые задействуют удаленные таблицы, существуют некоторые
ограничения на синтаксис.
Логический порядок обработки инструкции SELECT
Следующие действия демонстрируют логический порядок обработки или порядок привязки
инструкции SELECT. Этот порядок определяет, когда объекты, определенные в одном шаге,
становятся доступными для предложений в последующих шагах. Например, если обработчик
запросов можно привязать (для доступа) к таблицам или представлениям, определенным в
предложении FROM, эти объекты и их столбцы становятся доступными для всех последующих
шагов. И наоборот, поскольку предложение 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 на схему, которой принадлежит новая таблица.
Download