рубрики: 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 мне кажется приведенный выше словарик поможет сэкономить значительное количество нервов.
Добавить комментарий