SQL с нуля

SQL с нуля на сквозном примере интернет-магазина: SELECT и фильтры, JOIN, агрегаты, оконные функции, NULL, безопасное изменение данных и знакомство с индексами.

За каждым приложением стоит база данных, и умение задать ей вопрос напрямую — навык, который отличает специалиста от пользователя. Этот цикл — для тех, кто не написал ещё ни одного запроса: без предварительных требований, на одном сквозном примере интернет-магазина.

Двенадцать статей идут по порядку, каждая опирается на предыдущие:

  1. Что такое база данных и таблицы — СУБД, строки и столбцы, первичный ключ и связи, как осмотреть незнакомую базу.
  2. SELECT: выбрать, отфильтровать, отсортировать — WHERE, LIKE, IN, ORDER BY, LIMIT, DISTINCT.
  3. JOIN: собрать данные из нескольких таблиц — INNER и LEFT, три таблицы и self-join, потерянные и задвоенные строки.
  4. Агрегаты: COUNT, GROUP BY и HAVING — ответы на вопросы «сколько» и «на какую сумму», деньги в numeric.
  5. NULL и типы данных — где спотыкаются все, от IS NULL до NULLS LAST.
  6. Подзапросы — IN, EXISTS, производные таблицы, WITH, UNION и EXCEPT.
  7. Оконные функции — ROW_NUMBER и PARTITION BY: считать, не схлопывая строки.
  8. Даты и время — момент и дата, отрезки дней, группировка по дням.
  9. Строки — склейка, LIKE и ILIKE, регулярные выражения, string_agg, CASE.
  10. INSERT, UPDATE, DELETE и транзакции — как менять данные и не устроить катастрофу, гонка за остатком.
  11. Схема базы, ключи и представления — DDL, суррогатные ключи, представления, ACID.
  12. Почему запрос медленный: индексы на пальцах — полный перебор, составной индекс, EXPLAIN ANALYZE, триграммы.

Цикл входит в программу «QA-инженер» отдельной фазой, но самодостаточен: SQL одинаково нужен тестировщику, аналитику и начинающему разработчику. Продолжение для тех, кому мало, — раздел PostgreSQL.

Нужна карта всех тем по SQL одной страницей? Собрали карту тем по SQL с разбором каждой.