Пользователь открывает консоль базы данных и понимает, что не может вытащить конкретную группу товаров или посчитать общую сумму заказа. Это происходит из-за того, что синтаксис фильтрации кажется запутанным, а обилие символов сбивает с толку. В этом гайде разберем операторы SQL: полный список и примеры применения пошагово. Вы узнаете, как правильно комбинировать условия и получите готовые шаблоны запросов для любой СУБД.
Обзор категорий инструментов для работы с данными
Все операторы в SQL делятся на несколько функциональных групп. Арифметические инструменты позволяют производить расчеты прямо в запросе. Операторы сравнения нужны для точного отбора строк, а логические — для объединения нескольких условий в одно. Специальные операторы упрощают поиск по шаблонам или проверку на пустоту. Операторы множеств работают с результатами целых запросов, объединяя или вычитая их друг из друга.
| Символ/Ключевое слово | Название | Назначение | Пример |
|---|---|---|---|
| + , — , * , / | Арифметические | Математические вычисления | price * 1.2 |
| = , <> , < , > | Сравнения | Сопоставление значений | age > 18 |
| AND, OR, NOT | Логические | Связка условий | status='active' AND age > 20 |
| LIKE, IN, BETWEEN | Специальные | Сложная фильтрация | name LIKE 'А%' |
| UNION, EXCEPT | Множеств | Работа с наборами строк | SELECT... UNION SELECT... |
Вычисления с помощью арифметики
Математические операторы используются в блоке SELECT для создания вычисляемых полей. Сложение (+), вычитание (-), умножение (×) и деление (/) работают с числовыми типами данных. Также существует оператор остатка от деления (%), который полезен, например, для определения четности ID строки.
Я часто использовал умножение для автоматического пересчета цен с учетом налогов прямо в отчете, чтобы не менять данные в самой таблице. Это позволяет сохранить исходные значения и получить актуальный результат в одном запросе.
Точная фильтрация через операторы сравнения
Эти инструменты применяются в блоке WHERE для отсеивания ненужных записей. Они сравнивают значение в колонке с конкретным числом, строкой или датой. Оператор «не равно» может записываться как != или <>.
- Откройте редактор запросов и напишите команду
SELECTс перечнем нужных полей. - Добавьте ключевое слово
WHEREпосле указания таблицы. - Выберите подходящий оператор (например,
>=для поиска значений «больше или равно»). - Укажите эталонное значение, с которым будет идти сравнение.
- Запустите запрос для получения отфильтрованного списка.
Сложные условия и логические связки
Когда одного критерия недостаточно, в дело вступают логические операторы. AND требует выполнения всех условий одновременно, OR — хотя бы одного, а NOT инвертирует результат (оставляет всё, что не подходит под условие).
Важно помнить про приоритет: NOT выполняется первым, затем AND, и в конце OR. Чтобы изменить этот порядок или сгруппировать условия, я всегда использую круглые скобки. Это гарантирует, что база данных правильно поймет логику запроса.
Поиск по шаблонам и диапазонам с помощью специальных операторов
Для задач, где стандартного равенства недостаточно, применяются специальные инструменты:
BETWEEN— ищет значения в закрытом диапазоне (включая границы).IN— проверяет, входит ли значение в заданный список.LIKE— ищет строку по шаблону (использует%для любой последовательности символов и_для одного знака).IS NULL— находит пустые ячейки, так как обычное= NULLне работает.
Процесс поиска по шаблону через LIKE выглядит так:
- В блоке
WHEREукажите название колонки и операторLIKE. - Напишите строку в одинарных кавычках.
- Поставьте знак
%в конце, если нужно найти все слова, начинающиеся с определенной буквы. - Поставьте знак
%в начале и конце, чтобы найти вхождение подстроки в любом месте. - Выполните запрос.
Объединение результатов через операторы множеств
Эти операторы позволяют складывать результаты двух и более разных запросов SELECT в одну таблицу. Главное требование: количество и типы колонок в обоих запросах должны совпадать.
Разница между UNION и UNION ALL заключается в обработке дубликатов. Первый удаляет повторяющиеся строки, что требует дополнительных ресурсов системы, а второй просто склеивает данные «как есть».
| Оператор | Действие | Требования к колонкам |
|---|---|---|
| UNION | Объединяет результаты, удаляя дубликаты | Одинаковый тип и порядок |
| INTERSECT | Оставляет только общие строки для обоих запросов | Одинаковый тип и порядок |
| EXCEPT / MINUS | Вычитает строки второго запроса из первого | Одинаковый тип и порядок |
Ускорение работы в редакторах и советы по коду
Для эффективного написания запросов я рекомендую использовать горячие клавиши популярных инструментов. Это экономит время при рутине.
| Действие | DBeaver | pgAdmin | SSMS |
|---|---|---|---|
| Выполнить запрос | Ctrl + Enter | F5 | F5 / Ctrl + E |
| Закомментировать строку | Ctrl + / | Ctrl + / | Ctrl + K, Ctrl + C |
| Форматировать код | Ctrl + Shift + F | Ctrl + Shift + F | Ctrl + K, Ctrl + D |
Чтобы код был читаемым и оптимизированным, следуйте этим правилам:
- Пишите ключевые слова (SELECT, FROM, WHERE) заглавными буквами.
- Используйте отступы для каждого нового блока команды.
- Добавляйте комментарии через
--для сложных условий. - Избегайте использования
SELECT *, перечисляйте только нужные поля. - Сначала ставьте самые строгие фильтры в
WHEREдля ускорения выборки.
Типичные промахи при написании кода
Даже опытные разработчики иногда допускают ошибки в синтаксисе. Я заметил, что чаще всего новички пытаются использовать двойное равенство == из языков программирования, хотя в SQL используется только одно =.
Основные ошибки:
- Сравнение значения с
NULLчерез оператор=(нужно использоватьIS NULL). - Попытка сложить число с текстовой строкой без приведения типов.
- Отсутствие скобок при смешивании
ANDиOR, что ведет к неверной фильтрации. - Использование двойных кавычек для строковых значений (в SQL стандарт — одинарные кавычки).
- Забытая запятая между полями в блоке
SELECT.
Особенности реализации в разных СУБД
Хотя SQL стандартизирован, разные системы имеют свои диалекты. Например, в MySQL оператор «не равно» чаще пишут как !=, в то время как в Oracle или MS SQL Server чаще встречается <>.
| Оператор | MySQL | PostgreSQL | MS SQL Server |
|---|---|---|---|
| Не равно | != / <> |
!= / <> |
<> |
| Объединение с вычитанием | Не поддерживается (через JOIN) | EXCEPT |
EXCEPT |
| Поиск по шаблону | LIKE |
LIKE / ~ (RegEx) |
LIKE |
Ответы на частые вопросы
Чем отличается IN от OR?
IN — это сокращенная запись множества условий OR для одной и той же колонки. Запрос id IN (1, 2, 3) работает так же, как id=1 OR id=2 OR id=3, но выглядит чище.
Как работает LIKE с кириллицей?
Он работает стандартно, но результат зависит от кодировки базы и настроек сортировки (Collation). Если поиск не находит буквы, проверьте, установлена ли кодировка UTF-8.
Какой оператор работает быстрее?
Обычно IN работает быстрее, чем длинная цепочка OR. Однако самые быстрые — это простые сравнения = или > по индексированным колонкам.
Как объединить 3 и более таблицы?
Для этого используются операторы JOIN. Вы последовательно присоединяете таблицы: сначала первую к второй, затем результат к третьей, указывая общие ключи связи.
Можно ли использовать арифметику в блоке WHERE?
Да, можно. Например, WHERE price * 1.2 < 1000. Но помните, что такие вычисления могут замедлить запрос, так как база не сможет использовать индекс по колонке price.


