SQL с нуля: от базовых таблиц до сложных аналитических запросов

Практический курс для начинающих, который поможет освоить SQL через реальные примеры и упражнения. Вы пройдете путь от создания баз данных до написания сложных аналитических запросов с использованием JOIN, агрегатных функций и подзапросов.

1. Основы SQL и работа с данными

Основы SQL и работа с данными

Представьте, что вы владеете небольшим книжным магазином. Пока у вас сто книг и десять покупателей в месяц, вы можете вести учет в обычной тетради. Когда книг становится тысяча, вы переходите на таблицы Excel. Но что делать, если у вас миллионы товаров, сотни тысяч пользователей, и каждую секунду происходят сотни покупок? Тетрадь порвется, а Excel зависнет навсегда. Здесь на сцену выходят базы данных.

В современном мире данные — это новая нефть. Каждое ваше действие в интернете: лайк в социальной сети, покупка билета на самолет, перевод денег через банковское приложение — всё это записывается, хранится и обрабатывается. Чтобы управлять этими колоссальными объемами информации, был создан специальный инструмент — язык SQL.

Что такое база данных и SQL

База данных (БД) — это организованная структура для хранения информации. Если говорить просто, это огромный электронный архив, где всё лежит на своих местах, и любую запись можно найти за доли секунды.

Сами по себе базы данных не умеют принимать команды. Для управления ими существуют специальные программы — Системы управления базами данных (СУБД). Самые популярные из них: PostgreSQL, MySQL, Oracle, Microsoft SQL Server.

Чтобы человек мог «общаться» с СУБД и просить её сохранить или выдать нужную информацию, нужен язык-посредник. Этим языком является SQL (Structured Query Language — язык структурированных запросов).

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

Как устроены реляционные базы данных

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

Каждая таблица состоит из двух основных элементов:

  • Поле (столбец) — задает структуру. Оно определяет, какие именно данные мы храним. Например: имя, возраст, адрес электронной почты.
  • Запись (строка) — это сами данные. Одна строка описывает один конкретный объект: одного пользователя, один заказ или один товар.
  • !Схема устройства реляционной базы данных

    Главное отличие базы данных от обычной таблицы в Excel — это жесткая структура и типизация. В Excel вы можете в столбец «Возраст» случайно написать слово «Двадцать», и программа это проглотит. База данных такого не допустит. Она требует, чтобы для каждого столбца был заранее определен тип данных.

    Основные типы данных в SQL

    При создании таблицы вы обязаны указать, что именно будет храниться в каждом столбце. Вот самые базовые типы данных, с которыми вы будете работать чаще всего:

    | Тип данных | Описание | Пример использования | | :--- | :--- | :--- | | INT | Целые числа без дробной части | Возраст, количество товаров, ID пользователя (, , ) | | DECIMAL | Дробные числа с фиксированной точностью | Деньги, цены, вес (, ) | | VARCHAR(n) | Текст переменной длины, где — максимальное количество символов | Имя, фамилия, email, короткий комментарий | | DATE | Дата в формате Год-Месяц-День | Дата рождения, дата оформления заказа (2023-10-25) | | BOOLEAN | Логический тип (Истина или Ложь) | Статус подписки (активна/неактивна), оплачен ли заказ |

    Создание таблицы: команда CREATE TABLE

    Любая работа с данными начинается с создания места для их хранения. В SQL для этого используется команда CREATE TABLE.

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

    Разберем этот запрос по частям:

  • CREATE TABLE employees — команда СУБД создать новую таблицу с именем employees.
  • Внутри скобок мы перечисляем столбцы и их типы данных.
  • DECIMAL(10, 2) означает, что число может состоять максимум из 10 цифр, 2 из которых находятся после запятой.
  • PRIMARY KEY (Первичный ключ) — это важнейшая концепция реляционных баз данных. Это столбец (или набор столбцов), который уникально идентифицирует каждую строку в таблице. Двух сотрудников с одинаковым id существовать не может. Это как номер паспорта или ИНН в реальной жизни.
  • Добавление данных: команда INSERT INTO

    Таблица создана, но она пуста. Чтобы добавить в нее новые строки, используется команда INSERT INTO.

    Сначала мы указываем имя таблицы и в скобках перечисляем столбцы, в которые хотим вставить данные. Затем пишем ключевое слово VALUES (значения) и в скобках передаем сами данные в том же порядке. Обратите внимание: текстовые значения и даты всегда берутся в одинарные кавычки, а числа пишутся без них.

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

    Изменение данных: команда UPDATE

    Данные редко остаются неизменными. Сотрудники получают повышения, меняют фамилии или переходят на другие должности. Для изменения существующих записей применяется команда UPDATE.

    Предположим, Анна Смирнова получила повышение до «Старшего аналитика», и её зарплата выросла до 110 000.

    Здесь кроется самая большая опасность для новичков. Ключевое слово WHERE (где) задает условие: мы говорим базе данных обновить информацию только для того сотрудника, чей id равен 2.

    Если вы забудете написать WHERE и выполните запрос UPDATE employees SET salary = 110000.00;, база данных послушно выполнит команду и установит зарплату 110 000 абсолютно всем сотрудникам в таблице. В реальной компании такая ошибка может стоить миллионы.

    !Интерактивный симулятор SQL-запросов

    Удаление данных: команда DELETE

    Если сотрудник уволился, мы можем удалить его запись из базы данных с помощью команды DELETE.

    Правило здесь точно такое же, как и с UPDATE: условие WHERE критически важно. Запрос DELETE FROM employees; без условия безвозвратно удалит все строки из таблицы.

    Важно различать удаление строк и удаление самой таблицы. DELETE очищает таблицу от данных, но сама структура (столбцы) остается в базе. Если же вы хотите полностью уничтожить таблицу вместе со всеми данными и структурой, используется команда DROP TABLE employees;.

    Фундамент заложен

    Мы разобрали четыре базовые операции, которые в программировании часто называют аббревиатурой CRUD:

  • Create (Создание) — INSERT
  • Read (Чтение) — SELECT (эту команду мы подробно разберем в следующей статье)
  • Update (Обновление) — UPDATE
  • Delete (Удаление) — DELETE
  • Любое приложение в мире, от простого списка задач на телефоне до глобальной социальной сети, в своей основе опирается на эти четыре действия. Вы научились создавать структуру для хранения информации, наполнять её, изменять и очищать. Это прочный фундамент, на котором будет строиться вся ваша дальнейшая работа с аналитическими запросами.