Профессия — 1С

Рукопашный бой Карташ

Категории

Сравнение языков 1С и SQL

рубрики: SQL | Дата: 19 Декабрь, 2015

Не секрет, что язык запросов 1С по структуре очень похож на язык запросов SQL. И человек, который писал запросы 1С, относительно легко сможет начать писать запросы SQL. Конкретнее здесь речь пойдет о Transact-SQL от Microsoft.




Представляю вашему вниманию небольшую таблицу в которой наиболее часто используемые выражения языка запросов 1С сопоставлены с выражениями T-SQL.
Надеюсь, что она поможет одинэсникам, которые никогда не сталкивались с написанием запросов SQL сделать первые шаги в этом нелегком деле.

Выражение 1C Выражение SQL
ВЫБРАТЬ SELECT
ВЫБРАТЬ ПЕРВЫЕ SELECT TOP
ВЫБРАТЬ РАЗЛИЧНЫЕ SELECT DISTINCT
ИЗ FROM
ГДЕ WHERE
УПОРЯДОЧИТЬ ПО ORDER BY
СГРУППИРОВАТЬ ПО GROUP BY
Соединения таблиц
ЛЕВОЕ СОЕДИНЕНИЕ ПО LEFT JOIN ON
ПРАВОЕ СОЕДИНЕНИЕ ПО RIGHT JOIN ON
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПО INNER JOIN ON
Объединение таблиц
ОБЪЕДИНИТЬ UNION
ОБЪЕДИНИТЬ ВСЕ UNION ALL
Агрегатные функции
СУММА SUM
МИНИМУМ MIN
МАКСИМУМ MAX
СРЕДНЕЕ AVG
КОЛИЧЕСТВО COUNT
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ) COUNT(DISTINCT)
Логические операторы
И AND
ИЛИ OR
НЕ NOT
ПОДОБНО LIKE
В IN
МЕЖДУ BETWEEN
ЕСТЬ NULL IS NULL
ЕСТЬNULL() ISNULL()
Функции работы с датами
ГОД YEAR
МЕСЯЦ MONTH
ДЕНЬ DAY
РАЗНОСТЬДАТ DATEDIFF
ДАТАВРЕМЯ DATETIME
Прочие функции
ВЫБОР
   КОГДА ТОГДА
   ИНАЧЕ
КОНЕЦ

CASE
   WHEN THEN
   ELSE
END

А теперь для наглядности проиллюстрируем это небольшим примером. Напишем для одной и той же таблицы запрос на языке 1С, а затем на языке SQL. А затем сравним эти запросы.
Допустим что на SQL сервере Есть таблица Test_1 с полями ID и Value




Чтобы получить в 1С таблицу с таким же именем и полями, напишем код в консоли запросов по созданию временной таблицы с соответствующими псевдонимами:


ВЫБРАТЬ
	"000000001" КАК ID,
	1 КАК Value
ПОМЕСТИТЬ Test_1

Теперь сделаем пакетный запрос, где во втором пакете сделаем какую нибудь выборку. Например вот так:


ВЫБРАТЬ
	"000000001" КАК ID,
	1 КАК Value
ПОМЕСТИТЬ Test_1
;
///////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	Test_1.ID КАК ID,
	МИНИМУМ(Test_1.Value) КАК Value
ИЗ
	Test_1 КАК Test_1
ГДЕ
	Test_1.ID = "000000001"
СГРУППИРОВАТЬ ПО
	Test_1.ID
УПОРЯДОЧИТЬ ПО
	ID

Теперь сделаем то же самое на языке SQL. Поскольку на SQL сервере таблица присутствует физически, то временную можно не создавать.


SELECT
	Test_1.ID AS ID,
	MIN(Test_1.Value) AS Value
FROM
	Test_1 AS Test_1
WHERE
	Test_1.ID = '000000001'
GROUP BY
	Test_1.ID
ORDER BY
	ID

А теперь сравним тексты запросов 1С и SQL:

Запрос 1C Запрос SQL
ВЫБРАТЬ
	Test_1.ID КАК ID,
	МИНИМУМ(Test_1.Value) КАК Value
ИЗ
	Test_1 КАК Test_1
ГДЕ
	Test_1.ID = "000000001"
СГРУППИРОВАТЬ ПО
	Test_1.ID
УПОРЯДОЧИТЬ ПО
	ID
SELECT
	Test_1.ID AS ID,
	MIN(Test_1.Value) AS Value
FROM
	Test_1 AS Test_1
WHERE
	Test_1.ID = '000000001'
GROUP BY
	Test_1.ID
ORDER BY
	ID

Как видим запрос SQL можно получить простой заменой выражений 1С на выражения SQL.

Конечно далеко не все так просто. Язык SQL обладает множеством возможностей, которые отсутствуют в языке запросов 1С. В частности позволяет не только обращаться к данным в таблицах, но и изменять эти данные. А также создавать и изменять сами эти таблицы и даже создавать и удалять базы данных. Но для начального освоения SQL мне кажется приведенный выше словарик поможет сэкономить значительное количесво нервов.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

   

2018г. Профессия — 1С. Обмен опытом по программированию в 1С