Основы SQL. Усложненная выборка(специальные условия)
В предыдущей статье(ссылка на статью) по SQL я рассказывал об основных запросах языка. Там был рассмотрен и запрос SELECT. Правда статья носила лишь ознакомительный характер, и я не стал зацикливаться на каком-то из запросов. Эту статью пишу исключительно по запросу SELECT, т.к. он бесспорно является самым распространенным из всех.
Статья посвящена специальным операторам в условии запроса (IN, BETWEEN, LIKE и IS NULL).
Пойдем по порядку:
Оператор IN. Он предназначен для задания нескольких вариантов условия запроса. В принципе, у этого оператора есть альтернатива – OR, но код с этим оператором получается очень громоздким, что затрудняет его дальнейшее редактирование. Чтобы вы прочувствовали разницу, дам один и тот же запрос, выполненный обеими способами.
(вот пример с использованием OR)
SELECT * FROM main WHERE cat_id = ‘1’ OR cat_id = ‘2’
(а вот с использованием оператора IN)
SELECT * FROM main WHERE cat_id IN (‘1’, ‘2’)
Оба запроса выводят строки из таблицы main, значения cat_id которых равны 1 или 2. Оба запроса буду корректно работать, но 2-й запрос имеет более короткую запись (а т.к. вариантов может быть значительно больше, чем 2, преимущества очевидны…)
Оператор BETWEEN. Предназначен для задания нескольких вариантов условия запроса, но отличается от IN тем, что задаются не конкретные значения выборки, а диапазон (минимальное и максимальное значение). Имеет примерно следующий формат записи:
SELECT * FROM main WHERE cat_id BETWEEN 1 AND 5
Вышеуказанный код осуществит выборку всех строк таблицы main, значения cat_id которых находятся в диапазоне между 1 и 5 ВКЛЮЧИТЕЛЬНО. Т.е. значения которых равны 1, 2, 3, 4, 5.
По этому оператору хочется отметить еще и то, что сам по себе, SQL не поддерживает функцию невключения граничных значений оператора. В случае, если возникает необходимость убрать из выборки строки с максимальным и минимальным значением параметра BETWEEN, как правило, пользуются следующим методом:
SELECT * FROM main WHERE (cat_id BETWEEN 1 AND 5) AND NOT cat_id IN (1, 5)
Думаю принцип действия этого запроса не вызовет трудностей… Детально разбирать его не стану, в силу того, что необходимость его использования возникает довольно редко, в большинстве случаев достаточно лишь сузить диапазон оператора BETWEEN.
Оператор LIKE. Предназначен для поиска строк по заданным условиям. Оператор работает только с полями, имеющими тип CHAR либо VARCHAR. В качестве условия используется 2 символа – шаблона (wildсards):
- символ подчёркивания ( _ ) – замещает любой одиночный символ.
- знак процента (%) замещает последовательность любого количества символов (включая символы нуля)
Примером запроса может служить такой:
SELECT FROM main WHERE name LIKE ‘G%d’
Этот запрос вернет все поля таблицы, значения name которых начинаются на G, и заканчиваются на d.
Оператор IS NULL. Предназначен для «выявления» пустых значений.
Запрос может носить следующий вид:
SELECT * FROM main WHERE cat_id IS NULL
Запрос выведет все строки таблицы, в которых не указан параметр cat_id.
Вот и все по данной статье, надеюсь помог чем-то…
Удачи в Ваших начинаниях!




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