SQL с нуля: первый запрос, фильтр и сортировка

Я бы начинал SQL не с толстого учебника, а с очень бытовой задачи. Есть заказы: кто купил, что купил, на какую сумму и оплачен ли заказ. Нужно за минуту ответить на вопрос: какие оплаченные заказы дороже 5000 рублей?

В Excel это можно сделать фильтрами. Но если данные лежат в базе сайта, CRM, интернет-магазина или аналитической системы, руками их уже не покрутишь. Там нужен SQL — язык, которым мы задаем вопросы таблицам

В этом уроке мы не будем пытаться выучить весь SQL. Цель проще: создать маленькую таблицу, положить в нее несколько строк и написать первые запросы через SELECT, WHERE и ORDER BY. После этого SQL перестает быть абстрактным словом из вакансий и становится понятным инструментом

Что получится в конце

К концу урока у тебя будет рабочая мини-таблица orders, несколько строк с заказами и запрос, который выбирает только нужные данные:

SELECT customer, product, amount
FROM orders
WHERE status = 'paid' AND amount > 5000
ORDER BY amount DESC;

Этот запрос можно будет изменить под себя: искать неоплаченные заказы, сортировать от дешевых к дорогим, выводить только клиента и сумму или добавлять другие условия

Что такое SQL простыми словами

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

Например, таблица заказов может выглядеть так:

1АннаКурс по SQL7900paid
2ИгорьКонсультация4500paid

SQL нужен не для красоты, а для вопросов:

  • покажи все заказы;
  • покажи только оплаченные;
  • покажи покупки дороже 5000;
  • отсортируй по сумме;
  • посчитай выручку;
  • найди клиентов, у которых еще нет заказов.

Новичку важно не перепутать две вещи. SQL — это язык. А PostgreSQL, MySQL, SQL Server, SQLite — это разные базы данных, которые этот язык понимают. Синтаксис в основе похожий, но детали могут отличаться

Где запустить SQL без установки

Для первого занятия не нужно ставить SQL Server или MySQL. Достаточно любого SQL online editor, где можно выполнить запрос в браузере. Хороший тренажер должен давать три вещи:

  • поле для SQL-кода;
  • кнопку запуска;
  • таблицу с результатом или понятную ошибку.

Если сервис просит выбрать диалект, для старта бери SQLite или PostgreSQL. В этом уроке код написан максимально просто, поэтому в большинстве online-редакторов он выполнится без переделок

Создаем таблицу заказов

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

CREATE TABLE orders (
  id INTEGER PRIMARY KEY,
  customer TEXT,
  product TEXT,
  amount INTEGER,
  status TEXT
);

Что здесь произошло:

  • CREATE TABLE orders создает таблицу с именем orders;
  • id — номер строки;
  • customer — имя клиента;
  • product — что купили;
  • amount — сумма заказа;
  • status — статус оплаты.

Теперь добавим несколько заказов:

INSERT INTO orders (id, customer, product, amount, status) VALUES
(1, 'Анна', 'Курс по SQL', 7900, 'paid'),
(2, 'Игорь', 'Консультация', 4500, 'paid'),
(3, 'Мария', 'Подписка', 1200, 'pending'),
(4, 'Олег', 'Настройка сайта', 15000, 'paid'),
(5, 'Светлана', 'Шаблон лендинга', 3900, 'cancelled');

Текстовые значения пишем в одинарных кавычках: 'Анна', 'paid', 'Курс по SQL'. Это одна из первых мелочей, на которой новички часто спотыкаются

Первый SELECT

Самый простой запрос:

SELECT *
FROM orders;

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

SELECT customer, product, amount
FROM orders;

Теперь база вернет только клиента, товар и сумму. Уже полезнее: мы не тащим в результат все подряд

Фильтр через WHERE

Теперь выберем только оплаченные заказы:

SELECT customer, product, amount, status
FROM orders
WHERE status = 'paid';

WHERE отвечает за условие. База проходит по строкам и возвращает только те, где status равен 'paid'

Добавим условие по сумме:

SELECT customer, product, amount, status
FROM orders
WHERE amount > 5000;

Здесь мы просим показать заказы дороже 5000. Обрати внимание: число 5000 пишется без кавычек, потому что это число, а не текст

