Інтерактивний курс
Курс SQL
Вивчайте SQL з нуля англійською мовою за допомогою справжнього Postgres, запущеного у вашому браузері.
01 · Модуль 1 — Базовий SELECT
Основи: читання даних із таблиці та їх фільтрація.
- 1.1Введення в SQLЩо таке SQL, для чого він використовується і як виглядає база даних.~5 min
- 1.2ВИБРАТИ … ЗНайпростіший запит: читання рядків з таблиці.~10 min
- 1.3Фільтрування за допомогою WHEREВибір лише тих рядків, які задовольняють умову.~10 min
- 1.4Сортування за допомогою ORDER BYУпорядкування результатів за зростанням чи спаданням.~8 min
02 · Модуль 2 — Більш потужний SELECT
Обмеження, видалення дублікатів, перейменування та підрахунок: інструменти, які ви використовуєте щодня.
- 2.1Обмеження за допомогою LIMITПовернення лише перших N рядків, наприклад, для створення таблиць лідерів.~6 min
- 2.2Унікальні значення з DISTINCTВидалення дублікатів із результату SELECT.~6 min
- 2.3Перейменування за допомогою ASНадання більш читабельних імен стовпцям і виразам у результаті.~6 min
- 2.4Підрахунок і підсумовування: COUNT, AVG, MAXАгрегатні функції: отримання одного числа з багатьох рядків.~8 min
03 · Модуль 3 — JOIN і GROUP BY
Об’єднання кількох таблиць і створення звітів за групами: суть кожного реального запиту.
- 3.1Об'єднання двох таблиць: INNER JOINОб’єднання рядків з різних таблиць за їх зв’язками.~12 min
- 3.2Зберігаючи все зліва: LEFT JOINВключаючи рядки, які не збігаються в іншій таблиці.~10 min
- 3.3Групування за допомогою GROUP BYОбчислення сукупності для групи, наприклад для відділу.~10 min
- 3.4Групи фільтрації: HAVINGЗберігаються лише групи, які задовольняють умову сукупності.~8 min
04 · Модуль 4 — Практичний SQL
Інструменти, які роблять різницю в реальній роботі: списки, діапазони, NULL та умовна логіка.
- 4.1Списки та діапазони: IN і BETWEENКомпактні фільтри для «одного з цього» і «між А і Б».~8 min
- 4.2Обробка NULL: IS NULL і COALESCEРозпізнавання та робота з відсутніми цінностями без сюрпризів.~10 min
- 4.3Умовна логіка: CASE WHENПеретворення значень у категорії безпосередньо в SELECT.~10 min
- 4.4Запит всередині іншого: підзапитиВикористання результату SELECT всередині іншого SELECT.~12 min
05 · Модуль 5 — Advanced JOIN
Багатотабличні об’єднання JOIN, самооб’єднання, OUTER, CROSS та операції набору: об’єднання даних як професіонал.
- 5.1JOIN на трьох або більше таблицяхОбхід ланцюжка зв’язків: замовлення → клієнти → продукти в одному запиті.~12 min
- 5.2Self-JOIN: таблиця сама з собоюІєрархії та внутрішні зв’язки: читання таблиці з двома ролями (дочірня та батьківська).~10 min
- 5.3OUTER JOIN: пошук «прогалин»Використання LEFT/RIGHT/FULL OUTER JOIN для пошуку рядків без відповідності.~10 min
- 5.4UNION, INTERSECT, EXCEPT (і CROSS JOIN)Об’єднання результатів у вигляді наборів: об’єднання, перетин, різниця та декартовий добуток.~12 min
06 · Модуль 6 — Вбудовані функції
Перетворюйте та маніпулюйте даними за допомогою власних функцій PostgreSQL: рядки, дати, числа, перетворення типів.
- 6.1Рядкові функціїLOWER, UPPER, LENGTH, конкатенація, ПІДРЯДОК, TRIM, REPLACE, LIKE та ILIKE.~12 min
- 6.2Функції позначки дати та часуEXTRACT, DATE_TRUNC, інтервали та різниці дат.~12 min
- 6.3Числові функціїROUND, CEIL, FLOOR, ABS, MOD і ціле чи десяткове ділення.~10 min
- 6.4Перетворення CAST і типуПеретворення між типами за допомогою `::type` і `CAST(... AS ...)`.~10 min
07 · Модуль 7 — Розширена аналітика
Багатокрокові запити (CTE), рейтинги та поточні підсумки (віконні функції), необмежені ієрархії (З РЕКУРСИВОЮ).
- 7.1CTE: багатокрокові запити з WITHРозбиття складного запиту на іменовані кроки для зручності читання та повторного використання.~12 min
- 7.2Функції вікна: рейтинги та підрахунки по групахROW_NUMBER, RANK, DENSE_RANK з OVER(PARTITION BY …) для рейтингу в групі.~14 min
- 7.3LAG, LEAD і поточні підсумкиПорівняння кожного рядка з попереднім/наступним та обчислення кумулятивних сум.~12 min
- 7.4Рекурсивні CTE: ієрархії довільної глибиниWITH RECURSIVE для обходу ієрархій, таких як категорії.~14 min
08 · Модуль 8 — Запис і зміна даних
INSERT, UPDATE, DELETE, CREATE TABLE з обмеженнями, транзакції: закриття циклу записами.
- 8.1Вставлення даних: INSERTОдно- та багаторядкова пропозиція INSERT, RETURNING, явний вибір стовпців.~10 min
- 8.2Оновлення та видалення: UPDATE і DELETEВибіркові зміни з WHERE і чому забуте WHERE є катастрофою.~10 min
- 8.3Створення таблиць і обмежень: DDLСТВОРИТИ ТАБЛИЦЮ з PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, CHECK і DEFAULT.~12 min
- 8.4Транзакції: все або нічогоBEGIN, COMMIT, ROLLBACK: робить групу операцій атомарною.~10 min
09 · Модуль 9 — Структури даних і DDL
Створення та зміна таблиць, розширені обмеження, складні типи та представлення.
- 9.1Розширені типи даних і ENUMЧислові типи, TEXT проти VARCHAR, BOOLEAN, UUID і спеціальні типи ENUM.~10 min
- 9.2Кілька обмежень і обмеження на рівні таблиціКомпозитні обмеження UNIQUE та PRIMARY KEY, розширена перевірка та зовнішні ключі (ON DELETE CASCADE).~12 min
- 9.3Зміна структури: ALTER TABLEДодавання, зміна та видалення стовпців або обмежень з існуючих таблиць.~10 min
- 9.4Перегляди та абстракція данихСтворення ПРЕДСТАВЛЕНЬ для спрощення складних запитів і МАТЕРІАЛІЗОВАНИХ ПРЕДСТАВЛЕНЬ для продуктивності.~12 min
10 · Оптимізація та індекси
Мистецтво швидкого виконання запитів: індекси, плани виконання та оптимізація бази даних.
- 10.1Індекси та B-дереваСтворіть індекси, щоб значно прискорити пошукові запити у великих таблицях.~15 min
- 10.2ПОЯСНІТЬ і ПРОАНАЛІЗУЙТЕНавчіться читати плани виконання бази даних, щоб діагностувати вузькі місця.~15 min
- 10.3Складені та часткові індексиВикористовуйте індекси для кількох стовпців одночасно або лише для певного фрагмента даних.~12 min
- 10.4Проблема N+1Сумно відома проблема продуктивності ORM і рідні методи SQL для її подолання в одному запиті.~12 min
11 · Транзакції та паралельність
Безпечно керуйте одночасними змінами даних: транзакції ACID, блокування та рівні ізоляції.
- 11.1Транзакції ACID (BEGIN/COMMIT)Зберігайте дані узгодженими з BEGIN, COMMIT і ROLLBACK, групуючи запити в один блок, невидимий для інших.~15 min
- 11.2Умови перегонівГраничні сценарії: що відбувається, коли два співробітники паралельної бази даних діють на один кошик користувача.~10 min
- 11.3Блокування та ВИБРАТИ ДЛЯ ОНОВЛЕННЯАктивно блокувати рядки під час читання, змушуючи інші мутаційні потоки чекати своєї черги.~15 min
- 11.4Рівні ізоляціїДосягніть своїх можливостей, запровадивши Serializable, або перейдіть до Read Committed для небезпечної, але швидкої роботи.~12 min
12 · Функції та тригери
Автоматизуйте бізнес-логіку всередині бази даних: пишіть багаторазові функції та реагуйте на події за допомогою тригерів.
- 12.1UDF і базовий SQLСтворіть власні функції, визначені користувачем, щоб інкапсулювати складні обчислення та повторно використовувати їх як макроси в кожному запиті.~15 min
- 12.2Розширена логіка з PL/pgSQLНадайте своїм функціям надзвичайні можливості: змінні, гілки if-else і цикли в чистому процедурному стилі всередині бази даних.~15 min
- 12.3Знайомство з тригерамиВизначте спеціальні функції, які можуть миттєво перевіряти OUTGOING (OLD) або INCOMING (NEW) запис.~15 min
- 12.4Практичні тригери та аудитАвтоматизуйте безпеку: автоматично оновлюйте дату "updated_at" і чарівним чином архівуйте видалені рядки для відповідності.~12 min
13 · Функції вікна
Розширений аналіз даних без згортання рядків: знайдіть функції OVER(), PARTITION BY та аналітичні функції.
- 13.1Вступ і речення OVERВиконуйте сукупні обчислення (наприклад, SUM або AVG), зберігаючи вихідні окремі рядки.~15 min
- 13.2Групування за допомогою PARTITION BYСтворюйте логічні групи (вікна) всередині даних, до яких можна застосовувати функції, без використання GROUP BY.~15 min
- 13.3Рейтинги: ROW_NUMBER, RANK і DENSE_RANKПризначте послідовні номери рядків і ранги результатам, правильно обробляючи зв’язки.~15 min
- 13.4Зміни: LAG і LEADОтримайте доступ до значень із попереднього або наступного рядка безпосередньо з поточного рядка, щоб обчислити дельти та варіації.~12 min
14 · CTE та ієрархічні запити (З)
Спростіть величезні запити за допомогою загальних табличних виразів і переходьте до необмежених дерев даних за допомогою рекурсивних CTE.
- 14.1Введення в CTE (З)Замініть нечитабельні вкладені підзапити на чистий процедурний формат, оголосивши тимчасові «віртуальні таблиці».~12 min
- 14.2Множинні та ланцюгові КТРПриборкайте складність, розділивши обробку на кілька послідовних кроків в одному операторі WITH.~15 min
- 14.3Рекурсивні CTE: дані у формі дереваПереміщуйтеся без обмежень ієрархіями менеджерів і категоріями «батьки-дочірні» шляхом виклику CTE з самого себе.~18 min
15 · PostgreSQL JSON і NoSQL
Використовуйте реляційну потужність у поєднанні з гнучкою підтримкою документів через JSON і JSONB без використання зовнішніх баз даних.