SQL-запросы на каждый день

SQL-запросы на каждый день

В рамках данной заметки планируется достичь одной-единственной цели: собрать в одном месте ряд основных команд, которые приходится использовать практически каждый день. Поэтому, верно, стоит извиниться заранее, так как выбор запросов вполне может показаться очень странным при взгляде со стороны.

Все запросы ниже рассматриваются на примере таблиц битрикса. Так уж сложилось у автора.

Выборка: 

Запросы на выборку (если не углубляться в теорию) выглядят примерно следующим образом:

SELECT DISTINCT b_iblock_element.NAME FROM b_iblock_element, b_catalog_product WHERE b_iblock_element.ID = b_catalog_product.ID AND b_iblock_element.ACTIVE = ‘Y’ AND b_catalog_product.QUANTITY > 0 AND b_iblock_element.DETAIL_TEXT = »;

 

Где DISTINCT — это удаление дубликатов, а скелет запроса выглядит так:

Select … From … Where … ;

При желании можно задать псевдоним для таблицы (в рамках запроса) или столбца (при выводе) через AS. Например, …FROM b_iblock_element AS s1…;

Вставка:

Insert — это всегда добавление строк в существующую таблицу. То есть, если ранее записи в таблице не существовало — её можно вставить таким образом:

 

Обновление:

В том случае, если требуется обновить существующее значение, то используется UPDATE, который в простейшем варианте выглядит так:

Данная команда обновит все значения CODE в таблице b_iblock_element.

Однако, в рамках битрикса, зачастую приходится объединять таблицы между собой для обновления данных. Например, так:

LEFT JOIN — объединяет таблицы

REPLACE — в данном случае удаляет пробелы из входной строки

CONCAT_WS — объединяет аргументы в строку через разделитель

В упрощенном варианте запросы выглядят так:

UPDATE … LEFT JOIN … ON … WHERE … ;

Удаление:

DELETE просто удаляет данные из таблицы. В упрощенном виде он выглядит так:

A TRUNCATE полностью очищает таблицу и (в MySQL) сбрасывает значения авто_инкремента. Выглядит так:

CONCAT_WS и GROUP_CONCAT:

CONCAT_WS позволяет объединить строки (или какие-либо иные значения) через разделитель. Например:

Результатом выполнения запроса будет фраза вида «Отзыв о товаре Таком-то», то есть строки объединены и разделены через пробел.

GROUP_CONCAT — позволяет объединить некую группу записей по определенному основанию. Например, может потребоваться вывести список аксессуаров к определенной модели (модель одна, а аксессуаров много). Задачи такого плана можно решить с помощью функции GROUP_CONCAT.

Синтаксис этого запроса выглядит следующим образом:

То есть все аксессуары будут объединены в одну строку и разделены через запятую (параметр SEPARATOR). В принципе всё, теоретическое основание данной функции достаточно обширно, поэтому его касаться не будем.

LEFT JOIN в UPDATE:

LEFT JOIN позволяет объединять таблицы. Существуют еще несколько JOIN’ов (О различии их хорошая картинка ниже), но чаще всего используется левое объединение. Запрос с использование LEFT JOIN выглядит, чаще всего, так:

Чем различаются разные JOIN’ы?

Достаточно хорошая картинка, поясняющая различие между разными Join’ами:

В принципе, на этом все наиболее часто используемые запросы заканчиваются. В целом, неплохой получился «справочник».