Синтаксис текста запросов
Синтаксически текст запроса состоит из набора секций, имеющих определенное назначение, например: выбрать записи из базы данных, отсортировать их, сгруппировать и т. д. Секции состоят из предложений и операторов, которые, в свою очередь, содержат ключевые слова (например, СОЗДАТЬ, ИЗ, ДЛЯ и т. п.), обозначающие определенное действие, которое нужно выполнить с базой данных.
Ключевые слова
Ключевые слова — это предварительно определенные зарезервированные идентификаторы, имеющие специальные значения для компилятора. Ключевые слова могут использоваться только там, где разрешает синтаксис языка запросов.
Ключевые слова можно использовать как на русском, так и на английском языках. Можно произвольным образом смешивать язык написания ключевых слов.
Зарезервированные ключевые слова нельзя использовать в качестве имен элементов проектов, хранящих данные в приложение, и их составных частей, в качестве имен таблиц и их полей.
В языке запросов зарезервированы следующие ключевые слова:
| Русский язык | Английский язык | Подробнее |
|---|---|---|
ВРЕМЕННУЮ | TEMPORARY | Оператор СОЗДАТЬ ВРЕМЕННУЮ ТАБЛИЦУ |
ДЛЯ | FOR | Оператор СОЗДАТЬ ИНДЕКС |
ИЗ | FROM | Предложение ИЗ |
ИНДЕКСИРОВАТЬ | INDEX | Предложение ИНДЕКСИРОВАТЬ ПО |
ИСТИНА | TRUE | Значение типа Булево. Используется в логических и булевых операциях |
ЛОЖЬ | FALSE | Значение типа Булево. Используется в логических и булевых операциях |
НЕОПРЕДЕЛЕНО | UNDEFINED | Литерал типа Неопределено |
ОБРЕЗАТЬ | TRUNCATE | Оператор ОБРЕЗАТЬ |
СОЗДАТЬ | CREATE | Оператор СОЗДАТЬ ВРЕМЕННУЮ ТАБЛИЦУ |
ТАБЛИЦУ | TABLE | Оператор СОЗДАТЬ ВРЕМЕННУЮ ТАБЛИЦУ |
Также зарезервированными словами языка запросов без варианта на русском языке являются NULL и TEMP.
Ключевые слова языка запросов нечувствительны к регистру. Мы рекомендуем выбрать один стиль написания (прописными буквами) и его придерживаться, например:
ВЫБРАТЬ
КодУчастника,
ИмяПроцесса
ИЗ
ОбработанныеСообщения
ГДЕ
ИмяПроцесса == "Обмен"
УПОРЯДОЧИТЬ ПО
КодУчастника
Комментарии
В тексте запроса поддерживаются как однострочные, так и многострочные комментарии.
Пример запроса с однострочными комментариями:
ВЫБРАТЬ
КодУчастника,
ИмяПроцесса // Необходимо включить и другие поля
ИЗ
ОбработанныеСообщения
ГДЕ
ИмяПроцесса == "Обмен" // Лучше передавать имя процесса параметром
УПОРЯДОЧИТЬ ПО
КодУчастника
Пример запроса с многострочным комментарием:
ВЫБРАТЬ
КодУчастника,
ИмяПроцесса
ИЗ
ОбработанныеСообщения
/*ГДЕ
ИмяПроцесса == "Обмен"
УПОРЯДОЧИТЬ ПО
КодУчастника*/
Текст комментария и его положение относительно секций и предложений сохраняются при форматировании.
Пример запроса с комментариями до форматирования:
метод Пример(ДатаКурса: Дата, Валюта: Строка)
знч Запрос = Запрос{
ВЫБРАТЬ
/* Необходимо перепроверить выборку
В новых релизах возможны изменения */
/* После изменения методов работы с валютами
переоценить подход к выборке */
КурсыВалютСрезПоследних.Валюта КАК Валюта,
КурсыВалютСрезПоследних.Период КАК Период,
КурсыВалютСрезПоследних.Курс КАК Курс, // Сделать строку последней
КурсыВалютСрезПоследних.Кратность КАК Кратность
ЗАПОЛНИТЬ
КурсВалюты
ИЗ
КурсыВалют.СрезПоследних(%ДатаКурса) КАК /* Пересмотреть это представление */ КурсыВалютСрезПоследних
ГДЕ
КурсыВалютСрезПоследних.Валюта == %Валюта // Эта секция кажется избыточной
}
;
Пример запроса с комментариями после форматирования:
метод Пример(ДатаКурса: Дата, Валюта: Строка)
знч Запрос = Запрос{
ВЫБРАТЬ
// Необходимо перепроверить выборку
// В новых релизах возможны изменения
// После изменения методов работы с валютами
// переоценить подход к выборке
КурсыВалютСрезПоследних.Валюта КАК Валюта,
КурсыВалютСрезПоследних.Период КАК Период,
КурсыВалютСрезПоследних.Курс КАК Курс,
// Сделать строку последней
КурсыВалютСрезПоследних.Кратность КАК Кратность
ЗАПОЛНИТЬ
КурсВалюты
ИЗ
// Пересмотреть это представление
КурсыВалют.СрезПоследних(%ДатаКурса) КАК КурсыВалютСрезПоследних
ГДЕ
КурсыВалютСрезПоследних.Валюта == %Валюта /* Эта секция кажется избыточной */
}
;
Экранирование имен
Для экранирования имен таблиц, полей и псевдонимов полей, не являющихся корректными идентификаторами, необходимо использовать пару символов `. Например: `Имя с пробелом`.
Если вам требуется включить в имя символ `, удвойте его: `Имя с символом ` ` в середине`.
Имена таблиц, содержащие точку (например, КурсыВалют.СрезПоследних), экранирования не требуют.