← Назад к вопросам

Что такое операторы SQL?

1.7 Middle🔥 161 комментариев
#Базы данных и SQL

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Операторы SQL (SQL Operators)

Операторы SQL — это специальные команды и символы, используемые в запросах SQL для выполнения различных операций над данными в базе данных. Это фундаментальная часть языка SQL, которая позволяет фильтровать, сравнивать, вычислять и трансформировать данные.

Классификация операторов SQL

1. Операторы сравнения (Comparison Operators)

Используются для сравнения значений:

= (равно)

  • SELECT * FROM users WHERE age = 30
  • Возвращает все записи, где возраст равен 30

!= или <> (не равно)

  • SELECT * FROM products WHERE category != 'electronics'
  • Возвращает все товары, которые не являются электроникой

> (больше), < (меньше)

  • SELECT * FROM orders WHERE total > 1000
  • Возвращает заказы на сумму более 1000

>= (больше или равно), <= (меньше или равно)

  • SELECT * FROM employees WHERE salary >= 50000
  • Возвращает сотрудников с зарплатой от 50000

2. Логические операторы (Logical Operators)

Сочетают несколько условий:

AND — И (логическое И)

  • SELECT * FROM users WHERE age > 18 AND country = 'Russia'
  • Возвращает пользователей старше 18 ИЗ России

OR — ИЛИ (логическое ИЛИ)

  • SELECT * FROM products WHERE category = 'books' OR category = 'magazines'
  • Возвращает книги ИЛИ журналы

NOT — НЕ (отрицание)

  • SELECT * FROM orders WHERE NOT status = 'cancelled'
  • Возвращает все заказы, кроме отменённых

3. Арифметические операторы (Arithmetic Operators)

Выполняют математические операции:

+ (сложение)

  • SELECT price + tax AS total FROM items
  • Складывает цену и налог

- (вычитание)

  • SELECT salary - expenses FROM budget
  • Вычитает расходы из зарплаты

*** (умножение)**

  • SELECT quantity * price AS amount FROM orders
  • Умножает количество на цену

/ (деление)

  • SELECT total / quantity AS unit_price FROM orders
  • Делит общую сумму на количество

% (остаток от деления)

  • SELECT value % 10 FROM numbers
  • Вычисляет остаток от деления

4. Операторы для работы со строками (String Operators)

LIKE — поиск по шаблону

  • SELECT * FROM users WHERE name LIKE 'John%'
  • Возвращает имена, начинающиеся на "John"
  • % — любое количество символов
  • _ — один символ

CONCAT — объединение строк

  • SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users
  • Объединяет имя и фамилию

IN — проверка на принадлежность к списку

  • SELECT * FROM users WHERE country IN ('Russia', 'Ukraine', 'Belarus')
  • Возвращает пользователей из трех стран

BETWEEN — проверка диапазона

  • SELECT * FROM orders WHERE date BETWEEN '2024-01-01' AND '2024-12-31'
  • Возвращает заказы за весь 2024 год

IS NULL — проверка на NULL

  • SELECT * FROM users WHERE email IS NULL
  • Возвращает пользователей без почты

IS NOT NULL — проверка на не NULL

  • SELECT * FROM products WHERE description IS NOT NULL
  • Возвращает товары с описанием

5. Битовые операторы (Bitwise Operators)

Работают с битами значений:

& (побитовое И)

  • SELECT * FROM permissions WHERE flags & 4 = 4
  • Проверяет, установлен ли определенный бит

| (побитовое ИЛИ)

  • SELECT flags | 8 FROM permissions
  • Устанавливает определенный бит

^ (побитовое исключающее ИЛИ)

  • SELECT flags ^ 16 FROM permissions
  • Инвертирует определенный бит

6. Операторы для NULL значений

<=> (безопасное сравнение)

  • SELECT * FROM users WHERE email <=> NULL
  • Сравнивает значения, учитывая NULL

ISNULL()

  • SELECT ISNULL(phone, 'No phone') FROM users
  • Заменяет NULL на значение по умолчанию

COALESCE()

  • SELECT COALESCE(mobile, phone, 'No number') FROM users
  • Возвращает первое не-NULL значение

7. Операторы для работы с диапазонами

BETWEEN AND — включающий диапазон

  • SELECT * FROM sales WHERE amount BETWEEN 100 AND 1000
  • Возвращает продажи от 100 до 1000 (включительно)

NOT BETWEEN AND

  • SELECT * FROM prices WHERE price NOT BETWEEN 10 AND 100
  • Исключает значения в диапазоне

8. Операторы в подзапросах (Subquery Operators)

EXISTS — проверка существования

  • SELECT * FROM users WHERE EXISTS (SELECT 1 FROM orders WHERE orders.user_id = users.id)
  • Возвращает пользователей, которые делали заказы

IN — проверка на наличие в наборе

  • SELECT * FROM users WHERE id IN (SELECT user_id FROM orders)
  • Возвращает пользователей, у которых есть заказы

ANY/ALL — сравнение с любым/всеми значениями

  • SELECT * FROM products WHERE price > ANY (SELECT price FROM competitors)
  • Возвращает товары, которые дешевле хотя бы одного конкурента

9. Операторы для работы со значениями CASE

CASE WHEN THEN

SELECT 
  name,
  CASE 
    WHEN age < 18 THEN 'Minor'
    WHEN age >= 18 AND age < 65 THEN 'Adult'
    ELSE 'Senior'
  END AS age_group
FROM users

Примеры сложных операторов

Комбинирование операторов:

SELECT * FROM orders 
WHERE 
  (status = 'pending' OR status = 'processing')
  AND amount BETWEEN 100 AND 5000
  AND customer_name LIKE 'J%'
  AND created_date BETWEEN '2024-01-01' AND '2024-03-31'

Использование функций агрегирования:

SELECT 
  department,
  COUNT(*) as employee_count,
  AVG(salary) as avg_salary,
  MAX(salary) as max_salary
FROM employees
WHERE salary > 50000
GROUP BY department
HAVING COUNT(*) > 5
ORDER BY avg_salary DESC

Приоритет операторов

  1. Скобки ()
  2. Умножение *, деление /, остаток %
  3. Сложение +, вычитание -
  4. Сравнение =, !=, <, >, <=, >=, LIKE, IN, BETWEEN
  5. NOT
  6. AND
  7. OR

Лучшие практики

1. Используй скобки для ясности:

  • SELECT * FROM orders WHERE (status = 'paid' AND amount > 1000) OR (status = 'pending' AND amount > 5000)

2. Используй BETWEEN вместо двух условий:

  • Правильно: WHERE amount BETWEEN 100 AND 1000
  • Неправильно: WHERE amount >= 100 AND amount <= 1000

3. Используй IN для списков:

  • Правильно: WHERE status IN ('active', 'pending')
  • Неправильно: WHERE status = 'active' OR status = 'pending'

4. Осторожно с NULL:

  • Помни, что NULL != NULL
  • Используй IS NULL вместо = NULL

5. Индексы для операторов:

  • Операторы сравнения =, <, >, <=, >= хорошо работают с индексами
  • LIKE и IN могут быть медленнее без правильных индексов

6. Производительность:

  • BETWEEN часто быстрее чем два условия с AND
  • EXISTS может быть быстрее IN для больших наборов
  • Избегай функций в WHERE (замедляют поиск)

Операторы SQL — это мощный инструмент для точного выбора и трансформации данных. Владение ими необходимо для написания эффективных и корректных SQL запросов.

Что такое операторы SQL? | PrepBro