Перейти до основного вмісту
eLearner.app

Інтерактивний курс

Курс SQL

Вивчайте SQL з нуля англійською мовою за допомогою справжнього Postgres, запущеного у вашому браузері.

01 · Модуль 1 — Базовий SELECT

4 уроків

Основи: читання даних із таблиці та їх фільтрація.

  1. 1.1Введення в SQLЩо таке SQL, для чого він використовується і як виглядає база даних.~5 min
  2. 1.2ВИБРАТИ … ЗНайпростіший запит: читання рядків з таблиці.~10 min
  3. 1.3Фільтрування за допомогою WHEREВибір лише тих рядків, які задовольняють умову.~10 min
  4. 1.4Сортування за допомогою ORDER BYУпорядкування результатів за зростанням чи спаданням.~8 min

02 · Модуль 2 — Більш потужний SELECT

4 уроків

Обмеження, видалення дублікатів, перейменування та підрахунок: інструменти, які ви використовуєте щодня.

  1. 2.1Обмеження за допомогою LIMITПовернення лише перших N рядків, наприклад, для створення таблиць лідерів.~6 min
  2. 2.2Унікальні значення з DISTINCTВидалення дублікатів із результату SELECT.~6 min
  3. 2.3Перейменування за допомогою ASНадання більш читабельних імен стовпцям і виразам у результаті.~6 min
  4. 2.4Підрахунок і підсумовування: COUNT, AVG, MAXАгрегатні функції: отримання одного числа з багатьох рядків.~8 min

03 · Модуль 3 — JOIN і GROUP BY

4 уроків

Об’єднання кількох таблиць і створення звітів за групами: суть кожного реального запиту.

  1. 3.1Об'єднання двох таблиць: INNER JOINОб’єднання рядків з різних таблиць за їх зв’язками.~12 min
  2. 3.2Зберігаючи все зліва: LEFT JOINВключаючи рядки, які не збігаються в іншій таблиці.~10 min
  3. 3.3Групування за допомогою GROUP BYОбчислення сукупності для групи, наприклад для відділу.~10 min
  4. 3.4Групи фільтрації: HAVINGЗберігаються лише групи, які задовольняють умову сукупності.~8 min

04 · Модуль 4 — Практичний SQL

4 уроків

Інструменти, які роблять різницю в реальній роботі: списки, діапазони, NULL та умовна логіка.

  1. 4.1Списки та діапазони: IN і BETWEENКомпактні фільтри для «одного з цього» і «між А і Б».~8 min
  2. 4.2Обробка NULL: IS NULL і COALESCEРозпізнавання та робота з відсутніми цінностями без сюрпризів.~10 min
  3. 4.3Умовна логіка: CASE WHENПеретворення значень у категорії безпосередньо в SELECT.~10 min
  4. 4.4Запит всередині іншого: підзапитиВикористання результату SELECT всередині іншого SELECT.~12 min

05 · Модуль 5 — Advanced JOIN

4 уроків

Багатотабличні об’єднання JOIN, самооб’єднання, OUTER, CROSS та операції набору: об’єднання даних як професіонал.

  1. 5.1JOIN на трьох або більше таблицяхОбхід ланцюжка зв’язків: замовлення → клієнти → продукти в одному запиті.~12 min
  2. 5.2Self-JOIN: таблиця сама з собоюІєрархії та внутрішні зв’язки: читання таблиці з двома ролями (дочірня та батьківська).~10 min
  3. 5.3OUTER JOIN: пошук «прогалин»Використання LEFT/RIGHT/FULL OUTER JOIN для пошуку рядків без відповідності.~10 min
  4. 5.4UNION, INTERSECT, EXCEPT (і CROSS JOIN)Об’єднання результатів у вигляді наборів: об’єднання, перетин, різниця та декартовий добуток.~12 min

06 · Модуль 6 — Вбудовані функції

4 уроків