Условия можно объединять:

SELECT customer, product, amount, status
FROM orders
WHERE status = 'paid' AND amount > 5000;

Теперь запрос отвечает на исходный вопрос: какие оплаченные заказы дороже 5000 рублей

Сортировка через ORDER BY

Без сортировки база может вернуть строки в порядке, который кажется случайным. Если порядок важен, его нужно попросить явно:

SELECT customer, product, amount
FROM orders
WHERE status = 'paid'
ORDER BY amount DESC;

ORDER BY amount DESC сортирует по сумме от большей к меньшей. Если нужно наоборот:

SELECT customer, product, amount
FROM orders
WHERE status = 'paid'
ORDER BY amount ASC;

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

Собираем рабочий запрос

Вот версия, которую уже можно считать маленьким рабочим инструментом:

SELECT customer, product, amount
FROM orders
WHERE status = 'paid' AND amount > 5000
ORDER BY amount DESC;

Прочитаем его по-русски:

  • взять столбцы customer, product, amount;
  • из таблицы orders;
  • оставить только оплаченные заказы дороже 5000;
  • отсортировать по сумме от большей к меньшей.

Когда SQL начинает читаться вот так, обучение резко становится проще. Ты уже не зубришь команды, а переводишь обычный вопрос к данным в формальный запрос

Мини-задание

Попробуй изменить запросы самостоятельно

  1. Выведи все заказы со статусом pending.
  2. Покажи только customer и amount.
  3. Найди все заказы дешевле 5000.
  4. Отсортируй все заказы от дешевых к дорогим.
  5. Выведи оплаченные заказы дороже 3000.

Возможное решение последнего задания:

SELECT customer, product, amount
FROM orders
WHERE status = 'paid' AND amount > 3000
ORDER BY amount ASC;

Частые ошибки новичка

Неверное имя столбца

Если написать cost вместо amount, база не угадает, что ты имел в виду:

SELECT customer, cost
FROM orders;

Ошибка обычно будет похожа на no such column или invalid column name. Проверяем не на глаз, а по структуре таблицы: какие столбцы действительно были созданы

Кавычки вокруг текста

Так правильно:

WHERE status = 'paid'

Так часто ломается:

WHERE status = paid

Без кавычек база решит, что paid — это имя столбца или переменной. А у нас это текстовое значение

Условие написано не там

Порядок частей в простом запросе такой:

SELECT ...
FROM ...
WHERE ...
ORDER BY ...;

Если поставить ORDER BY перед WHERE, запрос не выполнится. SQL довольно строгий к порядку ключевых слов

Звездочка остается навсегда

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

Когда этого уже недостаточно

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

Еще одна граница — подсчеты. Если нужно не просто вывести заказы, а посчитать выручку по каждому статусу, понадобится GROUP BY

Это нормально. SQL лучше учить слоями: сначала выборка, потом фильтр, потом сортировка, потом соединения и группировки

Ответы на эти вопросы могут быть для вас полезными

SQL сложно учить с нуля?

Не сложнее, чем научиться пользоваться формулами в Excel. Сложность начинается не в командах, а в привычке думать таблицами: строки, столбцы, условия, связи. Первую пользу можно получить уже после SELECT, WHERE и ORDER BY

Где тренироваться SQL онлайн?

Подойдет любой SQL online editor с поддержкой SQLite или PostgreSQL. Для первых уроков важно, чтобы можно было создать таблицу, добавить данные и увидеть результат запроса

Какой SQL учить первым?

Начинай с базового синтаксиса: SELECT, WHERE, ORDER BY, JOIN, GROUP BY. Не надо сразу выбирать "идеальный" диалект. Потом можно углубиться в PostgreSQL, MySQL или SQL Server под конкретные задачи

Чем SQL отличается от Excel?

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

Нужен ли SQL программисту?

Если программист делает сайты, бэкенд, CRM, аналитику, автоматизацию или внутренние инструменты, SQL почти наверняка пригодится. Даже простые запросы помогают понимать, что реально происходит с данными приложения

Что почитать дальше по SQL

Если вы собираете тему по шагам, рядом лучше открыть:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x