October 20, 2025

Базы данных

🔹 Реляционные базы данных (RDB)

1️⃣ Что такое реляционная база данных

  • Определение: база данных, где данные хранятся в таблицах, связанные между собой через ключи.
  • Основные возможности: гибкие сложные запросы к нескольким таблицам одновременно.

3️⃣ Первичный и внешний ключи

  • Первичный ключ (Primary Key)
    • Уникальный идентификатор записи.
    • Не может быть NULL.
    • Обеспечивает однозначную идентификацию строки.
  • Внешний ключ (Foreign Key)
    • Ссылка на первичный ключ другой таблицы.
    • Позволяет связывать таблицы между собой.
  • Родительский ключ (Parent Key)
    • Первичный ключ, на который ссылается внешний ключ.

5️⃣ Нормализация

  • Разделение таблицы на несколько, чтобы:
    • Исключить дублирование данных
    • Присвоить уникальные ключи для каждой записи
    • Обновления происходили только один раз
  • Нормальные формы: 1NF → 2NF → 3NF → … → 6NF

Пример: таблица подрядчиков и клиентов разбита так, чтобы изменения телефона вносились только один раз.


🔹 SQL (Structured Query Language)

1️⃣ Определение

  • SQL — язык для работы с реляционными базами данных.
  • Позволяет:
    • создавать таблицы и базы данных
    • добавлять, изменять, удалять и извлекать данные
    • управлять доступом
    • работать с транзакциями

Важно: SQL — декларативный язык: вы описываете, что хотите получить, а не как это реализовать.

3️⃣ Основные операции SQL

  • INSERT — добавить запись
  • UPDATE — изменить запись
  • DELETE — удалить запись
  • SELECT — выбрать данные
  • ORDER BY — сортировка
  • DISTINCT — уникальные значения
  • COUNT, SUM — агрегатные функции
  • LIMIT — ограничение числа результатов
  • JOIN — объединение таблиц

4️⃣ Примеры запросов

4.1 Таблица Users

-- Вывести всех пользователей с именем "Олег", сортировка по id
SELECT * FROM Users
WHERE name = 'Олег'
ORDER BY id;

4.2 Таблица Orders

-- Посчитать количество заказов с оплатой "online"
SELECT COUNT(*) FROM Orders
WHERE payment = 'online';

4.3 JOIN с условиями

-- Выбрать все заказы пользователей из города "Saratov"
-- Вариант с JOIN
SELECT o.*
FROM Orders o
JOIN Users u ON o.user_id = u.id
WHERE u.city = 'Saratov';

-- Вариант с вложенным SELECT
SELECT * FROM Orders
WHERE user_id IN (
    SELECT id FROM Users WHERE city = 'Saratov'
);

4.4 Соединение трёх таблиц

SELECT *
FROM Orders o
JOIN Users u ON o.user_id = u.id
JOIN Products p ON o.product_id = p.id;

5️⃣ Практика

  • Использовать Postman, DBeaver или аналогичные инструменты.
  • Создать локальную БД и таблицы Users и Orders, заполнить тестовыми данными.
  • Пробовать все виды запросов, включая JOIN, агрегатные функции и фильтры.

Посмотри еще тут

https://youtu.be/k8jXX7E_Wkg?si=LJBwHKevI4a314es

Тут инфа по тренажерам

https://habr.com/ru/articles/943924/