Перетворюйте та маніпулюйте даними за допомогою власних функцій PostgreSQL: рядки, дати, числа, перетворення типів.

  1. 6.1Рядкові функціїLOWER, UPPER, LENGTH, конкатенація, ПІДРЯДОК, TRIM, REPLACE, LIKE та ILIKE.~12 min
  2. 6.2Функції позначки дати та часуEXTRACT, DATE_TRUNC, інтервали та різниці дат.~12 min
  3. 6.3Числові функціїROUND, CEIL, FLOOR, ABS, MOD і ціле чи десяткове ділення.~10 min
  4. 6.4Перетворення CAST і типуПеретворення між типами за допомогою `::type` і `CAST(... AS ...)`.~10 min

07 · Модуль 7 — Розширена аналітика

4 уроків

Багатокрокові запити (CTE), рейтинги та поточні підсумки (віконні функції), необмежені ієрархії (З РЕКУРСИВОЮ).

  1. 7.1CTE: багатокрокові запити з WITHРозбиття складного запиту на іменовані кроки для зручності читання та повторного використання.~12 min
  2. 7.2Функції вікна: рейтинги та підрахунки по групахROW_NUMBER, RANK, DENSE_RANK з OVER(PARTITION BY …) для рейтингу в групі.~14 min
  3. 7.3LAG, LEAD і поточні підсумкиПорівняння кожного рядка з попереднім/наступним та обчислення кумулятивних сум.~12 min
  4. 7.4Рекурсивні CTE: ієрархії довільної глибиниWITH RECURSIVE для обходу ієрархій, таких як категорії.~14 min

08 · Модуль 8 — Запис і зміна даних

4 уроків

INSERT, UPDATE, DELETE, CREATE TABLE з обмеженнями, транзакції: закриття циклу записами.

  1. 8.1Вставлення даних: INSERTОдно- та багаторядкова пропозиція INSERT, RETURNING, явний вибір стовпців.~10 min
  2. 8.2Оновлення та видалення: UPDATE і DELETEВибіркові зміни з WHERE і чому забуте WHERE є катастрофою.~10 min
  3. 8.3Створення таблиць і обмежень: DDLСТВОРИТИ ТАБЛИЦЮ з PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, CHECK і DEFAULT.~12 min
  4. 8.4Транзакції: все або нічогоBEGIN, COMMIT, ROLLBACK: робить групу операцій атомарною.~10 min

09 · Модуль 9 — Структури даних і DDL

4 уроків

Створення та зміна таблиць, розширені обмеження, складні типи та представлення.

  1. 9.1Розширені типи даних і ENUMЧислові типи, TEXT проти VARCHAR, BOOLEAN, UUID і спеціальні типи ENUM.~10 min
  2. 9.2Кілька обмежень і обмеження на рівні таблиціКомпозитні обмеження UNIQUE та PRIMARY KEY, розширена перевірка та зовнішні ключі (ON DELETE CASCADE).~12 min
  3. 9.3Зміна структури: ALTER TABLEДодавання, зміна та видалення стовпців або обмежень з існуючих таблиць.~10 min
  4. 9.4Перегляди та абстракція данихСтворення ПРЕДСТАВЛЕНЬ для спрощення складних запитів і МАТЕРІАЛІЗОВАНИХ ПРЕДСТАВЛЕНЬ для продуктивності.~12 min

10 · Оптимізація та індекси

4 уроків

Мистецтво швидкого виконання запитів: індекси, плани виконання та оптимізація бази даних.

  1. 10.1Індекси та B-дереваСтворіть індекси, щоб значно прискорити пошукові запити у великих таблицях.~15 min
  2. 10.2ПОЯСНІТЬ і ПРОАНАЛІЗУЙТЕНавчіться читати плани виконання бази даних, щоб діагностувати вузькі місця.~15 min
  3. 10.3Складені та часткові індексиВикористовуйте індекси для кількох стовпців одночасно або лише для певного фрагмента даних.~12 min
  4. 10.4Проблема N+1Сумно відома проблема продуктивності ORM і рідні методи SQL для її подолання в одному запиті.~12 min

11 · Транзакції та паралельність

4 уроків

