Урок 1.2 — Первый SELECT, выборка столбцов и LIMIT

Модуль 1. Введение в базы данных

Урок 1.2

Длительность 20 минут

Сложность ⭐ Начальный

Что будем делать сегодня

На прошлом уроке мы установили DB Browser, открыли учебную базу narodny.db и выполнили один-единственный запрос: SELECT * FROM stores;. Сегодня — настоящий старт SQL. К концу урока вы будете уверенно писать запросы: «дай мне только эти колонки», «дай только первые 10 строк», «дай уникальные значения».

Это маленький набор инструментов, но именно с него начинается 80% всей работы аналитика данных.

Анатомия SQL-запроса

Любой запрос к базе данных строится по чёткой структуре. Самая простая форма выглядит так:

SELECT <что>
FROM <откуда>;

Прочитайте вслух: «выбери такие-то колонки из такой-то таблицы». Точка с запятой ; в конце — это конец запроса. В DB Browser её можно опускать (если запрос один), но привыкайте ставить — это профессиональная привычка.

SQL не различает регистр ключевых слов. Можно писать SELECT, select, SeLeCt — база поймёт всё. Но по соглашению ключевые слова пишут ЗАГЛАВНЫМИ. Это делает запросы читаемыми. Имена таблиц и колонок — обычно строчными.

SELECT * — выбрать всё

Звёздочка * означает «все колонки». Самый простой запрос:

SELECT * FROM products;

Этот запрос вернёт все 80 товаров со всеми колонками: product_id, name, category_id, price, unit, in_stock.

SELECT * — анти-паттерн в продакшне! На учёбе это ОК. Но в реальной работе:

  • Вы качаете все колонки, даже те, что не нужны → лишний трафик и время
  • Если в таблицу добавят новую колонку — ваш отчёт может «сломаться»
  • Код становится непонятным для коллег

Правило хорошего тона: всегда явно указывать нужные колонки.

Выбираем конкретные колонки

Чтобы получить только нужные колонки, перечислите их через запятую:

SELECT name, price
FROM products;

Этот запрос вернёт только два столбца — название и цену каждого товара. Это и быстрее, и понятнее.

Порядок колонок имеет значение

Колонки в результате будут в том порядке, в котором вы их перечислили. Сравните:

SELECT name, price FROM products;       -- сначала name, потом price
SELECT price, name FROM products;       -- сначала price, потом name

Псевдонимы (алиасы) — переименование колонок

Колонки в базе названы технически: customer_id, opened_date. В отчёте для директора эти названия некрасиво смотрятся. Используйте AS чтобы переименовать колонки в результате:

SELECT
    name AS "Товар",
    price AS "Цена, сом"
FROM products;

В результате вы увидите колонки уже с понятными русскими названиями. Это критически важно, когда вы готовите данные для выгрузки в Excel или Power BI.

Когда использовать кавычки: если в имени-псевдониме есть пробелы, кириллица или специальные символы — оборачивайте в двойные кавычки"...". Если только латиница без пробелов — кавычки не обязательны: SELECT name AS product_name FROM products;

Слово AS можно опускать — результат тот же:

SELECT name "Товар", price "Цена" FROM products;

Но с AS запрос читается легче, поэтому начинающим лучше всегда писать его явно.

LIMIT — ограничиваем количество строк

В таблице sale_items у нас почти 10 000 строк. Если случайно выполнить SELECT * FROM sale_items; — DB Browser попытается загрузить всё и может зависнуть на пару секунд. На реальной работе с миллионами строк это превращается в проблему.

Решение — оператор LIMIT:

SELECT * FROM sale_items LIMIT 10;

Этот запрос вернёт только первые 10 строк. Идеально, чтобы быстро посмотреть, что вообще лежит в таблице.

Привычка профессионала: когда вы видите незнакомую таблицу, первый запрос всегда выглядит как SELECT * FROM имя_таблицы LIMIT 5; — быстро узнать, какие там колонки и какие там примерно данные. Запомните этот приём — он сэкономит вам часы.

DISTINCT — только уникальные значения

Представьте: маркетолог сети «Народный» спрашивает у вас: «в каких городах у нас работают магазины?». В таблице stores 12 строк, но городов может быть меньше — некоторые города имеют по несколько магазинов (в Бишкеке их сразу 5).

Можно так:

SELECT city FROM stores;

…но вы получите 12 строк, и Бишкек повторится 5 раз. Чтобы получить только уникальные значения, используйте DISTINCT:

SELECT DISTINCT city FROM stores;

Результат — 7 строк, по одной на каждый уникальный город:

city
Бишкек
Ош
Каракол
Чолпон-Ата
Токмок
Жалал-Абад
Кант

Кейс «Народный»: новый сотрудник отдела маркетинга должен составить карту присутствия сети по регионам. Вместо того чтобы скроллить таблицу stores и вручную выписывать города, он пишет SELECT DISTINCT city FROM stores; и получает готовый список за полсекунды.

DISTINCT по нескольким колонкам

DISTINCT работает по комбинации всех перечисленных колонок:

SELECT DISTINCT city, name
FROM stores;

Здесь уникальной считается пара (city, name). Так как у каждого магазина уникальное имя, мы получим все 12 строк.

Комментарии в SQL

Хороший аналитик документирует свой код. В SQL есть два вида комментариев:

-- Это однострочный комментарий
SELECT name, price FROM products;  -- комментарий в конце строки

/* Это многострочный
   комментарий, удобный
   для длинных пояснений */
SELECT * FROM stores;

База данных полностью игнорирует комментарии — они только для людей, которые будут читать ваш код (включая вас самих через месяц).

Собираем всё вместе

Реальный запрос аналитика часто использует все эти приёмы сразу:

-- Запрос: первые 5 товаров с понятными названиями колонок
SELECT
    name AS "Название товара",
    price AS "Цена, сом",
    unit AS "Единица измерения"
FROM products
LIMIT 5;

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

Резюме урока

Конструкция Что делает
SELECT * Выбрать все колонки (только для исследования!)
SELECT col1, col2 Выбрать конкретные колонки
... AS "новое_имя" Переименовать колонку в результате
LIMIT N Вернуть только первые N строк
DISTINCT Только уникальные значения
-- или /* */ Комментарии

Что дальше

Сейчас наши запросы возвращают все строки таблицы. Но что если нужны только товары дороже 500 сом? Только клиенты из Бишкека? Только продажи за апрель? Это работа оператора WHERE — главного инструмента фильтрации в SQL. Им мы займёмся в Уроке 1.3.

А пока — переходите к практическим заданиям. Они закрепят сегодняшний материал.

🚀 К практике! 5 заданий + квиз ниже.