Оператор ВЫБРАТЬ
Оператор ВЫБРАТЬ
возвращает строки из базы данных и позволяет делать выборку одной или нескольких строк или столбцов из одной или нескольких таблиц. Например:
ВЫБРАТЬ
ОбработанныеСообщения.КодУчастника КАК КодУчастника,
ОбработанныеСообщения.ИмяУзла КАК ИмяУзла
ИЗ
ОбработанныеСообщения КАК ОбработанныеСообщения
ГДЕ
ОбработанныеСообщения.ИмяПроцесса == "Обмен"
УПОРЯДОЧИТЬ ПО
ОбработанныеСообщения.ИмяУзла
Предложения внутри оператора ВЫБРАТЬ
Оператор ВЫБРАТЬ
всегда содержит как минимум одну часть объединения и может содержать следующие предложения:
часть-объединения
ОБЪЕДИНИТЬ [ВСЕ | РАЗЛИЧНЫЕ]
...
часть-объединения
[УПОРЯДОЧИТЬ ПО
элемент-упорядочивания,
...,
элемент-упорядочивания]
[ПОЛУЧИТЬ количество-получаемых-записей]
[СО СМЕЩЕНИЕМ количество-пропускаемых-записей]
[ИНДЕКСИРОВАТЬ ПО
элемент-индексирования,
...,
элемент-индексирования
ДОПОЛНИТЕЛЬНО ПО
дополнительное-поле,
...,
дополнительное-поле]
ИНДЕКСИРОВАТЬ ПО
ИНДЕКСИРОВАТЬ ПО используется только в запросах при создании временных таблиц.
часть-объединения
часть-объединения обязательно содержит предложение ВЫБРАТЬ
и кроме этого может содержать следующие предложения:
ВЫБРАТЬ [РАЗРЕШЕННЫЕ | ПОЛНОСТЬЮ] [РАЗЛИЧНЫЕ] [ПЕРВЫЕ количество-выбираемых-записей]
элемент-списка-выборки,
...,
элемент-списка-выборки
[ПОМЕСТИТЬ | ПОРОДИТЬ | ЗАПОЛНИТЬ
имя-конструкции]
[ИЗ
элемент-списка-из,
...,
элемент-списка-из]
[ГДЕ
условие-выборки-записей]
[СГРУППИРОВАТЬ ПО
элемент-группировки,
...,
элемент-группировки]
[ИМЕЮЩИЕ
условие-группировки-записей]
РАЗРЕШЕННЫЕ
С помощью ключевого слова РАЗРЕШЕННЫЕ
вы можете выбрать только те записи, на которые у текущего пользователя есть права.
При использовании ключевого слова РАЗРЕШЕННЫЕ
следует учитывать следующее:
- его использование оказывает влияние на работу только в том случае, если на таблицы наложены ограничения доступа к данным;
- права доступа на саму таблицу не учитываются. Например, если на таблицу отсутствует право
ЧТЕНИЕ
, то запрос с использованием такой таблицы будет выполнен с ошибкой вне зависимости от использования в запросе ключевого слов аРАЗРЕШЕННЫЕ
.
ПОЛНОСТЬЮ
Если указано ключевое слово ПОЛНОСТЬЮ
, то при попытке получить поля с данными из таблиц, доступа к которым у пользователя нет, будет выдано исключение. Так, в примере ниже доступа к некоторым записям таблицы Поставщики
у пользователя нет, и результатом запроса будет ошибка «Недостаточно прав для выполнения операции "ЧТЕНИЕ" со строкой таблицы "Поставщики"»:
ВЫБРАТЬ ПОЛНОСТЬЮ
Поставщики.Код
РАЗЛИЧНЫЕ
С помощью ключевого слова РАЗЛИЧНЫЕ
вы можете указать, что в результат не должны попадать повторяющиеся строки.
ПЕРВЫЕ
Конструкция ПЕРВЫЕ количество-выбираемых-записей
позволяет задать предельное количество строк в результате запроса. Будут отобраны самые первые строки в соответствии с правилами упорядочивания результатов запроса.
ПЕРВЫЕ
можно указывать только в следующих случаях:
- если в запросе есть всего одна часть-объединения;
- если в запросе не указано ПОЛУЧИТЬ.
ПОМЕСТИТЬ, ПОРОДИТЬ, ЗАПОЛНИТЬ
Предложения ПОМЕСТИТЬ
, ПОРОДИТЬ
и ЗАПОЛНИТЬ
являются взаимоисключающими: можно использовать только одно из них или ни одного:
ПОМЕСТИТЬ
имя-временной-таблицы
// или
ПОРОДИТЬ
имя-типа-структуры
// или
ЗАПОЛНИТЬ
имя-типа
ИЗ
В предложении ИЗ
указываются таблицы, содержимое которых обрабатывается в запросе.
ГДЕ
Предложение ГДЕ
позволяет отфильтровать результат запроса. В результат попадают только те записи, для которых указанное условие оказывается истинным.
СГРУППИРОВАТЬ ПО
С помощью предложения СГРУППИРОВАТЬ ПО
вы можете описать порядок группировки результатов запроса.
ИМЕЮЩИЕ
Предложение ИМЕЮЩИЕ
позволяет накладывать условия на результаты группировки.
Элемент списка выборки
ВЫБРАТЬ [РАЗРЕШЕННЫЕ | ПОЛНОСТЬЮ] [РАЗЛИЧНЫЕ] [ПЕРВЫЕ количество-выбираемых-записей]
элемент-списка-выборки,
...
элемент-списка-выборки
РАЗРЕШЕННЫЕ
— опция по умолчанию.
В качестве элемент-списка-выборки можно использовать:
-
*
Символ
*
(звездочка) — выбрать все поля. Можно использовать, если в предложенииИЗ
указана только одна таблица запроса. -
псевдоним-таблицы.*
Выбрать все поля указанной таблицы запроса.
-
выражение [ [КАК] псевдоним-поля]
Выбрать значение указанного выражения.
важноНе рекомендуется опускать ключевое слово
КАК
— это снизит читаемость запроса.Псевдонимы не должны повторяться в пределах одной части объединения. В запросе с несколькими частями объединения всегда используется псевдоним первой части объединения, поэтому нет смысла указывать его в других частях.
Не рекомендуется использовать *
и выражения без псевдонимов — это приводит к хрупкости кода. Основное назначение этих возможностей — упрощение написания запросов при расследовании проблем и т. п.
Если псевдоним-поля не указан, то он будет сгенерирован автоматически:
- для выражений, которые содержат только одно поле — имя этого поля в текущем варианте встроенного языка;
- для остальных выражений — «Поле».
Если автоматический псевдоним уже занят, то генерируется новый путем добавления к нему числа (начиная с 2
), пока не будет получен свободный.
Автоматически сгенерированные псевдонимы полей могут быть непостоянными: они могут меняться при изменении запроса или может быть изменен механизм генерации псевдонимов.
Если в часть-объединения
есть агрегатные функции, элементы группировки или условия группировки, то запрос считается запросом с группировкой.
На такие запросы накладывается дополнительное требование — в списке выборки могут присутствовать только:
- агрегатные функции;
- константы;
- выражения, присутствующие в списке группировки;
- сложные выражения, в которых можно использовать все вышеперечисленное.