Безпечно керуйте одночасними змінами даних: транзакції ACID, блокування та рівні ізоляції.

  1. 11.1Транзакції ACID (BEGIN/COMMIT)Зберігайте дані узгодженими з BEGIN, COMMIT і ROLLBACK, групуючи запити в один блок, невидимий для інших.~15 min
  2. 11.2Умови перегонівГраничні сценарії: що відбувається, коли два співробітники паралельної бази даних діють на один кошик користувача.~10 min
  3. 11.3Блокування та ВИБРАТИ ДЛЯ ОНОВЛЕННЯАктивно блокувати рядки під час читання, змушуючи інші мутаційні потоки чекати своєї черги.~15 min
  4. 11.4Рівні ізоляціїДосягніть своїх можливостей, запровадивши Serializable, або перейдіть до Read Committed для небезпечної, але швидкої роботи.~12 min

12 · Функції та тригери

4 уроків

Автоматизуйте бізнес-логіку всередині бази даних: пишіть багаторазові функції та реагуйте на події за допомогою тригерів.

  1. 12.1UDF і базовий SQLСтворіть власні функції, визначені користувачем, щоб інкапсулювати складні обчислення та повторно використовувати їх як макроси в кожному запиті.~15 min
  2. 12.2Розширена логіка з PL/pgSQLНадайте своїм функціям надзвичайні можливості: змінні, гілки if-else і цикли в чистому процедурному стилі всередині бази даних.~15 min
  3. 12.3Знайомство з тригерамиВизначте спеціальні функції, які можуть миттєво перевіряти OUTGOING (OLD) або INCOMING (NEW) запис.~15 min
  4. 12.4Практичні тригери та аудитАвтоматизуйте безпеку: автоматично оновлюйте дату "updated_at" і чарівним чином архівуйте видалені рядки для відповідності.~12 min

13 · Функції вікна

4 уроків

Розширений аналіз даних без згортання рядків: знайдіть функції OVER(), PARTITION BY та аналітичні функції.

  1. 13.1Вступ і речення OVERВиконуйте сукупні обчислення (наприклад, SUM або AVG), зберігаючи вихідні окремі рядки.~15 min
  2. 13.2Групування за допомогою PARTITION BYСтворюйте логічні групи (вікна) всередині даних, до яких можна застосовувати функції, без використання GROUP BY.~15 min
  3. 13.3Рейтинги: ROW_NUMBER, RANK і DENSE_RANKПризначте послідовні номери рядків і ранги результатам, правильно обробляючи зв’язки.~15 min
  4. 13.4Зміни: LAG і LEADОтримайте доступ до значень із попереднього або наступного рядка безпосередньо з поточного рядка, щоб обчислити дельти та варіації.~12 min

14 · CTE та ієрархічні запити (З)

3 уроків

Спростіть величезні запити за допомогою загальних табличних виразів і переходьте до необмежених дерев даних за допомогою рекурсивних CTE.

  1. 14.1Введення в CTE (З)Замініть нечитабельні вкладені підзапити на чистий процедурний формат, оголосивши тимчасові «віртуальні таблиці».~12 min
  2. 14.2Множинні та ланцюгові КТРПриборкайте складність, розділивши обробку на кілька послідовних кроків в одному операторі WITH.~15 min
  3. 14.3Рекурсивні CTE: дані у формі дереваПереміщуйтеся без обмежень ієрархіями менеджерів і категоріями «батьки-дочірні» шляхом виклику CTE з самого себе.~18 min

15 · PostgreSQL JSON і NoSQL

2 уроків

Використовуйте реляційну потужність у поєднанні з гнучкою підтримкою документів через JSON і JSONB без використання зовнішніх баз даних.

  1. 15.1Інтеграція JSON і JSONBЗберігайте складні документи в стовпці та запитуйте їх поля за допомогою операторів зі стрілками.~15 min
  2. 15.2Функції агрегації JSONСтворюйте файли JSON або масиви об’єктів на льоту в власному SQL за допомогою json_build_object() і json_agg().~15 min