SQL - язык структурированных запросов
Вот SQL как раз обеспечивает такую связь и это главное отличие реляционных БД - реляции (relations), что означает связи.
Первые шаги с SQL
Знакомимся с языком - ставим программы, запускаем, выполняем первые запросы.
Эволюция систем хранения данных
От файлового хранения к реляционной и современной мультимодельной СУБД — термины, причины появления 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, приоритет операторов, 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.