О разделе
Сначала: Что такое код и как он работает — общая база — код, блок кода, как текст превращается в исполняемые инструкции; в этом разделе — язык запросов SQL и работа с данными в таблицах.
Длинные листинги (от ~15 строк) вынесены в каталог code.spirzen.ru и подгружаются в статьях через ExternalCodeEmbed — так HTML энциклопедии не раздувается, а код остаётся с подсветкой, вкладками и сериями "шаг 1…N". Короткие фрагменты (SELECT, WHERE, однострочные команды psql) по-прежнему прямо в markdown.
Массовая загрузка (COPY, multi-row INSERT, staging + MERGE), чанки и транзакции — Пакетная работа с данными.
PostgreSQL — рекомендуемая СУБД для практики всем в IT, независимо от языка программирования.
Поставьте сервер на свой компьютер, откройте psql и пройдите маршрут ниже.
Обзор установки — СУБД в Инструментах.
Раздел охватывает SQL от основ до администрирования. Рекомендуемая последовательность для новичков:
- Эволюция систем хранения данных → Реляционная модель (таблица, ключи, связи, JOIN) → Нормализация (1НФ–4НФ, НФБК, денормализация)
- Принципы работы SQL-движка (порядок выполнения; путь внутри СУБД; четыре подсистемы — Transport, Query Processor, parse tree, план; архитектура PostgreSQL) → Категории команд (DDL/DML/TCL в одной таблице) → Операторы в коде (базис перед
WHEREи логикой) → Оператор SELECT → Фильтрация и NULL → Фильтрация и группировка - Первые шаги с SQL — проектирование ER → SQLite (DB Browser) → установка PostgreSQL → Практикум shop_data → SQL — реальные кейсы → Словарь данных и каталоги
PostgreSQL: после Первые шаги с SQL (SQLite-проект, установка, psql, pgAdmin) — PostgreSQL — практическая работа и API → phpPgAdmin → демобаза demo → справочник администратора. Продвинутая эксплуатация — практикум PostgreSQL 8.11. - Подзапросы и EXISTS → JOIN (четыре типа на одном примере) → CTE → функции в коде → оконные функции → иерархии в реляционной БД
- Транзакции → Конкурентный доступ (теория) → блокировки → оптимизация → сложные индексы → масштабирование БД — 7 стратегий → восстановление после сбоя → резервное копирование
- SQLite — практическая работа и API — встроенная СУБД, команды, типы и API по языкам
- PostgreSQL — практическая работа и API → Практикум demo — авиакомпания — серверная СУБД, команды, типы и API по языкам
- MySQL — практическая работа и API — серверная СУБД, команды, типы и API по языкам
- Microsoft SQL Server — практическая работа и API — серверная СУБД, T-SQL, команды, типы и API по языкам
- Шпаргалка типичных задач — после основ; рецепты на схеме магазина, не замена главам 107–108. Для учёбы с разбором каждой строки — SQL — реальные кейсы
Шпаргалка SQL — четыре СУБД на одной схеме — SQLite, Oracle, MySQL, PostgreSQL на TABLE1–3; сравнениеALTERи JOIN - Табличные операции в Python (Pandas, Polars, PySpark) рядом с SQL — напоминалка; типовые вызовы только в Pandas — Pandas — типовые операции при анализе данных
- Для углубления по Microsoft SQL Server: теория T-SQL и справочник → практика на Microsoft Learn (учебник Transact-SQL, SSMS).
Практика по СУБД (подключение, CRUD, API по языкам):
Веб-админки (PostgreSQL / MySQL на PHP-стеке): phpPgAdmin · phpMyAdmin
Продвинутая эксплуатация PostgreSQL (MVCC, Docker, K8s, репликация) — практикум 8.11.
Интерактивная практика: SQL-тренажёр (схема shop_data, JOIN, GROUP BY, DML), практикум shop_data и галерея кейсов с разбором — SQL — реальные кейсы.
При подключении к БД из backend-кода используйте параметризованные запросы (?, @param) — иначе пользовательский ввод может изменить логику SQL. Обзор атак: типы SQL-инъекций.
Отдельный конструктор запросов автора проекта — SQL Generator Online: визуальная сборка SQL по правилам языка и генерация INSERT из загруженной таблицы Excel для импорта в БД. Под встроенным тренажёром на странице SQL — язык есть та же ссылка.
SQL - язык структурированных запросов
Вот SQL как раз обеспечивает такую связь и это главное отличие реляционных БД - реляции (relations), что означает связи.
Первые шаги с SQL
Проектирование схемы, первый проект на SQLite с DB Browser, установка PostgreSQL и CRUD.
Эволюция систем хранения данных
От файлового хранения к реляционной и современной мультимодельной СУБД — термины, причины появления SQL и базовая классификация систем.
Реляционная модель данных
Домены, атрибуты, кортежи и отношения — свойства реляционных таблиц и ограничения целостности при проектировании схемы.
Нормализация данных
Функциональные зависимости, нормальные формы 1НФ–4НФ и НФБК, аномалии обновления и осознанная денормализация при проектировании схемы.
Словарь данных и системные каталоги
Метаданные СУБД через information_schema и pg_catalog — запросы к структуре таблиц, ключей и индексов в PostgreSQL.
Резервное копирование и восстановление PostgreSQL
Логическое и физическое резервное копирование, pg_dump, pg_restore, WAL и восстановление на точку во времени (PITR).
Оператор SELECT — синтаксис и стиль
Логический порядок выполнения SELECT, проекция, WHERE, DISTINCT, ORDER BY и правила читаемого форматирования запросов.
Подзапросы, EXISTS и IN
Скалярные и коррелированные подзапросы, EXISTS против IN, особенности NULL и выбор между подзапросом и JOIN.
Фильтрация и трёхзначная логика
AND, OR, NOT, приоритет операторов, шаблон WHERE 1=1, NULL и UNKNOWN, IS NULL, NOT IN и IS DISTINCT FROM в PostgreSQL.
Блокировки и конкурентный доступ в PostgreSQL
MVCC, FOR UPDATE, SKIP LOCKED и параллельная пакетная обработка задач в PostgreSQL без внешней очереди; взаимоблокировки и pg_locks.
Практикум shop_data
Учебная схема интернет-магазина для PostgreSQL — DDL и примеры запросов по темам курса SQL.
Принципы работы SQL-движка
Принципы работы SQL-движка - подключение к СУБД, разбор и выполнение запроса и возврат результата клиенту.
Чтение и анализ сложных SQL-запросов
Как читать сложные SQL запросы? Анализ вложенных конструкций.
Категории SQL-команд - DDL, DML, DCL, TCL
DDL - Data Definition Language (язык определения данных), используется для создания, изменения, удаления объектов структуры данных (таблиц, индексов, схем и т.д.).
Синтаксис и пунктуация в SQL
Кавычки, апострофы и разделители в SQL и коде - когда что использовать и как не путать синтаксис.
Типы данных в SQL
Типы данных определяют, какая информация может храниться в столбце таблицы — числа, текст, даты и т.д. Каждая СУБД поддерживает свои типы, но есть общая классификация.
Взаимодействие приложений с СУБД через SQL
★ СУБД – система управления базами данных, программный комплекс, включающий не просто набор языковых инструментов, но и средства для администрирования.
DDL - определение структуры базы данных
DDL в SQL - создание и изменение схемы БД — таблицы, индексы и другие объекты через операции над метаданными.
Ограничения целостности в SQL
Ограничения (constraints) в SQL - декларативные правила целостности на уровне таблицы и столбцов.
CRUD-операции и язык манипуляции данными (DML)
DML в SQL - операции с данными (CRUD) в отличие от DDL, который задаёт структуру базы.
Алиасы, JOIN и объединение таблиц
★ Алиасы (AS) используются для временного переименования таблиц или столбцов в запросе SQL. Они делают запросы более читаемыми и позволяют избежать конфликтов имён.
Общие табличные выражения (CTE)
Общие табличные выражения (CTE) — именованные временные результаты внутри одного запроса для читаемой декомпозиции сложной логики.
Фильтрация и группировка в SQL
Дополнительные операции - LIMIT, WHERE, ORDER BY, группировка.
Практикум PostgreSQL по JSONB
Таблица с JSONB, большой INSERT, операторы, функции, типы, JOIN, агрегаты и индексы GIN с EXPLAIN.
Встроенные и пользовательские функции в SQL
Агрегатные и оконные функции SQL — OVER, ранжирование, накопительные и скользящие суммы, LAG/LEAD, доли и аналитические отчёты.
Транзакции, изоляция и блокировки
Согласованность данных при параллельном доступе. ACID и конкурентный доступ.
Представления (VIEW) - виртуальные таблицы
Представления (Views) – это виртуальные таблицы, которые не хранят данные, а только отображают результаты SQL запроса.
Хранимые процедуры и триггеры
Хранимые процедуры и триггеры в SQL - серверные объекты каталога СУБД, их роль в бизнес-логике и реакциях на события в данных.
Оптимизация SQL-запросов
А теперь остановимся на таких особенностях, как оптимизация и план выполнения. Когда мы отправляем SQL-запрос в СУБД, сама СУБД должна понять, как наиболее эффективно выполнить этот запрос.
Процедурные расширения - PL/pgSQL, T-SQL
Как и в любом языке программирования, процедурные расширения SQL позволяют объявить переменную, выделив область памяти, куда запишется значение. Для этого используется ключевое слово DECLARE.
Подсказки оптимизатору (query hints)
Подсказки оптимизатору в сложных SQL-запросах - оконные функции, CTE и многоуровневая агрегация.
Справочник по SQL
IF NOT EXISTS — необязательно, поддерживается в PostgreSQL, MySQL, SQLite; в T-SQL используется IF NOT EXISTS (SELECT FROM sys.objects WHERE ...) или BEGIN TRY CREATE ... END TRY.
Сложные индексы
Составные и покрывающие индексы, частичные индексы, access methods PostgreSQL (B-tree, GIN, GiST, BRIN) и стратегии индексирования.
Шпаргалка с типичными задачами по SQL
Связи между таблицами: - categories → categories: иерархическая связь через parent_id (1 ко многим) - categories → products: одна категория содержит много товаров (1 ко многим) - users → orders: один.
Иерархические данные в реляционных БД
Категории товаров, оргструктура, меню, комментарии с ответами — деревья встречаются в каждом продукте.
SQLite — практическая работа и API
SQLite как встроенная СУБД: подключение, команды, синтаксис, типы, инструменты и API по C#, Python, Java, C, C++, Go, PHP, Kotlin, Rust и JavaScript.
PostgreSQL — практическая работа и API
PostgreSQL как серверная СУБД: подключение, команды, типы, возможности, инструменты и API по C#, Python, Java, C, C++, Go, PHP, Kotlin, Rust и JavaScript.
MySQL — практическая работа и API
MySQL как серверная СУБД: подключение, команды, типы, возможности, инструменты и API по C#, Python, Java, C, C++, Go, PHP, Kotlin, Rust и JavaScript.
Microsoft SQL Server — практическая работа и API
Microsoft SQL Server как серверная СУБД: подключение, команды, типы, возможности, инструменты и API по C#, Python, Java, C, C++, Go, PHP, Kotlin, Rust и JavaScript.
Практикум demo — авиакомпания PostgreSQL
Демобаза demo: установка, схема bookings, запросы с JOIN, агрегатами и оконными функциями.
Шпаргалка SQL — четыре СУБД на одной схеме
Компактная шпаргалка по SQLite, Oracle, MySQL и PostgreSQL на учебных таблицах TABLE1–3: чтение, DDL, ALTER и отличия диалектов.
SQL — итоги
Итоги раздела «SQL» — FAQ и краткие ответы по теме.
SQL — чек-лист
Чек-лист раздела «SQL» — вопросы для самопроверки.
SQL — о разделе
Раздел охватывает SQL от основ до администрирования. Рекомендуемая последовательность для новичков: 1.
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
Бэкенд и серверная разработка — Контейнеризация и оркестрация — о разделе, JavaScript — о разделе, Микросервисы и интеграция — о разделе, Python — о разделе, Методы защиты пользовательских и корпоративных данных, Java — о разделе.
Базы данных — Основы баз данных — о разделе, NoSQL — о разделе, Структуры данных — о разделе, Управление реляционными СУБД — о разделе, Базовые операции с данными — о разделе, ORM и работа с данными — о разделе.
Аналитика данных — Основы баз данных — о разделе, NoSQL — о разделе, Структуры данных — о разделе, Продвинутые операции с данными — о разделе, Данные и информация — о разделе, Анализ данных — о разделе.
Системная аналитика — Low-code и No-code платформы, Техническое письмо — о разделе, Основы интеграционного взаимодействия — о разделе, Аутентификация и авторизация, Основы архитектуры, Платформенные решения в бизнесе.