diff --git a/docs/sql/queries.md b/docs/sql/queries.md
index 7e6ba2a476013930722be4df2f9dded4191b3a84..03a67d0992362fe6d593b9be96e6929ed70febe7 100644
--- a/docs/sql/queries.md
+++ b/docs/sql/queries.md
@@ -9,8 +9,7 @@ Picodata при работе с распределенной СУБД.
   [создания](#create_table) и [удаления](#drop_table)
   [таблиц](../glossary.md#table);
 - Data Modification Language (`DML`): команды [`INSERT`](#insert) для
-  добавления, [`DELETE`](#delete) для удаления и [`UPDATE`](#update) для
-  обновления данных;
+  добавления данных в таблицы и [`DELETE`](#delete) для удаления данных;
 - Data Query Language (`DQL`): команда [`SELECT`](#select) для получения
   данных из таблиц;
 - команда [`EXPLAIN`](#explain) для отображения планов запросов `DML` и
@@ -34,16 +33,61 @@ Picodata при работе с распределенной СУБД.
 команд с примерами их выполнения.
 
 ## Начало работы {: #getting-started }
-Для ввода команд SQL требуется интерактивная консоль
-Picodata. Она доступна после [запуска](../cli.md#run-command) инстанса с
-ключом `-i` или явного [подключения](../cli.md#connect-command) к нему.
-Синтаксис команд учитывает особенности Lua-интерпретатора консоли и
-предполагает, что любой SQL-запрос должен содержаться в обертке
-следующего вида:
+Для ввода команд SQL требуется интерактивная консоль Picodata. Она
+доступна после [запуска](../cli.md#run-command) инстанса с ключом `-i`
+или явного [подключения](../cli.md#connect-command) к нему из отдельного
+терминала.
 
+### Доступные языки консоли {: #available_langs }
+Для ввода команд можно использовать доступные языки консоли:
+
+- язык `sql` позволяет писать запросы непосредственно на языке SQL;
+- язык `lua` предполагает, что SQL-запрос будет находиться внутри дополнительных элементов Lua-обертки.
+
+Дополнительно стоит отметить, что для использования [параметризированных запросов](#parametric-queries) подойдет только язык Lua.
+
+### Переключение языков консоли {: #switching_langs }
+Для установки языка SQL:
+```lua
+\set language sql
 ```
-pico.sql([[запрос]], {значения передаваемых параметров})
+Для возможности вводить многострочные (и легче читаемые) запросы, следует задать разделитель команд:
+```lua
+\set delimeter ;
 ```
+Указанный в этом примере разделитель (`;`) используется далее в этом справочнике в примерах команд.
+
+Для установки языка Lua:
+```lua
+\set language lua
+```
+
+В этом случае SQL-запрос должен передаваться в качестве содержимого
+функции `pico.sql()`. Тело запроса следует указать внутри скобок. Для
+языка Lua обязательно использование блока фигурных скобок после запроса.
+Внутри фигурных скобок опционально указываются параметры значений:
+
+```
+"запрос", {значения передаваемых параметров}
+```
+
+Дополнительно, как показано в примерах данного раздела, можно заключить
+запрос в парные квадратные скобки с тем, чтобы не использовать
+экранирование кавычек:
+
+```
+[[запрос]], {значения передаваемых параметров}
+```
+
+Если передаваемых параметров нет, содержимое фигурных скобок остается
+пустым. Пример команды:
+
+```lua
+pico.sql([[select * from "characters"]], {})
+```
+Далее приведены команды с объяснением их действия. Для большинства
+примеров используется язык консоли SQL кроме тех случаев, когда
+использование ввода на Lua предпочтительнее.
 
 ## Создание таблицы {: #create_table }
 
@@ -73,16 +117,15 @@ pico.sql([[запрос]], {значения передаваемых парам
 
 Создадим первую таблицу следующей командой:
 
-```
-pico.sql([[
-	create table "characters" (
-    	        "id" integer,
-              "name" text not null,
-    	        "year" integer,
-    	        primary key ("id")
-	) using memtx distributed by ("id")
-	option (timeout = 3.0)
-]])
+```sql
+create table "characters" (
+            "id" integer,
+            "name" text not null,
+            "year" integer,
+            primary key ("id")
+)
+using memtx distributed by ("id")
+option (timeout = 3.0) ;
 ```
 
 Для второй таблицы команда будет отличаться только именем третьей колонки.
@@ -102,10 +145,8 @@ Cхема запроса для удаления таблицы показана
 
 Пример удаления таблицы:
 
-```
-pico.sql([[
-	drop table "characters"
-]])
+```sql
+drop table "characters" ;
 ```
 
 ## Запрос SELECT {: #select }
@@ -129,8 +170,8 @@ Cхема возможных распределенных запросов `SELE
 
 Пример получения данных всей таблицы:
 
-```
-pico.sql([[select * from "characters"]], {})
+```sql
+select * from "characters" ;
 ```
 
 Вывод в консоль:
@@ -158,15 +199,18 @@ pico.sql([[select * from "characters"]], {})
 _Примечание_: строки в выводе идут в том порядке, в каком их отдают узлы
 хранения Picodata.
 
+### Параметризированные запросы {: #parametric-queries }
+
 В читающих запросах с условиями можно использовать как обычный вид, так
-и параметризированный. Например, следующие две команды дадут одинаковый
-результат (вывод строки по известному `id`):
+и параметризированный. В последнем случае потребуется сначала
+[переключить](#switching_langs) язык консоли на Lua. Так, следующие две
+команды дадут одинаковый результат (вывод строки по известному `id`). :
 
-```
-pico.sql([[select "name" from "characters" where "id" = 1]], {})
+```sql
+select "name" from "characters" where "id" = 1 ;
 ```
 
-```
+```lua
 pico.sql([[select "name" from "characters" where "id" = ?]], {1})
 ```
 
@@ -191,11 +235,11 @@ from "characters" where "id" = ?`), и если подобных запросо
 Пример вывода строк по нескольким условиям для разных столбцов (также
 два варианта):
 
-```
-pico.sql([[select "name","year" from "characters" where "id" > 3 and "year" > 2000 ]], {})
+```sql
+select "name","year" from "characters" where "id" > 3 and "year" > 2000 ;
 ```
 
-```
+```lua
 pico.sql([[select "name","year" from "characters" where "id" > ? and "year" > ? ]], {3, 2000})
 ```
 
@@ -223,7 +267,7 @@ pico.sql([[select "name","year" from "characters" where "id" > ? and "year" > ?
    сущность и может включать как простое указание на таблицу, так и
    конструкцию из разных условий.
 
-### Параметризированные запросы {: #parametric-queries }
+
 
 ### **values**
 ![Column](ebnf/VALUES.svg)
@@ -260,8 +304,8 @@ pico.sql([[select "name","year" from "characters" where "id" > ? and "year" > ?
 
 Пример подсчета общего числа товаров на складе:
 
-```
-pico.sql([[select sum("stock") from "assets"]], {})
+```sql
+select sum("stock") from "assets" ;
 ```
 
 Вывод в консоль:
@@ -277,8 +321,8 @@ pico.sql([[select sum("stock") from "assets"]], {})
 
 Пример добавления текста к значениям в колонке:
 
-```
-pico.sql([[select group_concat("name",' character, ') from "characters"]], {})
+```sql
+select group_concat("name",' character, ') from "characters" ;
 ```
 
 Вывод в консоль:
@@ -303,8 +347,8 @@ pico.sql([[select group_concat("name",' character, ') from "characters"]], {})
 более столбцов. Например, с помощью команды ниже можно выяснить название
 игрушки, зная ее количество на складе:
 
-```
-pico.sql([[select "name" from "assets" where ("stock") in (values (2561))]], {})
+```sql
+select "name" from "assets" where ("stock") in (values (2561)) ;
 ```
 
 Вывод в консоль:
@@ -328,15 +372,13 @@ pico.sql([[select "name" from "assets" where ("stock") in (values (2561))]], {})
 персонажами 1995 года, а также все игрушки, остатки которых на складе
 превышают 1000 штук:
 
-```
-pico.sql([[
-  select "name"
-  from "characters"
-  where "year" = 1995
-  union all
-  select "name" from "assets"
-  where "stock" > 1000
-]], {})
+```sql
+select "name"
+from "characters"
+where "year" = 1995
+union all
+select "name" from "assets"
+where "stock" > 1000 ;
 ```
 
 Вывод в консоль:
@@ -369,8 +411,13 @@ pico.sql([[
 На этот раз нужно получить список игрушек с персонажами 1995 года, но
 только если их запасы меньше 1000 штук:
 
-```
-pico.sql([[select "name"  from "characters" where "year" = 1995 except select "name" from "assets" where "stock" > 1000]], {})
+```sql
+select "name"
+from "characters"
+where "year" = 1995
+except select "name"
+from "assets"
+where "stock" > 1000 ;
 ```
 
 Вывод в консоль:
@@ -395,8 +442,8 @@ pico.sql([[select "name"  from "characters" where "year" = 1995 except select "n
 
 Пример для вывода столбцы таблицы:
 
-```
-pico.sql([[select "score" as "Total_score" from "scoring"]], {})
+```sql
+select "score" as "Total_score" from "scoring" ;
 ---
 - metadata:
   - {'name': 'Total_score', 'type': 'decimal'}
@@ -409,8 +456,8 @@ pico.sql([[select "score" as "Total_score" from "scoring"]], {})
 
 Пример для функции `CAST()`:
 
-```
-pico.sql([[select sum(cast("score" as int)) as "_Total_score_1" from "scoring"]], {})
+```sql
+select sum(cast("score" as int)) as "_Total_score_1" from "scoring" ;
 ---
 - metadata:
   - {'name': '_Total_score_1', 'type': 'decimal'}
@@ -436,16 +483,13 @@ pico.sql([[select sum(cast("score" as int)) as "_Total_score_1" from "scoring"]]
 
 Команда:
 
-```
-pico.sql([[
-  select
-   "id","name","stock","year"
-  from "characters"
-  join (
-    select "id" as "number","stock" from "assets"
-    ) as stock
-    on "characters"."id" = stock."number"
-]], {})
+```sql
+select "id","name","stock","year"
+from "characters"
+join (
+select "id" as "number","stock" from "assets"
+) as stock
+on "characters"."id" = stock."number" ;
 ```
 
 Вывод в консоль:
@@ -477,19 +521,17 @@ pico.sql([[
 автоматические имена колонок в результирующей таблице на собственные.
 Пример:
 
-```
-pico.sql([[
-  select
-    "id" as "id1",
-    "name" as "name1",
-    "stock" as "stock1",
-    "year" as "year1"
-  from "characters"
-  join (
-    select "id" as "number", "stock" from "assets"
-  ) as stock
-  on "characters"."id" = stock."number"
-]], {})
+```sql
+select
+  "id" as "id1",
+  "name" as "name1",
+  "stock" as "stock1",
+  "year" as "year1"
+from "characters"
+join (
+  select "id" as "number", "stock" from "assets"
+) as stock
+on "characters"."id" = stock."number" ;
 ```
 
 Вывод в консоль:
@@ -556,8 +598,8 @@ SELECT-запросах. С ее помощью можно преобразов
 В обычном виде значения столбца `score` имеют дробную часть и определены
 в схеме данных типом `decimal`:
 
-```
-pico.sql([[select "score" from "scoring"]], {})
+```sql
+select "score" from "scoring" ;
 ---
   'metadata': [
    {'name': 'score', 'type': 'decimal'}],
@@ -570,8 +612,8 @@ pico.sql([[select "score" from "scoring"]], {})
 ```
 Преобразуем эти числа в `int`:
 
-```
-pico.sql([[select cast("score" as int) from "scoring"]], {})
+```sql
+select cast("score" as int) from "scoring" ;
 ---
   'metadata': [
   {'name': 'COL_1', 'type': 'integer'}],
@@ -611,8 +653,8 @@ pico.sql([[select cast("score" as int) from "scoring"]], {})
 
 ### Пример использования {: #tuple-limit-example }
 
-```
-pico.sql([[select * from "characters" option(sql_vdbe_max_steps = 55, vtable_max_rows = 10)]], {})
+```sql
+select * from "characters" option(sql_vdbe_max_steps = 55, vtable_max_rows = 10) ;
 ---
 - metadata:
   - {'name': 'id', 'type': 'integer'}
@@ -665,20 +707,27 @@ pico.sql([[select * from "characters" option(sql_vdbe_max_steps = 55, vtable_max
 
 ### Примеры запросов {: #insert-examples }
 Запись строки данных в таблицу командой `INSERT` возможна как в обычном
-виде, так и в параметризированном. Пример параметризированной вставки
-строки значений в таблицу:
+виде, так и в параметризированном (потребуется
+[переключить](#switching_langs) язык консоли на Lua). Пример
+параметризированной вставки строки значений в таблицу:
 
-```
+```lua
 pico.sql([[insert into "assets" ("id", "name", "stock") values (?, ?, ?)]], {1, "Woody", 2561})
 ```
 
 Если вставляемая строка точно содержит значения для всех столбцов, то их
-можно явно не указывать:
+можно явно не указывать.
 
-```
+Пример для Lua:
+```lua
 pico.sql([[insert into "assets" values (1, 'Woody', 2561)]], {})
 ```
 
+Пример для SQL:
+```sql
+insert into "assets" values (1, 'Woody', 2561) ;
+```
+
 Параметризация значений при `INSERT` влияет на тип данных при выполнении
 запроса. Так, в обычном виде дробные числа конвертируются в числа с
 фиксированной запятой (например, `values(2.5)` в `decimal 2.5`). В
@@ -690,7 +739,7 @@ pico.sql([[insert into "assets" values (1, 'Woody', 2561)]], {})
 кеширование подзапроса, поэтому его тоже имеет смысл параметризировать,
 чтобы выиграть в скорости при выполнении последующих подобных запросов:
 
-```
+```lua
 pico.sql([[insert into "assets" select * from "assets2" where "id2" = ?]], {11}
 ```
 
@@ -707,8 +756,8 @@ pico.sql([[insert into "assets" select * from "assets2" where "id2" = ?]], {11}
 В некоторых случаях вставка строки может вернуть ошибку, например, при
 попытке вставить строку с уже существующим индексом:
 
-```
-pico.sql([[insert into "characters" ("id", "name", "year") values (10, 'Duke Caboom', 2019)]], {})
+```sql
+insert into "characters" ("id", "name", "year") values (10, 'Duke Caboom', 2019) ;
 ---
 - null
 - 'sbroad: Lua error (IR dispatch): LuaError(ExecutionError("sbroad: failed to create
@@ -749,12 +798,10 @@ pico.sql([[insert into "characters" ("id", "name", "year") values (10, 'Duke Cab
 Если параметр `on conflict` не указан, то по умолчанию используется
 поведение `do fail`.
 
-```
-pico.sql([[
-  insert into "characters" ("id", "name", "year")
-  values (10, 'Duke Caboom', 2019)
-  on conflict do nothing
-]], {})
+```sql
+insert into "characters" ("id", "name", "year")
+values (10, 'Duke Caboom', 2019)
+on conflict do nothing ;
 ---
 - row_count: 0
 ...
@@ -762,12 +809,10 @@ pico.sql([[
 
 Для успешной вставки (замены строки) следует использовать вариант `do replace`:
 
-```
-pico.sql([[
-  insert into "characters" ("id", "name", "year")
-  values (10, 'Duke Caboom', 2019)
-  on conflict do replace
-]], {})
+```sql
+insert into "characters" ("id", "name", "year")
+values (10, 'Duke Caboom', 2019)
+on conflict do replace ;
 ---
 - row_count: 1
 ...
@@ -844,13 +889,13 @@ pico.sql([[update "characters" set "name" = "item" from (select "id" as i, "name
 Простой запрос удаляет все данные из указанной таблицы:
 
 ```sql
-picodata> pico.sql([[delete from "characters"]], {})
+delete from "characters" ;
 ```
 
 Запрос с условием позволяет удалить только нужные строки:
 
 ```sql
-picodata> pico.sql([[delete from "characters" where "id" = 1]], {})
+delete from "characters" where "id" = 1 ;
 ```
 
 В обоих случаях в выводе в консоль будет указано количество удаленных
@@ -885,8 +930,8 @@ nothing`.
 ### Простые запросы {: #basic-explain }
 Для начала рассмотрим план простого запроса на получение данных одного столбца таблицы:
 
-```
-pico.sql([[explain select "score" from "scoring"]], {})
+```sql
+explain select "score" from "scoring" ;
 ```
 
 Вывод в консоль:
@@ -906,8 +951,8 @@ pico.sql([[explain select "score" from "scoring"]], {})
 
 Если в запросе есть условие (`where`), то в план добавляется узел `selection`:
 
-```
-pico.sql([[explain select "score" from "scoring" where "score" > 70]], {})
+```sql
+explain select "score" from "scoring" where "score" > 70 ;
 ```
 
 Вывод в консоль:
@@ -929,15 +974,13 @@ pico.sql([[explain select "score" from "scoring" where "score" > 70]], {})
 ### Запрос с несколькими проекциями {: #multi-projection-explain }
 Пример построения проекции из более сложного запроса:
 
-```
-pico.sql([[
-  explain select
-    "id","name"
-  from "characters"
-  except select
-    "id","name" from "assets"
-  where "stock" > 1000
-]], {})
+```sql
+explain select
+  "id","name"
+from "characters"
+except select
+  "id","name" from "assets"
+where "stock" > 1000 ;
 ```
 
 Вывод в консоль:
@@ -1008,8 +1051,8 @@ pico.sql([[
 
 **Локальная вставка** характерна для `INSERT` с передачей строки значений:
 
-```
-pico.sql([[explain insert into "assets" values (1, 'Woody', 2561)]], {})
+```sql
+explain insert into "assets" values (1, 'Woody', 2561) ;
 ```
 
 Вывод в консоль:
@@ -1029,8 +1072,8 @@ pico.sql([[explain insert into "assets" values (1, 'Woody', 2561)]], {})
 требуется (см. [подробнее](broadcasted_sql.md#data-distribution)).
 Примером может служить удаление данных из таблицы:
 
-```
-picodata> pico.sql([[explain delete from "characters" where "id" = 1]], {})
+```sql
+explain delete from "characters" where "id" = 1 ;
 ```
 
 Вывод в консоль:
@@ -1075,8 +1118,8 @@ picodata> pico.sql([[explain update "characters" set "year" = 2010]], {})
 Пример `INSERT` со вставкой из читающего запроса другой таблицы, у
 которой отличается ключ шардирования:
 
-```
-pico.sql([[explain insert into "assets" select * from "assets3" where "id3" = 1]], {})
+```sql
+explain insert into "assets" select * from "assets3" where "id3" = 1 ;
 ```
 
 Вывод в консоль:
@@ -1093,16 +1136,14 @@ pico.sql([[explain insert into "assets" select * from "assets3" where "id3" = 1]
 
 Пример `JOIN` двух таблиц с разными ключами шардирования:
 
-```
-pico.sql([[
-  explain select
-   "id","name"
-  from "assets"
-  join (
-    select "id3","name3" from "assets3"
-    ) as "new_assets"
-  on "assets"."id" = "new_assets"."id3"
-]], {})
+```sql
+explain select
+  "id","name"
+from "assets"
+join (
+  select "id3","name3" from "assets3"
+  ) as "new_assets"
+on "assets"."id" = "new_assets"."id3" ;
 ```
 
 Вывод в консоль:
@@ -1153,16 +1194,14 @@ picodata> pico.sql([[explain update "characters" set "name" = 'Etch', "year" = 2
 
 Пример `JOIN` с соединениям не по колонкам шардирования для обеих таблиц:
 
-```
-pico.sql([[
-  explain select
-   "id","name","stock","year"
-  from "characters"
-  join (
-    select "id" as "number","stock" from "assets"
-  ) as stock
-  on "characters"."id" = stock."number"
-]], {})
+```sql
+explain select
+  "id","name","stock","year"
+from "characters"
+join (
+  select "id" as "number","stock" from "assets"
+) as stock
+on "characters"."id" = stock."number" ;
 ```
 
 Вывод в консоль:
@@ -1192,8 +1231,8 @@ pico.sql([[
 
 Пример выполнения агрегатной функции.
 
-```
-pico.sql([[explain select count("id") from "characters"]], {})
+```sql
+explain select count("id") from "characters" ;
 ```
 
 Вывод в консоль: