Баннер мобильный (3) Пройти тест

Оператор SELECT в SQL: как выбрать данные из базы

Разбираем синтаксис на примерах

Разбор

22 января 2026

Поделиться

Скопировано
Оператор SELECT в SQL: как выбрать данные из базы

Содержание

    Представьте, что вы запросили из базы данных список всех клиентов, заказов или товаров. SQL вернул вам результат — но строки идут в случайном порядке, а нужные поля перемешаны с ненужными. Как быстро найти самого активного клиента? Как посчитать средний чек? Или просто отобразить данные в удобном виде?

    На помощь приходит оператор SELECT в SQL — основной инструмент для выборки данных из таблиц. Он не меняет содержимое базы, а только извлекает то, что вам нужно. Именно с него начинается работа с данными: без SELECT вы не сможете ни проанализировать продажи, ни синхронизировать маркетплейсы, ни построить отчет.

    Что такое оператор SELECT и зачем он нужен

    SELECT — это команда SQL, которая позволяет выбрать данные из одной или нескольких таблиц. Это не просто «запрос», а полноценный механизм анализа: вы указываете, какие именно столбцы нужны, какие строки подходят под условия и в каком порядке их показывать.

    Он относится к группе DML (Data Manipulation Language), но, в отличие от INSERT или UPDATE, не изменяет данные — только читает их из таблицы. Поэтому его можно использовать без риска повредить информацию.

    Как работает SELECT FROM: синтаксис и примеры

    Самый простой запрос выглядит так:

    SELECT first_name, last_name FROM StaffMembers;

    Этот запрос вернет имена и фамилии всех сотрудников.

    Как выбрать все данные из таблицы SQL

    Если нужно получить все столбцы, используем звездочку *:

    SELECT * FROM StaffMembers;

    Важно: не делайте так в продакшене! SELECT * замедляет запрос, особенно если в таблице много полей или она большая. Лучше явно указывать нужные колонки.

    Уникальные значения с DISTINCT

    Чтобы убрать дубли, добавьте DISTINCT:

    SELECT DISTINCT department FROM StaffMembers;

    Результат: список отделов без повторений.

    Фильтрация данных: WHERE и логические операторы

    Без фильтрации SELECT возвращает все — даже то, что вам не нужно. Чтобы сузить выборку, используйте WHERE.

    Простые условия

    SELECT * FROM StaffMembers WHERE salary > 60000;

    Поддерживаются операторы:

    • = — равно
    • <> или != — не равно
    • >, <, >=, <= — сравнение
    • BETWEEN — диапазон
    • IN — принадлежность списку
    • LIKE — поиск по шаблону (% — любые символы, _ — один символ)

    Пример с LIKE:

    SELECT * FROM StaffMembers WHERE first_name LIKE '%на%';

    Найдет имена, содержащие «на»: Марина, Светлана и т.д.

    Комбинирование условий: AND, OR, NOT

    SELECT * FROM StaffMembers WHERE (department = 'Production' OR department = 'Advertising')  AND experience_years > 5;

    Здесь:

    • AND — оба условия должны быть истинны;
    • OR — достаточно одного;
    • NOT — исключает записи (WHERE NOT department = ‘HR’).

    Совет: всегда используйте скобки при смешивании AND и OR, чтобы избежать ошибок логики.

    Сортировка и агрегация

    ORDER BY — упорядочить результаты

    SELECT * FROM StaffMembers ORDER BY last_name ASC; -- по алфавиту

    По умолчанию — ASC (возрастание). Для обратного порядка — DESC.

    Агрегатные функции

    Часто нужно не просто выбрать данные, а посчитать что-то:

    SELECT COUNT(*) AS total_employees FROM StaffMembers; SELECT AVG(salary) AS avg_salary FROM StaffMembers;

    Популярные функции:

    • COUNT() — количество строк
    • SUM() — сумма
    • AVG() — среднее
    • MIN(), MAX() — минимум и максимум

    Группировка: GROUP BY и HAVING

    Когда нужно агрегировать по категориям, применяем GROUP BY:

    SELECT department, COUNT(*) AS employee_count FROM StaffMembers GROUP BY department;

    Результат: сколько сотрудников в каждом отделе.

    HAVING — фильтрация после группировки

    WHERE работает до группировки, HAVING — после:

    SELECT department, COUNT(*) AS employee_count FROM StaffMembers GROUP BY department HAVING COUNT(*) > 3;

    Покажет только те отделы, где больше трех человек.

    Можно ли использовать HAVING без GROUP BY? Нет. HAVING требует предварительной группировки.

    Объединение таблиц через JOIN

    Данные редко хранятся в одной таблице. Например, клиенты — в clients, заказы — в orders. Чтобы связать их, используйте JOIN.

    Основные типы JOIN

    Тип
    Что делает
    INNER JOIN
    Только совпадения в обеих таблицах
    LEFT JOIN
    Все из левой + совпадения из правой (или NULL)
    RIGHT JOIN
    Все из правой + совпадения из левой
    FULL JOIN
    Все записи из обеих таблиц

    Пример:

    SELECT c.name, o.order_date FROM clients c LEFT JOIN orders o ON c.client_id = o.client_id;

    Покажет всех клиентов, даже если у них нет заказов.

    Практический пример: от простого к сложному

    Допустим, у нас есть таблицы employees и departments.

    Шаг 1. Простой SELECT

    SELECT name, salary FROM employees;

    Шаг 2. Добавляем фильтр

    SELECT name, salary FROM employees WHERE salary > 50000;

    Шаг 3. Группируем и сортируем

    SELECT d.title, AVG(e.salary) AS avg_salary FROM employees e JOIN departments d ON e.dept_id = d.id GROUP BY d.title HAVING AVG(e.salary) > 55000 ORDER BY avg_salary DESC;

    Этот запрос:

    • объединяет две таблицы,
    • группирует по отделам,
    • считает среднюю зарплату,
    • оставляет только «дорогие» отделы,
    • сортирует по убыванию.

    Типичные ошибки новичков

    • Использовать SELECT * в реальных проектах
      → Всегда указывайте нужные поля.
    • Путать WHERE и HAVING
      → WHERE — до группировки, HAVING — после.
    • Забывать про индексы
      → Запросы с WHERE и JOIN работают быстрее, если поля проиндексированы.
    • Писать вложенные SELECT без необходимости
      → Иногда проще использовать JOIN или CTE (WITH).

    Коротко об операторе SELECT

    • SELECT — это основной оператор для выборки данных в SQL.
    • Он позволяет получать конкретные столбцы, фильтровать через WHERE, сортировать через ORDER BY, группировать через GROUP BY и объединять таблицы через JOIN.
    • SELECT ничего не удаляет и не изменяет — он только читает.
    • Понимание его синтаксиса и возможностей — первый шаг к работе с аналитикой, ETL, отчетами и интеграциями (например, с Ozon или Wildberries).

    Освоив оператор SELECT в SQL, вы сможете извлекать любую информацию из базы — от простого списка до сложного бизнес-отчета, — задавая точные условия выборки.

    Разбор

    Поделиться

    Скопировано
    0 комментариев
    Комментарии